IN u32 mthca_port_cap,\r
OUT ib_port_cap_t *ibal_port_cap_p)\r
{\r
- if (mthca_port_cap & IB_PORT_CM_SUP)\r
- ibal_port_cap_p->cm = TRUE;\r
- if (mthca_port_cap & IB_PORT_SNMP_TUNNEL_SUP)\r
- ibal_port_cap_p->snmp = TRUE;\r
- if (mthca_port_cap & IB_PORT_DEVICE_MGMT_SUP)\r
- ibal_port_cap_p->dev_mgmt = TRUE;\r
- if (mthca_port_cap & IB_PORT_VENDOR_CLASS_SUP)\r
- ibal_port_cap_p->vend = TRUE;\r
- if (mthca_port_cap & IB_PORT_SM_DISABLED)\r
- ibal_port_cap_p->sm_disable = TRUE;\r
- if (mthca_port_cap & IB_PORT_SM)\r
- ibal_port_cap_p->sm = TRUE;\r
+#define SET_CAP(flag,cap) if (mthca_port_cap & flag) ibal_port_cap_p->cap = TRUE\r
+\r
+ SET_CAP(IB_PORT_CM_SUP,cm);\r
+ SET_CAP(IB_PORT_SNMP_TUNNEL_SUP,snmp);\r
+ SET_CAP(IB_PORT_DEVICE_MGMT_SUP,dev_mgmt);\r
+ SET_CAP(IB_PORT_VENDOR_CLASS_SUP,vend);\r
+ SET_CAP(IB_PORT_SM_DISABLED,sm_disable);\r
+ SET_CAP(IB_PORT_SM,sm);\r
+ SET_CAP(IB_PORT_NOTICE_SUP,notice);\r
+ SET_CAP(IB_PORT_TRAP_SUP,trap);\r
+ SET_CAP(IB_PORT_AUTO_MIGR_SUP,apm);\r
+ SET_CAP(IB_PORT_SL_MAP_SUP,slmap);\r
+ SET_CAP(IB_PORT_LED_INFO_SUP,ledinfo);\r
+ SET_CAP(IB_PORT_CAP_MASK_NOTICE_SUP,capm_notice);\r
+ SET_CAP(IB_PORT_CLIENT_REG_SUP,client_reregister);\r
+ SET_CAP(IB_PORT_SYS_IMAGE_GUID_SUP,sysguid);\r
+ SET_CAP(IB_PORT_BOOT_MGMT_SUP,boot_mgmt);\r
+ SET_CAP(IB_PORT_DR_NOTICE_SUP,dr_notice);\r
+ SET_CAP(IB_PORT_PKEY_SW_EXT_PORT_TRAP_SUP,pkey_switch_ext_port);\r
+ SET_CAP(IB_PORT_LINK_LATENCY_SUP,link_rtl);\r
+ SET_CAP(IB_PORT_REINIT_SUP,reinit);\r
+ SET_CAP(IB_PORT_OPT_IPD_SUP,ipd);\r
+ SET_CAP(IB_PORT_MKEY_NVRAM,mkey_nvram);\r
+ SET_CAP(IB_PORT_PKEY_NVRAM,pkey_nvram);\r
+ // there no MTHCA flags for qkey_ctr, pkey_ctr, port_active, bm IBAL capabilities;\r
}\r
\r
\r
}\r
}\r
\r
+void printPortCaps(ib_port_cap_t *ibal_port_cap_p)\r
+{\r
+#define PRINT_CAP(cap, name) if (ibal_port_cap_p->cap) printf( #name "," )\r
+ \r
+ printf("\t\tcapabilities: ");\r
+ PRINT_CAP(cm, CM);\r
+ PRINT_CAP(snmp, SNMP_TUNNEL);\r
+ PRINT_CAP(dev_mgmt, DEVICE_MGMT);\r
+ PRINT_CAP(sm_disable, SM_DISABLED);\r
+ PRINT_CAP(sm, SM);\r
+ PRINT_CAP(vend, VENDOR_CLASS);\r
+ PRINT_CAP(notice, NOTICE);\r
+ PRINT_CAP(trap, TRAP);\r
+ PRINT_CAP(apm, APM);\r
+ PRINT_CAP(slmap, SL_MAP);\r
+ PRINT_CAP(ledinfo, LED_INFO);\r
+ PRINT_CAP(client_reregister, CLIENT_REG);\r
+ PRINT_CAP(sysguid, SYSGUID);\r
+ PRINT_CAP(boot_mgmt, BOOT_MGMT);\r
+ PRINT_CAP(pkey_switch_ext_port, PKEY_SW_EXT_PORT_TRAP);\r
+ PRINT_CAP(link_rtl, LINK_LATENCY);\r
+ PRINT_CAP(reinit, REINIT);\r
+ PRINT_CAP(ipd, OPT_IPD);\r
+ PRINT_CAP(mkey_nvram, MKEY_NVRAM);\r
+ PRINT_CAP(pkey_nvram, PKEY_NVRAM);\r
+ printf("\n");\r
+}\r
void printPortInfo(ib_port_attr_t* portPtr, BOOLEAN fullPrint){\r
printf("\t\tport=%d\n", portPtr->port_num);\r
printPortLinkState(portPtr->link_state);\r
printPortMTU(portPtr->mtu);\r
if(fullPrint){\r
printf("\t\tmax_msg_sz=0x%x (Max message size)\n", portPtr->max_msg_size);\r
- printf("\t\tcapability_mask=0x%x (Port capability mask)\n", portPtr->cap);\r
+ printPortCaps( &portPtr->cap );\r
printf("\t\tmax_vl_num=0x%x (Maximum number of VL supported by this port)\n", portPtr->max_vls);\r
printf("\t\tbad_pkey_counter=0x%x (Bad PKey counter)\n", portPtr->pkey_ctr);\r
printf("\t\tqkey_viol_counter=0x%x (QKey violation counter)\n", portPtr->qkey_ctr);\r