|
@@ -179,12 +179,12 @@ static int is_vendor_method_in_use(
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int ib_response_mad(struct ib_mad *mad)
|
|
|
+int ib_response_mad(const struct ib_mad_hdr *hdr)
|
|
|
{
|
|
|
- return ((mad->mad_hdr.method & IB_MGMT_METHOD_RESP) ||
|
|
|
- (mad->mad_hdr.method == IB_MGMT_METHOD_TRAP_REPRESS) ||
|
|
|
- ((mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_BM) &&
|
|
|
- (mad->mad_hdr.attr_mod & IB_BM_ATTR_MOD_RESP)));
|
|
|
+ return ((hdr->method & IB_MGMT_METHOD_RESP) ||
|
|
|
+ (hdr->method == IB_MGMT_METHOD_TRAP_REPRESS) ||
|
|
|
+ ((hdr->mgmt_class == IB_MGMT_CLASS_BM) &&
|
|
|
+ (hdr->attr_mod & IB_BM_ATTR_MOD_RESP)));
|
|
|
}
|
|
|
EXPORT_SYMBOL(ib_response_mad);
|
|
|
|
|
@@ -791,7 +791,7 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
|
|
|
switch (ret)
|
|
|
{
|
|
|
case IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_REPLY:
|
|
|
- if (ib_response_mad(&mad_priv->mad.mad) &&
|
|
|
+ if (ib_response_mad(&mad_priv->mad.mad.mad_hdr) &&
|
|
|
mad_agent_priv->agent.recv_handler) {
|
|
|
local->mad_priv = mad_priv;
|
|
|
local->recv_mad_agent = mad_agent_priv;
|
|
@@ -1628,7 +1628,7 @@ find_mad_agent(struct ib_mad_port_private *port_priv,
|
|
|
unsigned long flags;
|
|
|
|
|
|
spin_lock_irqsave(&port_priv->reg_lock, flags);
|
|
|
- if (ib_response_mad(mad)) {
|
|
|
+ if (ib_response_mad(&mad->mad_hdr)) {
|
|
|
u32 hi_tid;
|
|
|
struct ib_mad_agent_private *entry;
|
|
|
|
|
@@ -1765,8 +1765,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 = ib_response_mad((struct ib_mad *)wr->send_buf.mad);
|
|
|
- rcv_resp = ib_response_mad(rwc->recv_buf.mad);
|
|
|
+ send_resp = ib_response_mad((struct ib_mad_hdr *)wr->send_buf.mad);
|
|
|
+ rcv_resp = ib_response_mad(&rwc->recv_buf.mad->mad_hdr);
|
|
|
|
|
|
if (send_resp == rcv_resp)
|
|
|
/* both requests, or both responses. GIDs different */
|
|
@@ -1879,7 +1879,7 @@ static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,
|
|
|
}
|
|
|
|
|
|
/* Complete corresponding request */
|
|
|
- if (ib_response_mad(mad_recv_wc->recv_buf.mad)) {
|
|
|
+ if (ib_response_mad(&mad_recv_wc->recv_buf.mad->mad_hdr)) {
|
|
|
spin_lock_irqsave(&mad_agent_priv->lock, flags);
|
|
|
mad_send_wr = ib_find_send_mad(mad_agent_priv, mad_recv_wc);
|
|
|
if (!mad_send_wr) {
|