• Cedric Roux's avatar
    cleanup MAC PDU generation (plus some general cleanup) · 1a8d81ba
    Cedric Roux authored
    The code was very unclear and potentially buggy.
    This new version is more robust.
    
    We can waste up to 2 bytes because the last header in the MAC PDU
    does not contain a length field and when we request data from RLC
    we suppose a 3-bytes MAC header. This might be optimized at some
    point, but the benefit would be low.
    
    This commit also contains some general cleanup:
    - formatting
    - variables' types: let's use 'int' instead of trying to be clever
      by using small types that may generate bugs if the value is
      too big
    - remove 'tpc_accumulated' which was globally used for all UEs
      and has no purpose other than logging. We may want to rework
      a bit the TPC machinery at some point. As the code is today
      we may repeatedly send TPC over and over without caring about
      the 3GPP limits, in which case no one knows how the UE is
      supposed to behave: does it clamp the current max value or does
      it accumulate over and over and take the clamped value to compute
      its actual power? If we send a reverse TPC (reduce power instead
      of increase) does it do it immediately or does it have to decrease
      n+1 times if we previously ordered it to increase n times?)
    
    We do not address the problem of prioritizing LCIDs. As of today there
    is only one dedicated traffic channel (DTCH), so it's not a problem
    at this point.
    
    What has been tested:
    - monolithic eNB 5/10/20MHz with one cots UE, TCP/UDP UL/DL. At 20MHz the
      machine used was not capable of keeping up, generating lots of Us
      and Ls when the throughput reaches 60Mb/s. USRP B210 was used.
    1a8d81ba
proto.h 47.3 KB