mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[PATCH] IB: Update MAD client API
Automatically allocate a MR when registering a MAD agent. MAD clients are modified to use this updated API. Signed-off-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Hal Rosenstock <halr@voltaire.com> Cc: Roland Dreier <rolandd@cisco.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
c183a4c335
commit
b82cab6b33
5 changed files with 24 additions and 40 deletions
|
@ -134,7 +134,7 @@ static int agent_mad_send(struct ib_mad_agent *mad_agent,
|
|||
sizeof(mad_priv->mad),
|
||||
DMA_TO_DEVICE);
|
||||
gather_list.length = sizeof(mad_priv->mad);
|
||||
gather_list.lkey = (*port_priv->mr).lkey;
|
||||
gather_list.lkey = mad_agent->mr->lkey;
|
||||
|
||||
send_wr.next = NULL;
|
||||
send_wr.opcode = IB_WR_SEND;
|
||||
|
@ -322,22 +322,12 @@ int ib_agent_port_open(struct ib_device *device, int port_num)
|
|||
goto error3;
|
||||
}
|
||||
|
||||
port_priv->mr = ib_get_dma_mr(port_priv->smp_agent->qp->pd,
|
||||
IB_ACCESS_LOCAL_WRITE);
|
||||
if (IS_ERR(port_priv->mr)) {
|
||||
printk(KERN_ERR SPFX "Couldn't get DMA MR\n");
|
||||
ret = PTR_ERR(port_priv->mr);
|
||||
goto error4;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ib_agent_port_list_lock, flags);
|
||||
list_add_tail(&port_priv->port_list, &ib_agent_port_list);
|
||||
spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
|
||||
|
||||
return 0;
|
||||
|
||||
error4:
|
||||
ib_unregister_mad_agent(port_priv->perf_mgmt_agent);
|
||||
error3:
|
||||
ib_unregister_mad_agent(port_priv->smp_agent);
|
||||
error2:
|
||||
|
@ -361,8 +351,6 @@ int ib_agent_port_close(struct ib_device *device, int port_num)
|
|||
list_del(&port_priv->port_list);
|
||||
spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
|
||||
|
||||
ib_dereg_mr(port_priv->mr);
|
||||
|
||||
ib_unregister_mad_agent(port_priv->perf_mgmt_agent);
|
||||
ib_unregister_mad_agent(port_priv->smp_agent);
|
||||
kfree(port_priv);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue