← Back to team overview

rohc team mailing list archive

ROHC TCP dynamic field changes

 

Hi:

    We have an implementation in the Linux kernel using the ROHC-lib.
We've found a problem on the decomp side where the dynamic fields of
a packet are changed, but the option list is not updated.   This occurs only
when we push large-size packets (> 1024) as quickly as possible, thus causing
packet drops and retransmits.   So, it seems like a retransmitted packet's options
do not match the option list on the decomp side.  My idea of a fix is on the comp
side - when I detect a change in the dynamic parts, I should send an IR_DYN to
update the option list.  When I was looking at the d_tcp.c code,  I saw several places
ifdef'd out with "TODO's"  that seem to do similar things.  For example, the following
snippet from the code:

#ifdef TODO
        if(tcp_context->tmp_variables.send_tcp_dynamic)
        {
                change_state(context, ROHC_COMP_STATE_IR);
        }
        else
        {
                /* generic function used by the IP-only, UDP and UDP-Lite profiles */
                decide_state(context);
        }
#endif

Is the purpose of the above code to refresh the decomp side when changes in the dynamic fields are detected?
Have these TODO's been completed?  What needs to be done to make it work?

Thanks and kind regards,

TW

Follow ups