1. 12 Aug, 2024 4 commits
  2. 09 Aug, 2024 1 commit
  3. 08 Aug, 2024 1 commit
    • Raghavendra Dinavahi's avatar
      enable HARQ32, Changes in UE · dafaea7d
      Raghavendra Dinavahi authored
      	- num DL/UL harq processes, bits for harq id in DCIs, set according to IEs configured in RRC messages
      	- removed going through all the harq processes before triggering nr_ue_ulsch_procedures in phy_procedures_nr_ue.c
      	- did not remove usage of MAX_HARQ_PROCESSES in init phase
      dafaea7d
  4. 07 Aug, 2024 1 commit
    • Raghavendra Dinavahi's avatar
      enable HARQ32, Changes in gNB · 9726a47f
      Raghavendra Dinavahi authored
      	- Enabled configuration for number of dl, ul harq processes in conf file
      		- set "num_dlharq = 32; num_ulharq = 32;" under "gNBs" section in the conf file
      		- default values when not configured is 16 for DL, UL harq processes
      		- IEs in the RRC messages set according to the number of DL, UL harq processes configured.
      		- If value 32 is configured , then IEs related to num harq processes and dci bits also configured in Bandwidth parts.
      9726a47f
  5. 06 Aug, 2024 2 commits
    • Raghavendra Dinavahi's avatar
      enable HARQ32, Changes common to gNB and UE · e586efb2
      Raghavendra Dinavahi authored
      	- MAX HARQ PROCESSES set to 32
      	- for PDSCH - default setting in OAI is 16, according to 3GPP rel17 38.331 these are the possible configs
      		- if no IES are defined then 8
      		- if nrofHARQ-ProcessesForPDSCH is defined then these values-  {n2, n4, n6, n10, n12, n16}
      		- if nrofHARQ-ProcessesForPDSCH-v1700 is defined then 32
      		- for harq bits in DCI
      			- DCI 1_0 - 4 bits spec 38.212, section 7.3.1.2.1
      			- DCI 1_1 - 4/5 bits according to IE harq-ProcessNumberSizeDCI-1-1, spec 38.212, section 7.3.1.2.2
      	- for PUSCH - default setting in OAI is 16, according to 3GPP rel17 38.331 these are possible configs
                      - if no IES are defined then 16
                      - if nrofHARQ-ProcessesForPUSCH-v1700 is defined then 32
                      - for harq bits in DCI
                              - DCI 0_0 - 4 bits spec 38.212, section 7.3.1.1.1
                              - DCI 0_1 - 4/5 bits according to IE harq-ProcessNumberSizeDCI-0-1, spec 38.212, section 7.3.1.1.2
      	- FOR HARQ32 , DCI 1_1, DCI 0_1 should be configured in UE dedicated search space. In OAI it is set.
      e586efb2
    • Cedric Roux's avatar
      nr rlc: add a lock to protect access to time variables · b22891d4
      Cedric Roux authored
      ThreadSanitizer reported a data race, let's remove it.
      
      Here is the warning.
      
      WARNING: ThreadSanitizer: data race (pid=7361)
        Write of size 8 at 0x000003b42770 by thread T22 (mutexes: write M0):
          #0 nr_rlc_tick /home/richie/openairinterface5g/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c:1101 (nr-softmodem+0x107d275) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
          #1 gNB_dlsch_ulsch_scheduler /home/richie/openairinterface5g/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c:220 (nr-softmodem+0xaec72a) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
          #2 run_scheduler /home/richie/openairinterface5g/openair2/NR_PHY_INTERFACE/NR_IF_Module.c:406 (nr-softmodem+0xad8515) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
          #3 tx_func /home/richie/openairinterface5g/executables/nr-gnb.c:134 (nr-softmodem+0x7002cc) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
          #4 L1_tx_thread /home/richie/openairinterface5g/executables/nr-gnb.c:197 (nr-softmodem+0x7002cc)
      
        Previous read of size 8 at 0x000003b42770 by thread T2 (mutexes: write M1):
          #0 rlc_data_req /home/richie/openairinterface5g/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c:348 (nr-softmodem+0x1076f4e) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
          #1 rlc_data_req_thread /home/richie/openairinterface5g/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c:139 (nr-softmodem+0xa671ce) (BuildId: 291c846fc591e10c3838e9c53f4738997de8f984)
      b22891d4
  6. 05 Aug, 2024 12 commits
  7. 02 Aug, 2024 19 commits
    • Jaroslava Fiedlerova's avatar
    • Robert Schmidt's avatar
      Remove netlink_init.c, and move remaining functionality to tun_if.c · 168582b5
      Robert Schmidt authored
      Remove openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c, and move TUN
      interface creation functionality to tun_if.c.
      
      Remove SIMU_ETH target.
      168582b5
    • Robert Schmidt's avatar
      Create tun_if module for TUN interface handling · 89d89a75
      Robert Schmidt authored
      Move openair3/RRC/NAS/nas_config.c to common/utils/tun_if.c, and remove
      the former from all targets.
      89d89a75
    • Robert Schmidt's avatar
      Cleanup netlink_init.c and pdcp_fifo.c · 39e7839f
      Robert Schmidt authored
      - Remove globals, declare where they are used
      - Cleanup pdcp_fifo.c
      - Remove unnecessary headers from netlink_init.c
      - Reformat netlink_init.c
      39e7839f
    • Robert Schmidt's avatar
      Set up 4G UE addr via nas_config() · 3a99fb82
      Robert Schmidt authored
      3a99fb82
    • Robert Schmidt's avatar
      2e804f53
    • Robert Schmidt's avatar
      Handle IPv6/IPv4v6 PDU sessions · 659a8199
      Robert Schmidt authored
      Handle IPv6 (and IPv4v6) PDU sessions by correctly instructing
      nas_config() to set up the interface with provided IP addresses.
      Note that as of now, IPv6 PDU sessions have not been fully tested.
      
      Remove a useless assert at the gNB; to my understanding the gNB does not
      care about the IP session type (at least for IP), as it just
      transparently tunnels the IP packets from/to GTP.
      
      I added a comment in the code where to change to request a PDU session
      different from IPv4. Currently it is hardcoded to IPv4, and it seems
      that a default OAI 5GC config would reject a PDU session type different
      from IPv4.
      659a8199
    • Robert Schmidt's avatar
      Refactor change_interface_state() · d0f32d8a
      Robert Schmidt authored
      - Read interface flags before setting status to not inadvertently
        overwrite existing flags
      - Set interface flag point-to-point, remove multicast (I think a UE is
        not supposed to send anywhere else than to the UPF, so it seems to not
        make sense to declare the interface as multicast)
      d0f32d8a
    • Robert Schmidt's avatar
      nas_config(): change API to handle both IPv4 and IPv6 · ae5702d0
      Robert Schmidt authored
      Implement handling of IPv4 and IPv6 (on the same interface) in
      nas_config().
      ae5702d0
    • Robert Schmidt's avatar
      Reintroduce the IP rule&route for OAI UE through setup_ue_ipv4_route() · ffcf53fc
      Robert Schmidt authored
      These rules & route are necessary to properly send packets on oaitun_ue1
      interface:
      
      1. This forces the packets coming from a subnet different than the UE's
         subnet to go back through oaitun_ue1 rather than via what the default
         route defined on the system (e.g., important if ping from the
         internet arrives).
      
      2. On machines setting net.ipv4.conf.oaitun_ue1.rp_filter=1 (e.g.
         RHEL), this prevents that source filtering for packets coming back is
         applied and those packets be dropped. By default, many hosts have
         rp_filter=2, so no strict source filtering is applied, and it would
         work; on others, this rule prevents source filter dropping.
      ffcf53fc
    • Robert Schmidt's avatar
      nas_config(): provide entire IP address to configure · 2da09aba
      Robert Schmidt authored
      Prior to this commit, there was a global variable baseNetAddress that
      could be set independently through a setter and also through the
      configuration module. This baseNetAddress (16 bits IPv4) would then be
      complemented with two more bytes in nas_config().
      
      However, this is counter-productive, as not only we have a global
      variable that is avoidable (we can give the entire address to
      nas_config() directly), but it also would not work with IPv6. Hence,
      modify to give nas_config() the entire address. A follow-up commit will
      add IPv6 support.
      2da09aba
    • Robert Schmidt's avatar
      Refactor setInterfaceParameter() and bringInterfaceUp() · 2c878c10
      Robert Schmidt authored
      - refactor functions to make them shorter
      - provide doxygen strings
      - open socket for operation once instead of in each function
      - use named constant (from enum) to differentiate interface UP/DOWN
      - Linux kernel defines name length as IFNAM_SIZE, so use that for
        interface name length. Also, it seems no null-byte is needed.
      2c878c10
    • Robert Schmidt's avatar
      Remove netmask configuration and hardcode instead · e2163ba3
      Robert Schmidt authored
      I initially planned to entirely remove the netmask configuration.
      However, in specific configurations, e.g. in 4G Rfsim with feMBMS,
      routing does not seem to work anymore using these commands:
      
        iperf -B 10.0.2.2 -s -u -i1
        iperf -c 10.0.2.2 -B 10.0.2.1 -u -t 30 -b 2.00M -i1
      
      Therefore, we simplify by hardcoding the netmask to /24, which allows
      the above to work.
      e2163ba3
    • Robert Schmidt's avatar
      nas_config(): remove broadcast parameter · 5bf498fc
      Robert Schmidt authored
      Remove the broadcast address from the UE, as logically, a UE has nothing
      to broadcast: it can only directly talk to the core. Additionally, at
      least as of now, the UE interface is shown as "POINTOPOINT", so
      broadcasting is not possible.
      5bf498fc
    • Robert Schmidt's avatar
      Remove unused code from nas_config.c · 4810efdc
      Robert Schmidt authored
      Remove unused header includes, as well as the test program (which does
      not do much, and certainly does not test in the way we use the
      interfaces).
      4810efdc
    • Robert Schmidt's avatar
      Remove nas_config_mbms() · 9fedbf31
      Robert Schmidt authored
      Remove nas_config_mbms() since nas_config_mbms() and nas_config() do the
      same
      9fedbf31
    • Robert Schmidt's avatar
      Remove routing table init in nas_config() · 380cf5c6
      Robert Schmidt authored
      The routing table is temporarily removed in this commit and introduced
      in one of the next commits.
      380cf5c6
    • Robert Schmidt's avatar
      nas_config_mbms/netlink_init_mbms_tun(): use entire interface prefix · a12460e8
      Robert Schmidt authored
      Does the same change in the _mbms() functions as in the previous commit.
      
      Also, simplify logic in netlink_init_mbms_tun(): directly use the id in
      the interface. This requires a slight ID change in the users, which is
      also done in this commit.
      a12460e8
    • Robert Schmidt's avatar
      nas_config()/netlink_init_tun(): use entire interface name (prefix) · 5acfa473
      Robert Schmidt authored
      Instead of implicitly using a hardcoded prefix "oaitun_" interface
      name, move that out to the callers of these functions to make it clear.
      The ID still remains outside.
      
      The "sister functions" nas_config_mbms()/netlink_init_tun_mbms() will do
      the same change in the next commit.
      5acfa473