• Cedric Roux's avatar
    hotfix: clear DCI padding bits · c9f89db8
    Cedric Roux authored
    The problem is the following (as reported by an user):
    
      "one UE is attached to OAI system. UE is near the antenna. Try to detach
      the UE and attach again. Repeat this procedure for 5-6 times. OAI system
      does not work and any the UE can not attach to this system. I use TEMS
      software and I can see MIB signaling on this UE but UE can not decode SIB1
      and SIB2."
    
    What happens is that the DCI for SIB1 and SIB2 is not cleared before
    use. That is the bits in the 'padding' field keep the values that were
    set before. If the structure has been used to transmit other DCIs
    (eg. for UEs) in the past, it may be reused with some of those bits set
    to 1. When receiving this DCI, the UE won't accept it because it
    gets some bits at 1 where it expects them to be 0.
    
    The short-term/quick solution is to clear the 'padding' field.
    A better solution would be to rewrite this part of the code,
    which is way too complicated for what it does. But this takes
    too much time.
    
    In dci.h the field 'dummy' of some structures was renamed to 'padding'.
    The fields 'padding32' and 'padding64' were also renamed to 'padding'
    for consistency.
    
    Some structures (DCI2B_1_5MHz_TDD, DCI2B_10MHz_FDD, DCI2D_1_5MHz_FDD,
    DCI2D_5MHz_FDD, DCI2D_10MHz_FDD) had a 'padding' field at the end, which
    was renamed to 'padding0'. I don't know if this field should be here at all.
    To me this field looks very suspicious. When we test DCIs 2B and 2D we
    should be careful.
    
    (cherry picked from commit c5ca2bd8)
    c9f89db8
dci_tools.c 378 KB