[openib-general] [PATCH 4/5] IB/mthca: Add client reregister event generation

Eitan Zahavi eitan at mellanox.co.il
Wed May 31 22:35:26 PDT 2006


Hi Roland,

Is there a reason why the LID_CHANGE event is happening even if the LID did not change?

Roland Dreier wrote:
> From: Leonid Arsh <leonida at voltaire.com>
> 
> Change the mthca snoop of MADs that set PortInfo to check if the SM
> has set the client reregister bit, and if it has, generate a client
> reregister event.  If the bit is not set, just generate a LID change
> event as usual.
> 
> Signed-off-by: Leonid Arsh <leonida at voltaire.com>
> Signed-off-by: Roland Dreier <rolandd at cisco.com>
> ---
> 
>  drivers/infiniband/hw/mthca/mthca_mad.c |   14 +++++++++++---
>  1 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/mthca/mthca_mad.c b/drivers/infiniband/hw/mthca/mthca_mad.c
> index 4730863..d9bc030 100644
> --- a/drivers/infiniband/hw/mthca/mthca_mad.c
> +++ b/drivers/infiniband/hw/mthca/mthca_mad.c
> @@ -114,14 +114,22 @@ static void smp_snoop(struct ib_device *
>  	     mad->mad_hdr.mgmt_class  == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) &&
>  	    mad->mad_hdr.method     == IB_MGMT_METHOD_SET) {
>  		if (mad->mad_hdr.attr_id == IB_SMP_ATTR_PORT_INFO) {
> +			struct ib_port_info *pinfo =
> +				(struct ib_port_info *) ((struct ib_smp *) mad)->data;
> +
>  			mthca_update_rate(to_mdev(ibdev), port_num);
>  			update_sm_ah(to_mdev(ibdev), port_num,
> -				     be16_to_cpup((__be16 *) (mad->data + 58)),
> -				     (*(u8 *) (mad->data + 76)) & 0xf);
> +				     be16_to_cpu(pinfo->lid),
> +				     pinfo->neighbormtu_mastersmsl & 0xf);
>  
>  			event.device           = ibdev;
> -			event.event            = IB_EVENT_LID_CHANGE;
>  			event.element.port_num = port_num;
> +
> +			if(pinfo->clientrereg_resv_subnetto & 0x80)
> +				event.event    = IB_EVENT_CLIENT_REREGISTER;
> +			else
> +				event.event    = IB_EVENT_LID_CHANGE;
> +
>  			ib_dispatch_event(&event);
>  		}
>  
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general




More information about the general mailing list