summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brooks2008-09-21 05:06:16 +0200
committerRoland Dreier2008-09-21 05:06:16 +0200
commit7097228c54e7348d8c8c6dccc96e50191e39c2f8 (patch)
tree2b04e5fc68f5ec5c3c1405e27f4a68c3cedbca2b
parentMerge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 (diff)
downloadkernel-qcow2-linux-7097228c54e7348d8c8c6dccc96e50191e39c2f8.tar.gz
kernel-qcow2-linux-7097228c54e7348d8c8c6dccc96e50191e39c2f8.tar.xz
kernel-qcow2-linux-7097228c54e7348d8c8c6dccc96e50191e39c2f8.zip
IB/mad: Don't discard BMA responses in kernel
This fixes the problem of incoming BMA responses being dropped due to a bad "is response" check. Fix the test to use the ib_response_mad() predicate, which correctly handles BMA MADs. This fixes <https://bugs.openfabrics.org/show_bug.cgi?id=988>. Signed-off-by: Michael Brooks <michael.brooks@qlogic.com> Acked-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--drivers/infiniband/core/mad.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 1adf2efd3cb3..49c45feccd5b 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -1697,9 +1697,8 @@ static inline int rcv_has_same_gid(struct ib_mad_agent_private *mad_agent_priv,
u8 port_num = mad_agent_priv->agent.port_num;
u8 lmc;
- send_resp = ((struct ib_mad *)(wr->send_buf.mad))->
- mad_hdr.method & IB_MGMT_METHOD_RESP;
- rcv_resp = rwc->recv_buf.mad->mad_hdr.method & IB_MGMT_METHOD_RESP;
+ send_resp = ib_response_mad((struct ib_mad *)wr->send_buf.mad);
+ rcv_resp = ib_response_mad(rwc->recv_buf.mad);
if (send_resp == rcv_resp)
/* both requests, or both responses. GIDs different */