diff options
author | Jack Morgenstein <jackm@dev.mellanox.co.il> | 2012-04-25 01:06:50 +0200 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-04-25 01:06:50 +0200 |
commit | 840777de530ae96ee9a3022f7ec1d6c65abb26ac (patch) | |
tree | 4276b8b4082dd44f323c3c9b65e09a87e7570b4f /drivers/infiniband/core | |
parent | Linux 3.4-rc2 (diff) | |
download | linux-840777de530ae96ee9a3022f7ec1d6c65abb26ac.tar.xz linux-840777de530ae96ee9a3022f7ec1d6c65abb26ac.zip |
IB/mad: Set 'D' bit in response for unhandled MADs
Commit 0b307043049f ("IB/mad: Return error response for unsupported
MADs") does not handle directed-route MADs properly -- it fails to set
the 'D' bit in the response MAD status field. This is a problem for
SmInfo MADs when the receiver does not have an SM running.
Reviewed-by: Hal Rosenstock <hal@mellanox.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/core')
-rw-r--r-- | drivers/infiniband/core/mad.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index 426bb7617ec6..1c73d8aa4b97 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c @@ -1854,6 +1854,8 @@ static bool generate_unmatched_resp(struct ib_mad_private *recv, response->mad.mad.mad_hdr.method = IB_MGMT_METHOD_GET_RESP; response->mad.mad.mad_hdr.status = cpu_to_be16(IB_MGMT_MAD_STATUS_UNSUPPORTED_METHOD_ATTRIB); + if (recv->mad.mad.mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) + response->mad.mad.mad_hdr.status |= IB_SMP_DIRECTION; return true; } else { |