[openib-general] Re: Some Initial RMPP Wire Observations

Hal Rosenstock halr at voltaire.com
Tue May 3 14:50:15 PDT 2005


On Tue, 2005-05-03 at 17:39, Sean Hefty wrote:
> I think what's necessary is for the DATA MAD to be rejected.  This check 
> is missing, but easily added.  (I was deferring some of this until 
> STOP/ABORT are implemented.)

OK.

>   So... I think that the ACK code may be 
> correct, but checks done earlier in the receive path should prevent this 
> type of DATA MAD from reaching the ACK code.

Right. It gets dropped because it has a status:

static void process_rmpp_ack(struct ib_mad_agent_private *agent,
                             struct ib_mad_recv_wc *mad_recv_wc)
...
        rmpp_mad = (struct ib_rmpp_mad *)mad_recv_wc->recv_buf.mad;
        if (rmpp_mad->rmpp_hdr.rmpp_status)
                return;

> >>>In the last segment, it appears that the pad is not cleared. This again
> >>>shouldn't matter but I didn't dig out what the spec says here.
> >>
> >>Not sure which field you're referring to here.
> > 
> > I'm referring to the transferred data beyond the end of the payload
> > length in the last segment. I'm not sure there is a requirement to do
> > anything with this on the transmit side.
> 
> Got ya...  The contents of the MAD data is the responsibility of the 
> sender.  Note that ib_create_send_mad() clears the MAD memory, so if 
> that call is used, the pad will be cleared.

Thanks for pointing that out. I am using ib_create_mad_send for this.
Not sure why they are not cleared. Maybe it's related to the other issue
I am having.

-- Hal




More information about the general mailing list