1. 04 Dec, 2023 4 commits
  2. 30 Nov, 2023 18 commits
    • Robert Schmidt's avatar
      Correctly read node_id (gNB ID) for RRC · 8e990850
      Robert Schmidt authored
      The node ID (which corresponds to the gNB ID) should be read in all
      cases of execution, not only CU.
      8e990850
    • Robert Schmidt's avatar
      Bugfix: set pointer to NULL after free · 72b485a2
      Robert Schmidt authored
      72b485a2
    • Robert Schmidt's avatar
      6104dbc7
    • Robert Schmidt's avatar
      Remove confusing macrlc_has_f1 variable · 39df275f
      Robert Schmidt authored
      The macrlc_has_f1 (static) variable was introduced to signal when we use
      F1 in the configuration. It is superfluous: the node_type already passes
      this information in a unique manner; hence, remove.
      39df275f
    • Robert Schmidt's avatar
      Build E2 agent in Ubuntu images · aec6170d
      Robert Schmidt authored
      aec6170d
    • Robert Schmidt's avatar
    • Robert Schmidt's avatar
      Reformat Dockerfile.build.ubuntu20 · 107c0c8d
      Robert Schmidt authored
      107c0c8d
    • Robert Schmidt's avatar
      E2 Agent: Match UEs based on NSSAI · e13a4813
      Robert Schmidt authored
      Correctly match UEs based on the NSSAI in MAC and RRC. There is a
      convenience function capture_sst_sd() that extracts SST and SD (which
      form the NSSAI). Because a previous version used integers to convey the
      slice identifier, this function gracefully handles this case, although
      it is not spec-compliant.
      e13a4813
    • Robert Schmidt's avatar
      E2 agent: fix memory leak by not allocating memory · 89b77692
      Robert Schmidt authored
      Prior to this commit, the RAN function for KPM is leaking memory: it
      allocates using calloc() but never frees it.
      
      The fix consists of not allocating this memory on the heap in the first
      place, but on the stack. Therefore, there are changes to pass in a
      pointer to various functions to the structure on the stack, instead of
      passing the "container" for the heap memory by value.
      
      Further, the MAC was allocating an excessive amount of memory (N times
      sizeof(NR_UE_info_t)). Instead of copying the entire struct, the present
      code stores a pointer to the MAC UE container (NR_UE_info_t *). For the
      RRC, there is a similar simplification that consists in not storing the
      entire struct f1_ue_data_t (which is not required), but only the RRC UE
      ID.
      
      Note that both MAC and RRC might suffer from race conditions. For the
      MAC, we should lock the scheduler for the time we read statistics. For
      the RRC, the problem is more delicate as no mutex exists; the RRC
      assumes everything is executed synchronously in the ITTI task loop. In
      both cases, this commit does not address this problem
      89b77692
    • Robert Schmidt's avatar
      E2 agent: remove broken NSSAI filtering, simplify code · 5168ef72
      Robert Schmidt authored
      Filtering UEs by NSSAI is broken, so remove it. A later commit will
      reestablish this functionality.
      
      Simplify the code: we only handle one condition, so we can check for it
      upfront.
      5168ef72
    • Robert Schmidt's avatar
      deac1802
    • Robert Schmidt's avatar
      Start E2 agent only if configuration present · 7c6c4fc7
      Robert Schmidt authored
      This commit introduces an additional (implicit) option that signals if
      the E2 agent is to be activated or not. When reading the configuration,
      we now check if all fields are set, and activate the E2 agent only if
      this is the case. If not, we only print a warning and start the gNB
      without the agent.
      
      Note that previously, if not all fields are set correctly, the gNB
      stopped.
      
      To implement this behavior, it is necessary to change the defaults of
      the RIC IP and the directory for SMs to a (non-NULL) default value.
      Otherwise, the configuration system would not consider the field to be
      set to the default, and wrongly assumes the field is set, even though it
      is not; at least, this change is necessary to make config_isparamset()
      return NULL if the configuration is not set.
      7c6c4fc7
    • Robert Schmidt's avatar
      Introduce separate gNB-CU-UP ID in configuration · 79c920cd
      Robert Schmidt authored
      3GPP has the concept of a gNB-CU-UP ID and a (separate) gNB ID (for gNB,
      CU-CP). This commit introduces the gNB-CU-UP as a separate ID that has to be
      set in the configuration file when running as a CU-UP. For the
      CU/monolithic gNB, it is optional (but needs to be the same as the
      gNB-ID if specified).
      
      The CU-UP ID is necessary, as some entities, e.g., the e2 agent, need to
      signal both IDs, e.g., to reconcile a CU-CP and (multiple) CU-UP(s)
      belonging together.
      79c920cd
    • Robert Schmidt's avatar
      Introduce separate gNB-DU ID in configuration · 6f14b118
      Robert Schmidt authored
      3GPP has the concept of a gNB-DU ID and a (separate) gNB ID (for gNB,
      CU). This commit introduces the gNB-DU as a separate ID that has to be
      set in the configuration file. It is necessary, as some entities, e.g.,
      the e2 agent, need to signal both IDs, e.g., to reconcile a CU and
      (multiple) DU(s) belonging together.
      6f14b118
    • Robert Schmidt's avatar
      ec24b9c3
    • Robert Schmidt's avatar
      Remove redundant config code block · 463115bf
      Robert Schmidt authored
      463115bf
    • Robert Schmidt's avatar
      6a91f49e
    • Robert Schmidt's avatar
      b5e2c76d
  3. 29 Nov, 2023 7 commits
  4. 28 Nov, 2023 11 commits