On Mon, 2006-04-10 at 11:04, Jack Morgenstein wrote:

A couple of commentary comments below...

-- Hal

> Index: src/drivers/infiniband/core/mad.c
> ===================================================================
> --- src/drivers/infiniband/core/mad.c (revision 6066)
> +++ src/drivers/infiniband/core/mad.c (working copy)

>  struct ib_mad_send_wr_private*
>  ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv,
> -              struct ib_mad_recv_wc *mad_recv_wc)
> +              struct ib_mad_recv_wc *wc)
>  {
> -     struct ib_mad_send_wr_private *mad_send_wr;
> +     struct ib_mad_send_wr_private *wr;
>       struct ib_mad *mad;
>  
> -     mad = (struct ib_mad *)mad_recv_wc->recv_buf.mad;
> +     mad = (struct ib_mad *)wc->recv_buf.mad;
>  
> -     list_for_each_entry(mad_send_wr, &mad_agent_priv->wait_list,
> -                         agent_list) {
> -             if ((mad_send_wr->tid == mad->mad_hdr.tid) &&
> -                 rcv_has_same_class(mad_send_wr, mad_recv_wc) &&
> -                 rcv_has_same_gid(mad_send_wr, mad_recv_wc))
> -                     return mad_send_wr;
> +     list_for_each_entry(wr, &mad_agent_priv->wait_list, agent_list) {
> +             if ((wr->tid == mad->mad_hdr.tid) &&
> +                 rcv_has_same_class(wr, wc) &&
> +                 /*
> +                  * Don't check GID for direct routed MADs.
> +                  * These might have permissive LIDs.

What's the relevance of the latter comment ? VL15 packets never have
GRHs so there are no GIDs so I think the first comment is sufficient.

> +                  */
> +                 (is_direct(wc->recv_buf.mad->mad_hdr.mgmt_class) ||
> +                  rcv_has_same_gid(mad_agent_priv, wr, wc)))
> +                     return wr;
>       }
>  
>       /*
>        * It's possible to receive the response before we've
>        * been notified that the send has completed
>        */
> -     list_for_each_entry(mad_send_wr, &mad_agent_priv->send_list,
> -                         agent_list) {
> -             if (is_data_mad(mad_agent_priv, mad_send_wr->send_buf.mad) &&
> -                 mad_send_wr->tid == mad->mad_hdr.tid &&
> -                 mad_send_wr->timeout &&
> -                 rcv_has_same_class(mad_send_wr, mad_recv_wc) &&
> -                 rcv_has_same_gid(mad_send_wr, mad_recv_wc)) {
> +     list_for_each_entry(wr, &mad_agent_priv->send_list, agent_list) {
> +             if (is_data_mad(mad_agent_priv, wr->send_buf.mad) &&
> +                 wr->tid == mad->mad_hdr.tid &&
> +                 wr->timeout &&
> +                 rcv_has_same_class(wr, wc) &&
> +                 /*
> +                  * Don't check GID for direct routed MADs.
> +                  * These might have permissive LIDs.
> +                  */

Same comment as above.

> +                 (is_direct(wc->recv_buf.mad->mad_hdr.mgmt_class) ||
> +                  rcv_has_same_gid(mad_agent_priv, wr, wc)))
>                       /* Verify request has not been canceled */
> -                     return (mad_send_wr->status == IB_WC_SUCCESS) ?
> -                             mad_send_wr : NULL;
> -             }
> +                     return (wr->status == IB_WC_SUCCESS) ? wr : NULL;
>       }
>       return NULL;
>  }

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to