From: ftillier Date: Thu, 15 Sep 2005 16:31:31 +0000 (+0000) Subject: [HCA] Add client reregister support. X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=55ead3dd13fe6c021a317dc078e42f22ef057894;p=~shefty%2Frdma-win.git [HCA] Add client reregister support. Signed-off-by: Yossi Leybovich (sleybo@mellanox.co.il) git-svn-id: svn://openib.tc.cornell.edu/gen1@68 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/hw/mt23108/kernel/hca_data.c b/trunk/hw/mt23108/kernel/hca_data.c index f7228c92..029813bd 100644 --- a/trunk/hw/mt23108/kernel/hca_data.c +++ b/trunk/hw/mt23108/kernel/hca_data.c @@ -693,6 +693,10 @@ mlnx_map_vapi_event_type( if (event_class_p) *event_class_p = E_EV_CA; return IB_AE_PORT_ACTIVE; /* ACTIVE STATE */ + case VAPI_CLIENT_REREGISTER: + if (event_class_p) *event_class_p = E_EV_CA; + return IB_AE_CLIENT_REREGISTER; /* ACTIVE STATE */ + default: CL_TRACE(MLNX_DBG_INFO, g_mlnx_dbg_lvl, ("FAIL to map %d (last known %d) returning %d\n", event_id, VAPI_PORT_ACTIVE, IB_AE_LOCAL_FATAL)); @@ -2046,6 +2050,8 @@ vapi_port_cap_to_ibal( ibal_port_cap_p->sm_disable = TRUE; if (vapi_port_cap & IB_CAP_MASK_IS_SM) ibal_port_cap_p->sm = TRUE; + if (vapi_port_cap & IB_CAP_MASK_IS_CLIENT_REREGISTRATION_SUP) + ibal_port_cap_p->client_reregister= TRUE; } ///////////////////////////////////////////////////////// diff --git a/trunk/hw/mt23108/kernel/hca_verbs.c b/trunk/hw/mt23108/kernel/hca_verbs.c index 993fdbaf..63625b22 100644 --- a/trunk/hw/mt23108/kernel/hca_verbs.c +++ b/trunk/hw/mt23108/kernel/hca_verbs.c @@ -414,6 +414,10 @@ mlnx_modify_ca ( hca_attr_mask |= HCA_ATTR_IS_VENDOR_CLS_SUP; hca_attr.is_vendor_cls_sup = (MT_bool)p_port_attr->cap.vend; } + if (modca_cmd & IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED) { + hca_attr_mask |= HCA_ATTR_IS_CLIENT_REREGISTRATION_SUP; + hca_attr.is_client_reregister_sup= (MT_bool)p_port_attr->cap.client_reregister; + } if (modca_cmd & IB_CA_MOD_QKEY_CTR) { if (p_port_attr->qkey_ctr == 0) hca_attr.reset_qkey_counter = TRUE; diff --git a/trunk/hw/mt23108/vapi/Hca/hcahal/tavor/thh_hob/thh_hob.c b/trunk/hw/mt23108/vapi/Hca/hcahal/tavor/thh_hob/thh_hob.c index ef80816d..0484cf9f 100644 --- a/trunk/hw/mt23108/vapi/Hca/hcahal/tavor/thh_hob/thh_hob.c +++ b/trunk/hw/mt23108/vapi/Hca/hcahal/tavor/thh_hob/thh_hob.c @@ -2732,6 +2732,13 @@ HH_ret_t THH_hob_modify( IB_CAP_MASK_CLR(capabilities, IB_CAP_MASK_IS_VENDOR_CLS_SUP); } } + if(HCA_ATTR_IS_SET(*hca_attr_mask_p, HCA_ATTR_IS_CLIENT_REREGISTRATION_SUP) ) { + if (hca_attr_p->is_client_reregister_sup) { + IB_CAP_MASK_SET(capabilities, IB_CAP_MASK_IS_CLIENT_REREGISTRATION_SUP); + } else { + IB_CAP_MASK_CLR(capabilities, IB_CAP_MASK_IS_CLIENT_REREGISTRATION_SUP); + } + } } set_ib_props.capability_mask = capabilities; diff --git a/trunk/hw/mt23108/vapi/Hca/verbs/common/vapi_common.c b/trunk/hw/mt23108/vapi/Hca/verbs/common/vapi_common.c index 40c7b013..e2fe827e 100644 --- a/trunk/hw/mt23108/vapi/Hca/verbs/common/vapi_common.c +++ b/trunk/hw/mt23108/vapi/Hca/verbs/common/vapi_common.c @@ -146,6 +146,7 @@ const char* VAPI_hca_attr_mask_sym(char* buf, int bufsz, u_int32_t mask) SAFE_APPEND(HCA_ATTR_IS_SNMP_TUN_SUP) SAFE_APPEND(HCA_ATTR_IS_DEV_MGT_SUP) SAFE_APPEND(HCA_ATTR_IS_VENDOR_CLS_SUP) + SAFE_APPEND(HCA_ATTR_IS_CLIENT_REREGISTRATION_SUP) SAFE_APPEND(HCA_ATTR_MAX) end_mask_sym(buf, cbuf, bufsz); return buf; diff --git a/trunk/hw/mt23108/vapi/Hca/verbs/vapi_types.h b/trunk/hw/mt23108/vapi/Hca/verbs/vapi_types.h index 75db39d3..b1bcb62c 100644 --- a/trunk/hw/mt23108/vapi/Hca/verbs/vapi_types.h +++ b/trunk/hw/mt23108/vapi/Hca/verbs/vapi_types.h @@ -111,7 +111,8 @@ typedef enum { HCA_ATTR_IS_SNMP_TUN_SUP = 2, HCA_ATTR_IS_DEV_MGT_SUP = 4, HCA_ATTR_IS_VENDOR_CLS_SUP = 8, - HCA_ATTR_MAX = 16 /*Dummy enum entry: always keep it the last one */ + HCA_ATTR_IS_CLIENT_REREGISTRATION_SUP = 16, + HCA_ATTR_MAX = 32 /*Dummy enum entry: always keep it the last one */ } VAPI_hca_attr_mask_enum_t; @@ -126,7 +127,8 @@ typedef u_int32_t VAPI_hca_attr_mask_t; HCA_ATTR_IS_SM|\ HCA_ATTR_IS_SNMP_TUN_SUP|\ HCA_ATTR_IS_DEV_MGT_SUP|\ - HCA_ATTR_IS_VENDOR_CLS_SUP))!=0) + HCA_ATTR_IS_VENDOR_CLS_SUP|\ + HCA_ATTR_IS_CLIENT_REREGISTRATION_SUP))!=0) #define HCA_ATTR_IS_SET(mask,attr) (((mask)&(attr))!=0) /* QP attributes mask enumeration */ @@ -385,7 +387,8 @@ typedef enum { VAPI_LOCAL_EEC_CATASTROPHIC_ERROR, /*EEC*/ VAPI_LOCAL_CATASTROPHIC_ERROR, /*none*/ VAPI_PORT_ERROR, /*PORT*/ - VAPI_PORT_ACTIVE /*PORT*/ + VAPI_PORT_ACTIVE, /*PORT*/ + VAPI_CLIENT_REREGISTER } VAPI_event_record_type_t; @@ -586,6 +589,7 @@ typedef struct { MT_bool is_snmp_tun_sup; MT_bool is_dev_mgt_sup; MT_bool is_vendor_cls_sup; + MT_bool is_client_reregister_sup; } VAPI_hca_attr_t; diff --git a/trunk/hw/mt23108/vapi/mlxsys/mtl_types/ib_defs.h b/trunk/hw/mt23108/vapi/mlxsys/mtl_types/ib_defs.h index ac724a91..32ee2f4b 100644 --- a/trunk/hw/mt23108/vapi/mlxsys/mtl_types/ib_defs.h +++ b/trunk/hw/mt23108/vapi/mlxsys/mtl_types/ib_defs.h @@ -187,8 +187,11 @@ typedef enum { /*20: */ IB_CAP_MASK_IS_VENDOR_CLS_SUP = (1<<20), /*21: */ IB_CAP_MASK_IS_DR_NOTICE_SUP = (1<<21), /*22: */ IB_CAP_MASK_IS_CAP_MASK_NOTICE_SUP = (1<<22), -/*23: */ IB_CAP_MASK_IS_BOOT_MGMT_SUP = (1<<23) -/*24 - 31: RESERVED */ +/*23: */ IB_CAP_MASK_IS_BOOT_MGMT_SUP = (1<<23), +/*24: */ IB_CAP_MASK_IS_LINK_ROUND_TRIP_LATENCY_SUP = (1<<24), //???? NEW +/*25: */ IB_CAP_MASK_IS_CLIENT_REREGISTRATION_SUP = (1<<25) +/*26 - 31: RESERVED */ + } IB_capability_mask_bits_t;