[rds-devel] rds_xx_process_recv() "fragmentation header mismatch"
Steve Wise
swise at opengridcomputing.com
Tue Feb 10 09:58:58 PST 2009
Andy Grover wrote:
> Steve Wise wrote:
>
>> Can someone explain why this code is here:
>> } else {
>> hdr = &iwinc->ii_inc.i_hdr;
>> /* We can't just use memcmp here; fragments of a
>> * single message may carry different ACKs */
>> if (hdr->h_sequence != ihdr->h_sequence
>> || hdr->h_len != ihdr->h_len
>> || hdr->h_sport != ihdr->h_sport
>> || hdr->h_dport != ihdr->h_dport) {
>> rds_iw_conn_error(conn,
>> "fragment header mismatch; forcing
>> reconnect\n");
>> return;
>> }
>> }
>>
>> I hit this sometimes when running rds-stress and the transport
>> connection hasn't yet been setup.
>>
>
> Each message can be broken up into multiple fragments. All of a
> message's fragments are sent in-order before the next message is sent.
> While we've started to receive a message, we keep its state in iwinc.
> All the fragments must have the same header (except for ACK field), so
> this is verifying that fragments after the initial one have matching
> headers.
>
> Regards -- Andy
>
Under what conditions will these not all match every single time for an
RC QP transport?
More information about the rds-devel
mailing list