Some additional comments related to changes in the receive processing are below.

>  static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
>                                    struct ib_wc *wc)
>  {
> @@ -797,17 +876,10 @@
> -     recv->header.recv_wc.mad_len = sizeof(struct ib_mad); /* Should this be based 
> on wc->byte_len ? Also, RMPP !!! */
> +     recv->header.recv_wc.mad_len = sizeof(struct ib_mad);

I believe that this is correct, to avoid including the GRH size.  For RMPP, I expect 
that the RMPP code will need to update the recv_wc.mad_len once all segments have been 
assembled.

> -     if (wc->wc_flags & IB_WC_GRH) {
> -             recv->header.recv_buf.grh = &recv->grh;
> -     } else {
> -             recv->header.recv_buf.grh = NULL;
> -     }
> +     recv->header.recv_buf.grh = &recv->grh;

The API is defined such that the grh pointer is always valid; it's the data that may 
or may not be.  I think this will make it easier for clients to repost receive buffers 
on redirected QPs.
_______________________________________________
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