Re: [PATCH 1/2] IB/mad: pass ib_mad_send_buf explicitly to the recv_handler
Looks good, Reviewed-by: Sagi Grimberg-- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] IB/mad: pass ib_mad_send_buf explicitly to the recv_handler
On Mon, Jan 04, 2016 at 02:15:58PM +0100, Christoph Hellwig wrote: > Stop abusing wr_id and just pass the parameter explicitly. > > Signed-off-by: Christoph HellwigReviewed-by: Ira Weiny > --- > drivers/infiniband/core/cm.c | 1 + > drivers/infiniband/core/mad.c | 18 ++ > drivers/infiniband/core/sa_query.c| 7 --- > drivers/infiniband/core/user_mad.c| 1 + > drivers/infiniband/ulp/srpt/ib_srpt.c | 1 + > include/rdma/ib_mad.h | 2 ++ > 6 files changed, 19 insertions(+), 11 deletions(-) > > diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c > index e3a95d1..ad3726d 100644 > --- a/drivers/infiniband/core/cm.c > +++ b/drivers/infiniband/core/cm.c > @@ -3503,6 +3503,7 @@ int ib_cm_notify(struct ib_cm_id *cm_id, enum > ib_event_type event) > EXPORT_SYMBOL(ib_cm_notify); > > static void cm_recv_handler(struct ib_mad_agent *mad_agent, > + struct ib_mad_send_buf *send_buf, > struct ib_mad_recv_wc *mad_recv_wc) > { > struct cm_port *port = mad_agent->context; > diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c > index d4d2a61..cbe232a 100644 > --- a/drivers/infiniband/core/mad.c > +++ b/drivers/infiniband/core/mad.c > @@ -693,7 +693,7 @@ static void snoop_recv(struct ib_mad_qp_info *qp_info, > > atomic_inc(_snoop_priv->refcount); > spin_unlock_irqrestore(_info->snoop_lock, flags); > - mad_snoop_priv->agent.recv_handler(_snoop_priv->agent, > + mad_snoop_priv->agent.recv_handler(_snoop_priv->agent, NULL, > mad_recv_wc); > deref_snoop_agent(mad_snoop_priv); > spin_lock_irqsave(_info->snoop_lock, flags); > @@ -1994,9 +1994,9 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > /* user rmpp is in effect >* and this is an active RMPP MAD >*/ > - mad_recv_wc->wc->wr_id = 0; > - > mad_agent_priv->agent.recv_handler(_agent_priv->agent, > -mad_recv_wc); > + mad_agent_priv->agent.recv_handler( > + _agent_priv->agent, NULL, > + mad_recv_wc); > atomic_dec(_agent_priv->refcount); > } else { > /* not user rmpp, revert to normal behavior and > @@ -2010,9 +2010,10 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > spin_unlock_irqrestore(_agent_priv->lock, flags); > > /* Defined behavior is to complete response before > request */ > - mad_recv_wc->wc->wr_id = (unsigned long) > _send_wr->send_buf; > - > mad_agent_priv->agent.recv_handler(_agent_priv->agent, > -mad_recv_wc); > + mad_agent_priv->agent.recv_handler( > + _agent_priv->agent, > + _send_wr->send_buf, > + mad_recv_wc); > atomic_dec(_agent_priv->refcount); > > mad_send_wc.status = IB_WC_SUCCESS; > @@ -2021,7 +2022,7 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > ib_mad_complete_send_wr(mad_send_wr, _send_wc); > } > } else { > - mad_agent_priv->agent.recv_handler(_agent_priv->agent, > + mad_agent_priv->agent.recv_handler(_agent_priv->agent, NULL, > mad_recv_wc); > deref_mad_agent(mad_agent_priv); > } > @@ -2762,6 +2763,7 @@ static void local_completions(struct work_struct *work) > IB_MAD_SNOOP_RECVS); > recv_mad_agent->agent.recv_handler( > _mad_agent->agent, > + >mad_send_wr->send_buf, > > >mad_priv->header.recv_wc); > spin_lock_irqsave(_mad_agent->lock, flags); > atomic_dec(_mad_agent->refcount); > diff --git a/drivers/infiniband/core/sa_query.c > b/drivers/infiniband/core/sa_query.c > index e364a42..1f91b6e 100644 > --- a/drivers/infiniband/core/sa_query.c > +++ b/drivers/infiniband/core/sa_query.c > @@ -1669,14 +1669,15 @@ static void send_handler(struct ib_mad_agent *agent, > } > > static void recv_handler(struct ib_mad_agent
Re: [PATCH 1/2] IB/mad: pass ib_mad_send_buf explicitly to the recv_handler
On 1/4/2016 8:15 AM, Christoph Hellwig wrote: > Stop abusing wr_id and just pass the parameter explicitly. > > Signed-off-by: Christoph HellwigReviewed-by: Hal Rosenstock > --- > drivers/infiniband/core/cm.c | 1 + > drivers/infiniband/core/mad.c | 18 ++ > drivers/infiniband/core/sa_query.c| 7 --- > drivers/infiniband/core/user_mad.c| 1 + > drivers/infiniband/ulp/srpt/ib_srpt.c | 1 + > include/rdma/ib_mad.h | 2 ++ > 6 files changed, 19 insertions(+), 11 deletions(-) > > diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c > index e3a95d1..ad3726d 100644 > --- a/drivers/infiniband/core/cm.c > +++ b/drivers/infiniband/core/cm.c > @@ -3503,6 +3503,7 @@ int ib_cm_notify(struct ib_cm_id *cm_id, enum > ib_event_type event) > EXPORT_SYMBOL(ib_cm_notify); > > static void cm_recv_handler(struct ib_mad_agent *mad_agent, > + struct ib_mad_send_buf *send_buf, > struct ib_mad_recv_wc *mad_recv_wc) > { > struct cm_port *port = mad_agent->context; > diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c > index d4d2a61..cbe232a 100644 > --- a/drivers/infiniband/core/mad.c > +++ b/drivers/infiniband/core/mad.c > @@ -693,7 +693,7 @@ static void snoop_recv(struct ib_mad_qp_info *qp_info, > > atomic_inc(_snoop_priv->refcount); > spin_unlock_irqrestore(_info->snoop_lock, flags); > - mad_snoop_priv->agent.recv_handler(_snoop_priv->agent, > + mad_snoop_priv->agent.recv_handler(_snoop_priv->agent, NULL, > mad_recv_wc); > deref_snoop_agent(mad_snoop_priv); > spin_lock_irqsave(_info->snoop_lock, flags); > @@ -1994,9 +1994,9 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > /* user rmpp is in effect >* and this is an active RMPP MAD >*/ > - mad_recv_wc->wc->wr_id = 0; > - > mad_agent_priv->agent.recv_handler(_agent_priv->agent, > -mad_recv_wc); > + mad_agent_priv->agent.recv_handler( > + _agent_priv->agent, NULL, > + mad_recv_wc); > atomic_dec(_agent_priv->refcount); > } else { > /* not user rmpp, revert to normal behavior and > @@ -2010,9 +2010,10 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > spin_unlock_irqrestore(_agent_priv->lock, flags); > > /* Defined behavior is to complete response before > request */ > - mad_recv_wc->wc->wr_id = (unsigned long) > _send_wr->send_buf; > - > mad_agent_priv->agent.recv_handler(_agent_priv->agent, > -mad_recv_wc); > + mad_agent_priv->agent.recv_handler( > + _agent_priv->agent, > + _send_wr->send_buf, > + mad_recv_wc); > atomic_dec(_agent_priv->refcount); > > mad_send_wc.status = IB_WC_SUCCESS; > @@ -2021,7 +2022,7 @@ static void ib_mad_complete_recv(struct > ib_mad_agent_private *mad_agent_priv, > ib_mad_complete_send_wr(mad_send_wr, _send_wc); > } > } else { > - mad_agent_priv->agent.recv_handler(_agent_priv->agent, > + mad_agent_priv->agent.recv_handler(_agent_priv->agent, NULL, > mad_recv_wc); > deref_mad_agent(mad_agent_priv); > } > @@ -2762,6 +2763,7 @@ static void local_completions(struct work_struct *work) > IB_MAD_SNOOP_RECVS); > recv_mad_agent->agent.recv_handler( > _mad_agent->agent, > + >mad_send_wr->send_buf, > > >mad_priv->header.recv_wc); > spin_lock_irqsave(_mad_agent->lock, flags); > atomic_dec(_mad_agent->refcount); > diff --git a/drivers/infiniband/core/sa_query.c > b/drivers/infiniband/core/sa_query.c > index e364a42..1f91b6e 100644 > --- a/drivers/infiniband/core/sa_query.c > +++ b/drivers/infiniband/core/sa_query.c > @@ -1669,14 +1669,15 @@ static void send_handler(struct ib_mad_agent *agent, > } > > static void recv_handler(struct ib_mad_agent *mad_agent, > +