[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