[ofw] [COMMIT] reinstate ib_port_info_compute_rate() extended.
Smith, Stan
stan.smith at intel.com
Fri Sep 23 21:44:21 PDT 2011
Revision: 3282
Author: stan.smith at intel.com
Date: 8:36:09 PM, Friday, September 23, 2011
Message:
[INC] reinstate ib_port_info_compute_rate() compatible with opensm 3.3.11.
Impacts: ipoib & opensm 3.3.9
----
Modified : /gen1/trunk/inc/iba/ib_types.h
Modified : /gen1/trunk/ulp/ipoib/kernel/ipoib_port.cpp
Modified : /gen1/trunk/ulp/opensm/user/opensm/osm_port_info_rcv.c
Modified : /gen1/trunk/ulp/opensm/user/opensm/osm_sa_mcmember_record.c
Modified : /gen1/trunk/ulp/opensm/user/opensm/osm_sa_multipath_record.c
Modified : /gen1/trunk/ulp/opensm/user/opensm/osm_sa_path_record.c
--- C:/Users/scsmith/AppData/Local/Temp/ib_types.h-revBASE.svn000.tmp.h Fri Sep 23 20:18:38 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/inc/iba/ib_types.h Fri Sep 23 20:02:10 2011
@@ -5305,87 +5305,151 @@
* SYNOPSIS
*/
AL_INLINE uint8_t AL_API
-ib_port_info_compute_rate(
- IN const ib_port_info_t* const p_pi )
+ib_port_info_compute_rate(IN const ib_port_info_t * const p_pi,
+ IN const int extended)
{
- uint8_t rate = 0;
+ uint8_t rate = 0;
- switch (ib_port_info_get_link_speed_active(p_pi))
- {
- case IB_LINK_SPEED_ACTIVE_2_5:
- switch (p_pi->link_width_active)
- {
- case IB_LINK_WIDTH_ACTIVE_1X:
- rate = IB_PATH_RECORD_RATE_2_5_GBS;
- break;
-
- case IB_LINK_WIDTH_ACTIVE_4X:
- rate = IB_PATH_RECORD_RATE_10_GBS;
- break;
+ if (extended) {
+ switch (ib_port_info_get_link_speed_ext_active(p_pi)) {
+ case IB_LINK_SPEED_EXT_ACTIVE_14:
+ switch (p_pi->link_width_active) {
+ case IB_LINK_WIDTH_ACTIVE_1X:
+ rate = IB_PATH_RECORD_RATE_14_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_4X:
+ rate = IB_PATH_RECORD_RATE_56_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_8X:
+ rate = IB_PATH_RECORD_RATE_112_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_12X:
+ rate = IB_PATH_RECORD_RATE_168_GBS;
+ break;
+
+ default:
+ rate = IB_PATH_RECORD_RATE_14_GBS;
+ break;
+ }
+ break;
+ case IB_LINK_SPEED_EXT_ACTIVE_25:
+ switch (p_pi->link_width_active) {
+ case IB_LINK_WIDTH_ACTIVE_1X:
+ rate = IB_PATH_RECORD_RATE_25_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_4X:
+ rate = IB_PATH_RECORD_RATE_100_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_8X:
+ rate = IB_PATH_RECORD_RATE_200_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_12X:
+ rate = IB_PATH_RECORD_RATE_300_GBS;
+ break;
+
+ default:
+ rate = IB_PATH_RECORD_RATE_25_GBS;
+ break;
+ }
+ break;
+ /* IB_LINK_SPEED_EXT_ACTIVE_NONE and any others */
+ default:
+ break;
+ }
+ if (rate)
+ return rate;
+ }
- case IB_LINK_WIDTH_ACTIVE_8X:
- rate = IB_PATH_RECORD_RATE_20_GBS;
+ switch (ib_port_info_get_link_speed_active(p_pi)) {
+ case IB_LINK_SPEED_ACTIVE_2_5:
+ switch (p_pi->link_width_active) {
+ case IB_LINK_WIDTH_ACTIVE_1X:
+ rate = IB_PATH_RECORD_RATE_2_5_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_4X:
+ rate = IB_PATH_RECORD_RATE_10_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_8X:
+ rate = IB_PATH_RECORD_RATE_20_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_12X:
+ rate = IB_PATH_RECORD_RATE_30_GBS;
+ break;
+
+ default:
+ rate = IB_PATH_RECORD_RATE_2_5_GBS;
+ break;
+ }
+ break;
+ case IB_LINK_SPEED_ACTIVE_5:
+ switch (p_pi->link_width_active) {
+ case IB_LINK_WIDTH_ACTIVE_1X:
+ rate = IB_PATH_RECORD_RATE_5_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_4X:
+ rate = IB_PATH_RECORD_RATE_20_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_8X:
+ rate = IB_PATH_RECORD_RATE_40_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_12X:
+ rate = IB_PATH_RECORD_RATE_60_GBS;
+ break;
+
+ default:
+ rate = IB_PATH_RECORD_RATE_5_GBS;
+ break;
+ }
+ break;
+ case IB_LINK_SPEED_ACTIVE_10:
+ switch (p_pi->link_width_active) {
+ case IB_LINK_WIDTH_ACTIVE_1X:
+ rate = IB_PATH_RECORD_RATE_10_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_4X:
+ rate = IB_PATH_RECORD_RATE_40_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_8X:
+ rate = IB_PATH_RECORD_RATE_80_GBS;
+ break;
+
+ case IB_LINK_WIDTH_ACTIVE_12X:
+ rate = IB_PATH_RECORD_RATE_120_GBS;
+ break;
+
+ default:
+ rate = IB_PATH_RECORD_RATE_10_GBS;
+ break;
+ }
break;
- case IB_LINK_WIDTH_ACTIVE_12X:
- rate = IB_PATH_RECORD_RATE_30_GBS;
- break;
-
- default:
- rate = IB_PATH_RECORD_RATE_2_5_GBS;
- break;
- }
- break;
- case IB_LINK_SPEED_ACTIVE_5:
- switch (p_pi->link_width_active)
- {
- case IB_LINK_WIDTH_ACTIVE_1X:
- rate = IB_PATH_RECORD_RATE_5_GBS;
- break;
-
- case IB_LINK_WIDTH_ACTIVE_4X:
- rate = IB_PATH_RECORD_RATE_20_GBS;
- break;
-
- case IB_LINK_WIDTH_ACTIVE_12X:
- rate = IB_PATH_RECORD_RATE_60_GBS;
- break;
-
- default:
- rate = IB_PATH_RECORD_RATE_5_GBS;
- break;
- }
- break;
- case IB_LINK_SPEED_ACTIVE_10:
- switch (p_pi->link_width_active)
- {
- case IB_LINK_WIDTH_ACTIVE_1X:
- rate = IB_PATH_RECORD_RATE_10_GBS;
- break;
-
- case IB_LINK_WIDTH_ACTIVE_4X:
- rate = IB_PATH_RECORD_RATE_40_GBS;
- break;
-
- case IB_LINK_WIDTH_ACTIVE_12X:
- rate =IB_PATH_RECORD_RATE_120_GBS;
- break;
-
default:
- rate = IB_PATH_RECORD_RATE_10_GBS;
- break;
- }
- break;
- default:
- rate = IB_PATH_RECORD_RATE_2_5_GBS;
- break;
+ rate = IB_PATH_RECORD_RATE_2_5_GBS;
+ break;
}
- return rate;
+ return rate;
}
/*
* PARAMETERS
* p_pi
* [in] Pointer to a PortInfo attribute.
+*
+* extended
+* [in] Indicates whether or not to use extended link speeds.
*
* RETURN VALUES
* Returns the encoded value for the link speed supported.
--- C:/Users/scsmith/AppData/Local/Temp/ipoib_port.cpp-revBASE.svn000.tmp.cpp Fri Sep 23 20:19:35 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/ulp/ipoib/kernel/ipoib_port.cpp Fri Sep 23 11:57:50 2011
@@ -7854,7 +7854,8 @@
IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT,
("Received port info: link width = %d.\n",
p_port_info->link_width_active) );
- p_port->ib_mgr.rate = ib_port_info_compute_rate( p_port_info );
+ p_port->ib_mgr.rate = ib_port_info_compute_rate( p_port_info,
+ p_port_info->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS );
ipoib_set_rate( p_port->p_adapter,
p_port_info->link_width_active,
--- C:/Users/scsmith/AppData/Local/Temp/osm_port_info_rcv.c-revBASE.svn000.tmp.c Fri Sep 23 20:20:47 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/ulp/opensm/user/opensm/osm_port_info_rcv.c Fri Sep 23 11:56:57 2011
@@ -101,7 +101,7 @@
sm->p_subn->min_ca_mtu = mtu;
}
- rate = ib_port_info_compute_rate(p_pi);
+ rate = ib_port_info_compute_rate(p_pi,0);
if (rate < sm->p_subn->min_ca_rate) {
OSM_LOG(sm->p_log, OSM_LOG_VERBOSE,
"Setting endport minimal rate to:%u defined by port:0x%"
--- C:/Users/scsmith/AppData/Local/Temp/osm_sa_mcmember_record.c-revBASE.svn000.tmp.c Fri Sep 23 20:21:41 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/ulp/opensm/user/opensm/osm_sa_mcmember_record.c Fri Sep 23 11:56:16 2011
@@ -341,7 +341,7 @@
return FALSE;
}
- rate_required = ib_port_info_compute_rate(&p_physp->port_info);
+ rate_required = ib_port_info_compute_rate(&p_physp->port_info,0);
rate_mgrp = (uint8_t) (p_mgrp->mcmember_rec.rate & 0x3F);
if (rate_required < rate_mgrp) {
OSM_LOG(p_log, OSM_LOG_VERBOSE,
@@ -699,7 +699,7 @@
p_mcm_rec->mtu = (mtu_sel << 6) | mtu;
port_rate =
- p_physp ? ib_port_info_compute_rate(&p_physp->port_info) : 0;
+ p_physp ? ib_port_info_compute_rate(&p_physp->port_info,0) : 0;
if (!(comp_mask & IB_MCR_COMPMASK_RATE)
|| !(comp_mask & IB_MCR_COMPMASK_RATE_SEL)
|| (rate_sel = (p_mcm_rec->rate >> 6)) == 3)
--- C:/Users/scsmith/AppData/Local/Temp/osm_sa_multipath_record.c-revBASE.svn000.tmp.c Fri Sep 23 20:22:27 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/ulp/opensm/user/opensm/osm_sa_multipath_record.c Fri Sep 23 11:56:00 2011
@@ -189,7 +189,7 @@
p_pi = &p_physp->port_info;
mtu = ib_port_info_get_mtu_cap(p_pi);
- rate = ib_port_info_compute_rate(p_pi);
+ rate = ib_port_info_compute_rate(p_pi,0);
/*
Mellanox Tavor device performance is better using 1K MTU.
@@ -361,8 +361,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
/*
Continue with the egress port on this switch.
@@ -384,8 +384,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
if (sa->p_subn->opt.qos) {
/*
@@ -417,8 +417,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
OSM_LOG(sa->p_log, OSM_LOG_DEBUG,
"Path min MTU = %u, min rate = %u\n", mtu, rate);
--- C:/Users/scsmith/AppData/Local/Temp/osm_sa_path_record.c-revBASE.svn000.tmp.c Fri Sep 23 20:23:23 2011
+++ C:/Users/scsmith/Documents/openIB-windows/OFA_SVN/ofw/gen1/trunk/ulp/opensm/user/opensm/osm_sa_path_record.c Fri Sep 23 11:55:38 2011
@@ -194,7 +194,7 @@
p_osm = sa->p_subn->p_osm;
mtu = ib_port_info_get_mtu_cap(p_pi);
- rate = ib_port_info_compute_rate(p_pi);
+ rate = ib_port_info_compute_rate(p_pi,0);
/*
Mellanox Tavor device performance is better using 1K MTU.
@@ -348,8 +348,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
/*
Continue with the egress port on this switch.
@@ -371,8 +371,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
if (sa->p_subn->opt.qos) {
/*
@@ -424,8 +424,8 @@
if (mtu > ib_port_info_get_mtu_cap(p_pi))
mtu = ib_port_info_get_mtu_cap(p_pi);
- if (rate > ib_port_info_compute_rate(p_pi))
- rate = ib_port_info_compute_rate(p_pi);
+ if (rate > ib_port_info_compute_rate(p_pi,0))
+ rate = ib_port_info_compute_rate(p_pi,0);
OSM_LOG(sa->p_log, OSM_LOG_DEBUG,
"Path min MTU = %u, min rate = %u\n", mtu, rate);
More information about the ofw
mailing list