Commit 627e60f5 authored by Robert Schmidt's avatar Robert Schmidt
Browse files

Merge branch 'integration_2025_w23' into 'develop'

Integration: `2025.w23`

Closes #962, #956, and #801

See merge request !3464

* !3302 Enhance UE identity management in Initial UE Message and other NGAP improvements
* !3400 T bugfix: check input data a bit better
* !3459 Improvements in NR band tables according to Rel.17
* !3465 Fix checking that amf_ip_address section is not set.
* !3463 Move RRC radio parameters file to DU
* CI: Use host network mode in NSA-B200 pipeline
* !3389 Relax NR_UE_CAPABILITY_SLOT_RX_TO_TX asserts
* !3417 Imscope updates
* !3443 Fix data race in NR UE MSG3 scheduling
* !3467 remove dead globals
parents bab05384 a0578a52
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1147,7 +1147,6 @@ set(L2_NR_SRC
  ${NR_RRC_DIR}/rrc_gNB.c
  ${NR_RRC_DIR}/mac_rrc_dl_direct.c
  ${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
  ${NR_RRC_DIR}/nr_rrc_config.c
  ${NR_RRC_DIR}/rrc_gNB_nsa.c
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
  ${NR_RRC_DIR}/rrc_gNB_NGAP.c
@@ -1230,6 +1229,7 @@ set (MAC_NR_SRC
  ${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
  ${NR_GNB_MAC_DIR}/nr_radio_config.c
 )


+3 −3
Original line number Diff line number Diff line
@@ -169,10 +169,10 @@ gNBs =

    NETWORK_INTERFACES :
    {
      GNB_IPV4_ADDRESS_FOR_S1_MME    = "192.168.68.194";
      GNB_IPV4_ADDRESS_FOR_S1U       = "192.168.68.194";
      GNB_IPV4_ADDRESS_FOR_S1_MME    = "172.21.16.109";
      GNB_IPV4_ADDRESS_FOR_S1U       = "172.21.16.109";
      GNB_PORT_FOR_S1U               = 2152; # Spec 2152
      GNB_IPV4_ADDRESS_FOR_X2C       = "192.168.68.194";
      GNB_IPV4_ADDRESS_FOR_X2C       = "172.21.16.109";
      GNB_PORT_FOR_X2C               = 36422; # Spec 36422
    };

+1 −12
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ services:
            - IPC_LOCK
        ulimits:
          core: -1 # for core dumps
        network_mode: "host"
        environment:
            USE_B2XX: 'yes'
            USE_ADDITIONAL_OPTIONS: --nsa -E -q --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function
@@ -16,9 +17,6 @@ services:
            - /dev/bus/usb/:/dev/bus/usb/
        volumes:
            - ../../conf_files/gnb.nsa.band78.106prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
        networks:
            public_net:
                ipv4_address: 192.168.68.194
        #entrypoint: /bin/bash -c "sleep infinity"
        healthcheck:
            # pgrep does NOT work
@@ -26,12 +24,3 @@ services:
            interval: 10s
            timeout: 5s
            retries: 5

networks:
    public_net:
        name: nsa-b200-gnb-net
        ipam:
            config:
                - subnet: 192.168.68.192/26
        driver_opts:
            com.docker.network.bridge.name: "nsa-gnb-net"
+10 −0
Original line number Diff line number Diff line
@@ -35,6 +35,16 @@ typedef struct nssai_s {
  uint32_t sd;
} nssai_t;

// Globally Unique AMF Identifier
typedef struct nr_guami_s {
  uint16_t mcc;
  uint16_t mnc;
  uint8_t mnc_len;
  uint8_t amf_region_id;
  uint16_t amf_set_id;
  uint8_t amf_pointer;
} nr_guami_t;

typedef enum { NON_DYNAMIC, DYNAMIC } fiveQI_t;

#endif
+20 −1
Original line number Diff line number Diff line
@@ -24,9 +24,11 @@ event get_event(int socket, OBUF *event_buffer, void *database)
again:
  if (fullread(socket, &length, 4) == -1) goto read_error;
#ifdef T_SEND_TIME
  if (length < sizeof(struct timespec)) goto error;
  if (fullread(socket, &t, sizeof(struct timespec)) == -1) goto read_error;
  length -= sizeof(struct timespec);
#endif
  if (length < sizeof(int)) goto error;
  if (fullread(socket, &type, sizeof(int)) == -1) goto read_error;
  length -= sizeof(int);
  if (event_buffer->omaxsize < length) {
@@ -48,6 +50,9 @@ again:
  return new_event(type, length, event_buffer->obuf, database);
#endif

error:
  printf("error: bad data in get_event()\n");

read_error:
  return (event){.type = -1};
}
@@ -64,6 +69,9 @@ event new_event(int type, int length, char *buffer, void *database)
  int i;
  int offset;

  /* arbitrary limit to 1GiB (to simplify size checks) */
  if (length < 0 || length > 1024 * 1024 * 1024) goto fatal;

#ifdef T_SEND_TIME
  e.sending_time = sending_time;
#endif
@@ -87,26 +95,33 @@ event new_event(int type, int length, char *buffer, void *database)
  for (i = 0; i < f.count; i++) {
    //e.e[i].offset = offset;
    if (!strcmp(f.type[i], "int")) {
      if (offset + 4 > length) goto fatal;
      e.e[i].type = EVENT_INT;
      e.e[i].i = *(int *)(&buffer[offset]);
      offset += 4;
    } else if (!strcmp(f.type[i], "ulong")) {
      if (offset + sizeof(unsigned long) > length) goto fatal;
      e.e[i].type = EVENT_ULONG;
      e.e[i].ul = *(unsigned long *)(&buffer[offset]);
      offset += sizeof(unsigned long);
    } else if (!strcmp(f.type[i], "float")) {
      if (offset + sizeof(float) > length) goto fatal;
      e.e[i].type = EVENT_FLOAT;
      e.e[i].f = *(float *)(&buffer[offset]);
      offset += sizeof(float);
    } else if (!strcmp(f.type[i], "string")) {
      if (offset + 1 > length) goto fatal;
      e.e[i].type = EVENT_STRING;
      e.e[i].s = &buffer[offset];
      while (buffer[offset]) offset++;
      while (offset < length && buffer[offset]) offset++;
      if (offset == length) goto fatal;
      offset++;
    } else if (!strcmp(f.type[i], "buffer")) {
      if (offset + sizeof(int) > length) goto fatal;
      int len;
      e.e[i].type = EVENT_BUFFER;
      len = *(int *)(&buffer[offset]);
      if (len <= 0 || offset + len + sizeof(int) > length) goto fatal;
      e.e[i].bsize = len;
      e.e[i].b = &buffer[offset+sizeof(int)];
      offset += len+sizeof(int);
@@ -119,4 +134,8 @@ event new_event(int type, int length, char *buffer, void *database)
  if (e.ecount==0) { printf("FORMAT not set in event %d\n", type); abort(); }

  return e;

fatal:
  printf("fatal: bad buffer in new_event\n");
  abort();
}
Loading