• Cedric Roux's avatar
    rewrite sort_UE for UL and DL and adapt the rest to the change · da75a078
    Cedric Roux authored
    The previous version did not seem to work properly with
    several UEs. I too often ended up with a list 'next' where
    next[i] = i, leading to an infinite loop, crashing the
    processing.
    
    The sorting functions were hard to understand and too slow
    anyway (O(n*n)).
    
    We now use qsort_r and comparison functions, that should
    define the same order as the previous version.
    
    One important point is that the "next" lists and the "head"
    variable are now considered invalid before calling sort_UE.
    
    So all the code (coming before sort_UE) that looped using those
    variables has been rewritten to loop over all possible UEs and
    the first instruction of the loop is to exit the loop if the UE
    is not 'active'. There is room for improvement here. We will
    reintroduce a list of some kind at some point. Let's first
    have something that works and then optimize. Today NUMBER_OF_UE_MAX
    is 16, that's not a big deal.
    
    Consequently, the add_new_ue and rrc_mac_remove_ue have also
    been rewritten, hopefully for the better.
    
    This commit is not a basic work and may introduce some
    problems.
    da75a078
eNB_scheduler_dlsch.c 74.8 KB