• Laurent THOMAS's avatar
    Simplify interface by removing dcireq_t struct that was only calling one function · 6c34d3e6
    Laurent THOMAS authored
    Simplify the intermediate struct nr_uplink_indication_t by passing only tx frame+slot
    Simplify nr_scheduled_response_t by removing module id, CCid, ... that are there only to rediscover the mac storage structure head, pass directly the mac head pointer instead
    fix bugs in ul_info.frame_rx + 1 that was missing %1024
    add mutex mac_IF_mutex modifications verification of returned value to log errors if a error occurs
    remove fill_scheduled_response() that was doing nothing useful
    split nr_ue_dl_indication() implementation in two very differnt functions depending on the call purpose (ue scheduler or actual dl data processing), the API is kept as one nr_ue_dl_indication() unchanged, nevertheless this design is obscur
    rework completly the access to mac->ul_config_request[slot]
        - make proper encapsulation of the data access, mutex, ... and proper API to create elements, iterators
        - kept general usage of this mutex protected storage as it is, even in useless cases (like inside processing of this given tx slot, so the consumer speaks to itself)
    nr_ue_get_rach(): remove a hidden result data global variable to return explcitly computed value (in one place, it reveals we don't use the computed value, kept as it is)
    nr_get_msg3_payload(): add a polling waiting state to wait the RRC thread sent the pdu to RLC (should be fixed better later)
    simplify a bit ue->tx_resume_ind_fifo, add logs in error cases, coherency checks with the associated counter tx_wait_for_dlsch
    this counter tx_wait_for_dlsch reduce it's visibility to be now local in main UE loop (UE_thread)
    nevertheless, it should be simplified more (the pair tx_resume_ind_fifo/tx_wait_for_dlsch is a complex wiat to make a semaphore, and maybe we can entirely simplify the multi-threading by running in place when it is appropriate time instead of calling send_slot_ind() that is furthermore a wrong function naming
    split nr_ue_scheduled_response() in nr_ue_scheduled_response_dl() and nr_ue_scheduled_response_ul(), the function is kept to minimize the code change
    improve this function C code, by shortening long C lines
    
    minor cleaning: move to static functions related to this MR when they can be static
    6c34d3e6
nr_ue_scheduler.c 147 KB