From: Vladimir Sokolovsky Date: Tue, 5 Jun 2012 14:14:55 +0000 (+0300) Subject: linux-next-cherry-picks: IB/mlx4: pass SMP vendor-specific attribute MADs to firmware X-Git-Tag: vofed-3.5-x~75 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=8446d1c90af629fbc000f35f2959f72fbc64929d;p=~tnikolova%2Fcompat-rdma%2F.git linux-next-cherry-picks: IB/mlx4: pass SMP vendor-specific attribute MADs to firmware Original patch: From a6f7feae6d19e84253918d88b04153af09d3a243 Mon Sep 17 00:00:00 2001 From: Jack Morgenstein Date: Thu, 26 Jan 2012 16:41:33 +0200 Subject: [PATCH] IB/mlx4: pass SMP vendor-specific attribute MADs to firmware Signed-off-by: Vladimir Sokolovsky --- diff --git a/linux-next-cherry-picks/11-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch b/linux-next-cherry-picks/11-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch new file mode 100644 index 0000000..b804a33 --- /dev/null +++ b/linux-next-cherry-picks/11-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch @@ -0,0 +1,87 @@ +From a6f7feae6d19e84253918d88b04153af09d3a243 Mon Sep 17 00:00:00 2001 +From: Jack Morgenstein +Date: Thu, 26 Jan 2012 16:41:33 +0200 +Subject: [PATCH] IB/mlx4: pass SMP vendor-specific attribute MADs to firmware + +In the current code, vendor-specific MADs (e.g with the FDR-10 +attribute) are silently dropped by the driver, resulting in timeouts +at the sending side and inability to query/configure the relevant +feature. However, the ConnectX firmware is able to handle such MADs. +For unsupported attributes, the firmware returns a GET_RESPONSE MAD +containing an error status. + +For example, for a FDR-10 node with LID 11: + + # ibstat mlx4_0 1 + + CA: 'mlx4_0' + Port 1: + State: Active + Physical state: LinkUp + Rate: 40 (FDR10) + Base lid: 11 + LMC: 0 + SM lid: 24 + Capability mask: 0x02514868 + Port GUID: 0x0002c903002e65d1 + Link layer: InfiniBand + +Extended Port Query (EPI) vendor mad timeouts before the patch: + + # smpquery MEPI 11 -d + + ibwarn: [4196] smp_query_via: attr 0xff90 mod 0x0 route Lid 11 + ibwarn: [4196] _do_madrpc: retry 1 (timeout 1000 ms) + ibwarn: [4196] _do_madrpc: retry 2 (timeout 1000 ms) + ibwarn: [4196] _do_madrpc: timeout after 3 retries, 3000 ms + ibwarn: [4196] mad_rpc: _do_madrpc failed; dport (Lid 11) + smpquery: iberror: [pid 4196] main: failed: operation EPI: ext port info query failed + +EPI query works OK with the patch: + + # smpquery MEPI 11 -d + + ibwarn: [6548] smp_query_via: attr 0xff90 mod 0x0 route Lid 11 + ibwarn: [6548] mad_rpc: data offs 64 sz 64 + mad data + 0000 0000 0000 0001 0000 0001 0000 0001 + 0000 0000 0000 0000 0000 0000 0000 0000 + 0000 0000 0000 0000 0000 0000 0000 0000 + 0000 0000 0000 0000 0000 0000 0000 0000 + # Ext Port info: Lid 11 port 0 + StateChangeEnable:...............0x00 + LinkSpeedSupported:..............0x01 + LinkSpeedEnabled:................0x01 + LinkSpeedActive:.................0x01 + +Signed-off-by: Jack Morgenstein +Signed-off-by: Or Gerlitz +Acked-by: Ira Weiny +Cc: +Signed-off-by: Roland Dreier +--- + drivers/infiniband/hw/mlx4/mad.c | 7 ++----- + 1 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c +index 95c94d8..259b067 100644 +--- a/drivers/infiniband/hw/mlx4/mad.c ++++ b/drivers/infiniband/hw/mlx4/mad.c +@@ -257,12 +257,9 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num, + return IB_MAD_RESULT_SUCCESS; + + /* +- * Don't process SMInfo queries or vendor-specific +- * MADs -- the SMA can't handle them. ++ * Don't process SMInfo queries -- the SMA can't handle them. + */ +- if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO || +- ((in_mad->mad_hdr.attr_id & IB_SMP_ATTR_VENDOR_MASK) == +- IB_SMP_ATTR_VENDOR_MASK)) ++ if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO) + return IB_MAD_RESULT_SUCCESS; + } else if (in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_PERF_MGMT || + in_mad->mad_hdr.mgmt_class == MLX4_IB_VENDOR_CLASS1 || +-- +1.7.0.4 +