← Back to team overview

rohc team mailing list archive

Re: [Question #266708]: Duplicate Feedback

 

Question #266708 on rohc changed:
https://answers.launchpad.net/rohc/+question/266708

    Status: Answered => Open

Mohammad Abyan Abdullah is still having a problem:
Ok.  Like one change ..
  At Outer IP-ID patch you told me that it's not fixable at the first error packet. It has to fixed 3 packet to get a valid packet. So I did modified the code a bit to get the packet valid at first CRC error.  What I saw at the log I provided to you is whenever the packet comes late the IP-ID value mismatch at that time. So at
d_generic.c
At
static bool decode_values_from_bits(struct rohc_decomp_ctxt *const context,
                                    const struct rohc_extr_bits bits,
                                    struct rohc_decoded_values *const decoded)
{
        struct d_generic_context *g_context;
        bool decode_ok;
        bool packet_late = false;

.....
...

  else if(decoded->sn < expected_next_sn)
                {
                        /* smaller SN: order was changed on the network channel */
                        rohc_info(context->decompressor, ROHC_TRACE_DECOMP, context->profile->id,
                                  "packet seems to come late (SN jumped back from 0x%x "
                                  "to 0x%x)", sn_context, decoded->sn);
                        context->nr_lost_packets = 0;
                        context->nr_misordered_packets = expected_next_sn - decoded->sn;
                        context->is_duplicated = false;
                        packet_late = true;
                }

......
...
      if(packet_late)
        {
        decode_ok = decode_ip_values_from_bits(context, g_context->outer_ip_changes,
                                               g_context->outer_ip_id_offset_ctxt,
                                                decoded->sn, ROHC_LSB_REF_MINUS_1, bits.outer_ip,
                                               "outer", &decoded->outer_ip);
        rohc_decomp_debug(context, "Using Late Packet Reference");
        }
        else
        {
        /* decode fields related to the outer IP header */
        decode_ok = decode_ip_values_from_bits(context, g_context->outer_ip_changes,
                                               g_context->outer_ip_id_offset_ctxt,
                                                decoded->sn, bits.sn_ref_type, bits.outer_ip,
                                               "outer", &decoded->outer_ip);
        }


So whenever I see a packet comes late from the sn difference I can use ROHC_LSB_REF_MINUS_1 to determine the outer-ip-id for that late packet. So I don't get anymore CRC error packets for that scenario. I don't if that feasible or not. :)

Regards
Abyan

-- 
You received this question notification because you are a member of ROHC
Team, which is an answer contact for rohc.