Return the active width in the port attributes reported by the HCA.
Because the kernel and user space share the same source 
files, to avoid breaking the ABI, rename link_width_supported field
to active_width and use that field to return the value.
link_width_supported is currently uninitialized and in the svn tree
unused, so repurposing the field should have minimal impact.  However,
this change will break the API.  Applications that reference the
link_width_supported field from struct _ib_port_attr will require
a minor update if recompiled. 

Update winverbs to report this value and fill in other missing fields
from the port attribute structure.  This fix allows reporting the
correct values through the libibverbs port and ibv_devinfo example
utility.

Signed-off-by: Sean Hefty <[email protected]>
---
changes from v1: renamed link_width_supported field

diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' 
trunk\inc\iba/ib_types.h branches\winverbs\inc\iba/ib_types.h
--- trunk\inc\iba/ib_types.h    2009-06-11 10:33:24.189875000 -0700
+++ branches\winverbs\inc\iba/ib_types.h        2009-08-13 10:55:27.403564800 
-0700
@@ -8724,11 +8724,7 @@ typedef struct _ib_port_attr
        ib_net16_t                              lid;
        uint8_t                                 lmc;
 
-       /*
-        * LinkWidthSupported as defined in PortInfo.  Required to calculate
-        * inter-packet delay (a.k.a. static rate).
-        */
-       uint8_t                                 link_width_supported;
+       uint8_t                                 active_width;
 
        uint16_t                                max_vls;
 
diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' 
trunk\hw/mlx4/kernel/hca/data.c
branches\winverbs\hw/mlx4/kernel/hca/data.c
--- trunk\hw/mlx4/kernel/hca/data.c     2009-06-11 10:33:38.377375000 -0700
+++ branches\winverbs\hw/mlx4/kernel/hca/data.c 2009-08-13 10:41:52.762601000 
-0700
@@ -347,6 +347,7 @@ from_hca_cap(
                        ibal_port_p->max_msg_size = mthca_port_p->max_msg_sz;
                        ibal_port_p->mtu = (uint8_t)mthca_port_p->max_mtu;
                        ibal_port_p->active_speed = mthca_port_p->active_speed;
+                       ibal_port_p->active_width = mthca_port_p->active_width;
                        ibal_port_p->phys_state = mthca_port_p->phys_state;
 
                        ibal_port_p->subnet_timeout = 
mthca_port_p->subnet_timeout;
diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' 
trunk\hw/mthca/kernel/hca_data.c
branches\winverbs\hw/mthca/kernel/hca_data.c
--- trunk\hw/mthca/kernel/hca_data.c    2009-06-11 10:33:47.846125000 -0700
+++ branches\winverbs\hw/mthca/kernel/hca_data.c        2009-08-13 
10:41:53.137533800 -0700
@@ -323,6 +323,7 @@ mlnx_conv_hca_cap(
                ibal_port_p->max_msg_size = mthca_port_p->max_msg_sz;
                ibal_port_p->mtu = (uint8_t)mthca_port_p->max_mtu;
                ibal_port_p->active_speed = mthca_port_p->active_speed;
+               ibal_port_p->active_width = mthca_port_p->active_width;
                ibal_port_p->phys_state = mthca_port_p->phys_state;
 
                ibal_port_p->subnet_timeout = mthca_port_p->subnet_timeout;
diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' 
trunk\core\winverbs/kernel/wv_device.c
branches\winverbs\core\winverbs/kernel/wv_device.c
--- trunk\core\winverbs/kernel/wv_device.c      2009-06-11 10:32:48.283625000 
-0700
+++ branches\winverbs\core\winverbs/kernel/wv_device.c  2009-08-13 
10:42:24.665309400 -0700
@@ -517,7 +517,7 @@ static void WvConvertPortAttr(WV_IO_PORT
 {
        WvConvertPortCap(&pAttributes->PortCabilityFlags, &pPortAttr->cap);
        pAttributes->State                      = pPortAttr->link_state;
-       pAttributes->MaxMtu                     = 0;    // TODO: missing in 
ib_port_attr_t
+       pAttributes->MaxMtu                     = 0x80 << pPortAttr->mtu;
        pAttributes->ActiveMtu          = 0x80 << pPortAttr->mtu;
        pAttributes->GidTableLength     = pPortAttr->num_gids;
        pAttributes->MaxMessageSize     = (UINT32) pPortAttr->max_msg_size;
@@ -531,9 +531,9 @@ static void WvConvertPortAttr(WV_IO_PORT
        pAttributes->SmSl                       = pPortAttr->sm_sl;
        pAttributes->SubnetTimeout      = pPortAttr->subnet_timeout;
        pAttributes->InitTypeReply      = pPortAttr->init_type_reply;
-       pAttributes->ActiveWidth        = pPortAttr->link_width_supported;
-       pAttributes->ActiveSpeed        = 0;    // TODO: missing in 
ib_port_attr_t
-       pAttributes->PhysicalState      = 0;    // TODO: missing in 
ib_port_attr_t
+       pAttributes->ActiveWidth        = pPortAttr->active_width;
+       pAttributes->ActiveSpeed        = pPortAttr->active_speed;
+       pAttributes->PhysicalState      = pPortAttr->phys_state;
        pAttributes->Reserved[0]        = 0;
        pAttributes->Reserved[1]        = 0;
 }

Attachment: hw.diff
Description: Binary data

Attachment: winverbs.diff
Description: Binary data

Attachment: al.diff
Description: Binary data

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to