IB/mad: Simplify SMI by eliminating smi_check_local_dr_smp()

The call to ib_get_agent_port() shouldn't be possible to fail when
smi_check_local_dr_smp() is called from ib_mad_recv_done_handler().
When it is called from handle_outgoing_dr_smp(), the device and
port_num come from mad_agent_priv so I assume the call to
ib_get_agent_port() shouldn't fail either.  In either case,
smi_check_local_smp() only uses the mad_agent pointer to check that
mad_agent->device->process_mad is not NULL.  The device pointer would
have to be the same as the one passed to smi_check_local_dr_smp()
since that pointer is used later instead of the one checked in
smi_check_local_smp().

Signed-off-by: Hal Rosenstock <halr@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Ralph Campbell
2006-02-03 14:32:01 -08:00
committed by Roland Dreier
parent 5f0b67e0d5
commit 5e9f71a16c
3 changed files with 6 additions and 27 deletions

View File

@ -679,8 +679,8 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
goto out;
}
/* Check to post send on QP or process locally */
ret = smi_check_local_dr_smp(smp, device, port_num);
if (!ret || !device->process_mad)
ret = smi_check_local_smp(smp, device);
if (!ret)
goto out;
local = kmalloc(sizeof *local, GFP_ATOMIC);
@ -1661,9 +1661,7 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
port_priv->device->node_type,
port_priv->port_num))
goto out;
if (!smi_check_local_dr_smp(&recv->mad.smp,
port_priv->device,
port_priv->port_num))
if (!smi_check_local_smp(&recv->mad.smp, port_priv->device))
goto out;
}