Commit Graph
72 Commits
Author SHA1 Message Date
Michael Cook 589033f4b4 Change some LOG_I's to LOG_A's
Our proxy_testscript.py expects these specific log messages to be
logged as LOG_A
2021-11-26 09:16:38 -08:00
Michael Cook afeb5f4de2 Fix warning about unused variable off
It's used only if LOG_M is enabled.
2021-11-14 06:29:24 -08:00
Michael Cook 69fc902b52 Set alarm 2021-10-18 22:04:19 +00:00
Michael Cook 6b5bfed9b8 open-nFAPI: Remove carriage returns
Remove the problematic carriage returns from three nfapi source
files.

Only whitespace changes in this commit.

```
dos2unix open-nFAPI/*/src/*.c
```
2021-10-03 06:49:13 -07:00
Michael Cook d768522466 Be more careful about buffer sizes 2021-08-23 21:06:09 +00:00
Michael Cook 102ff853ec Separate nfapi.conf files for proxy
In scripts/conf_files, restore ue.nfapi.conf and nr-ue.nfapi.conf
to the template versions.  And add proxy_ue.nfapi.conf
proxy_nr-ue.nfapi.conf for use with emane.git's run-oai and
multi-ue-proxy.git's run-oai.
2021-07-17 07:52:49 -07:00
Michael Cook 9ac2d7724d Merge remote-tracking branch 'origin/episys/x2_trigger_nsa' into episys/sync-nfapi-with-muep-more 2021-06-28 17:44:21 -04:00
Michael Cook cf4758a742 Merge remote-tracking branch 'origin/episys/x2_trigger_nsa' into episys/sync-nfapi-with-muep-more 2021-06-28 17:40:00 -04:00
Michael Cook 4fb933cbdf Copy review feedback from multi-ue-proxy.git 2021-06-28 17:39:16 -04:00
Michael Cook e54896591b Sync more NFAPI changes from multi-ue-proxy.git
Most notably, nfapi_rx_indication_pdu_t.data type is changed from
`uint8_t*` to `uint8_t[]`.  Also, renamed from `data` to
`rx_ind_data` to make it easier to find.
2021-06-26 10:20:48 -07:00
Michael Cook 9a0926bdee Sync nfapi_p[57].c with multi-ue-proxy.git
These are all superficial, low-risk changes
2021-06-26 09:08:54 -07:00
Michael Cook 96efbb2cab Add -Werror compiler option
Fix some warnings, too.
2021-06-21 14:11:53 -07:00
Michael Cook 7224adba65 Fix spelling: parced -> parsed 2021-05-23 11:52:03 -04:00
Michael Cook 16ba3194c7 Fix warning about uninitialized variable 2021-05-23 08:20:17 -07:00
Michael Cook 9ac06d4b3a Fix warning about log message argument type 2021-05-16 05:44:25 -07:00
Michael Cook 2f4767a7d4 build_oai: Add --sanitize-address option
To enable -fsanitize=address option to the compiler
which enables run-time checks for some kinds of memory
mismanagement.
2021-03-20 10:53:34 -04:00
Michael Cook 8120c7978c Merge branch 'episys-merge-future' into episys/master 2021-03-14 09:17:34 -07:00
Michael Cook bd0359c3bd Enable assert for RelWithDebInfo builds
assert() statements were enabled for C code but disabled for C++
code.  With this commit, assert() is enabled for both C and C++
for RelWithDebInfo builds.
2021-03-14 09:13:50 -07:00
Michael Cook 176a52f581 pnf.c: Disable some printfs 2021-03-14 08:44:42 -07:00
Michael Cook 39fbe322aa Fix #include 2021-03-14 10:59:05 -04:00
Michael Cook 092caec8ca Merge branch 'episys-merge' into episys/trial-merge-to-master 2021-03-14 10:58:46 -04:00
Michael Cook c5ff3376ef Size asserts for harq_pdu_list, sr_pdu_list, cqi_pdu_list 2021-03-13 11:56:55 -08:00
Michael Cook 6d2590906c Assert NFAPI_CRC_IND_MAX_PDU 2021-03-13 10:58:33 -08:00
Michael Cook df81c0de14 Add asserts for size of rx_indication_body.rx_pdu_list 2021-03-13 10:26:33 -08:00
Michael Cook b726053982 find_ulsch: Skip past null uslch[i]
With a small number of runs with 16 UEs, I've seen this
AssertFatal fail twice.

There are many other places in the code that simply skip over
ulsch[i] values that are NULL.
2021-03-13 10:24:00 -08:00
Michael Cook 27c40d563f build_oai: Add --sanitize-address option
To enable -fsanitize=address option to the compiler
which enables run-time checks for some kinds of memory
mismanagement.
2021-03-01 09:10:50 -08:00
Michael Cook 8988d8ef8c Revert change that enabled -fsanituze=address 2021-03-01 08:26:59 -08:00
Michael Cook 034d2cfed6 lte-ue.c: Allocate bigger arrays
This code allocates memory from the heap:

```
static void *UE_phy_stub_standalone_pnf_task(void *arg)
{
...
  UL_INFO->crc_ind.crc_indication_body.crc_pdu_list =
  calloc(NB_UE_INST, sizeof(nfapi_crc_indication_pdu_t));
```

I see NB_UE_INST==1.

Then this code:

```
void fill_crc_indication_UE_MAC(int Mod_id,
                                int frame,
                                int subframe,
                                UL_IND_t *UL_INFO,
                                uint8_t crc_flag,
                                int index,
                                uint16_t rnti,
                                nfapi_ul_config_request_t
                                *ul_config_req) {
...
  nfapi_crc_indication_pdu_t *pdu =
      &UL_INFO->crc_ind.crc_indication_body
           .crc_pdu_list[UL_INFO->crc_ind.crc_indication_body.number_of_crcs];
```

used .number_of_crcs to index into .crc_pdu_list without first
checking if .number_of_crcs is in range.

When run with multiple UEs, sometimes .number_of_crcs==1 and then
-fsanitize=address complains.

Change is to use NUMBER_OF_UE_MAX instead of NB_UE_INST.

With this change, -fsanitize=address stopping complaining.
2021-02-28 09:45:31 -08:00
Michael Cook 11270af81e eNB_scheduler_ulsch.c: Range checking on array access
-fsanitize=address complained about this code.
2021-02-28 09:29:29 -08:00
Michael Cook 706f0e4421 pdcp_fifo_flush_sdus: Fix message size calculation
-fsanitize=address detected that we were trying to access bytes
past the end of a block of malloc'ed memory.

Specifically, in this code:

```
    } else if (ENB_NAS_USE_TUN) {
      if( LOG_DEBUGFLAG(DEBUG_PDCP) )
        log_dump(PDCP, pdcpData, sizeToWrite, LOG_DUMP_CHAR,"PDCP
      output to be sent to TUN interface: \n");
      ret = write(nas_sock_fd[0], pdcpData, sizeToWrite);
```

-fsanitize=address said:

```
==80==ERROR: AddressSanitizer: heap-buffer-overflow on address
0x61100004ffdc at pc 0x7f57c5f576a5 bp 0x7f57bb53c240 sp
0x7f57bb53b9e8
READ of size 108 at 0x61100004ffdc thread T7

0x61100004ffdc is located 0 bytes to the right of 220-byte region
[0x61100004ff00,0x61100004ffdc)
```

So, the code was trying to access the first byte after a block of
heap memory.

sizeToWrite was calculated like this:

```
    int sizeToWrite= sizeof (pdcp_data_ind_header_t) +
      pdcpHead->data_size;
```

There were a few other similar invocations of write() in the same
function used the wrong size.  That sizeToWrite calculation
should be used only when the header is being sent, too, which
happens in only one place in this function.

With this commit, our tests pass and -fsanitize=address is happy.
2021-02-28 07:39:33 -08:00
Michael Cook b6766ee8ae decode_SIB1: Was reading past the end of plmn_data
Found by -fsanitize=address
2021-02-27 09:29:09 -08:00
Michael Cook d8a7414e48 eNB_scheduler_mch.c: Memory corruption
The global mbms_rab_id was defined as `uint16_t` in
eNB_scheduler_mch.c but `int` in other places.  So, code that
wrotes this global would clobber the two bytes that follow the
variable in memory.

Found by `-fsanitize=address`.
2021-02-27 09:16:27 -08:00
Michael Cook 414d3794fd netlink_init.c: Memory leak
Found by `-fsanitize=address`.
2021-02-27 09:15:38 -08:00
Michael Cook 2520d111da Fix shutdown crashes
In phy_free_lte_eNB in lte_init.c, the lte-uesoftmodem would
crash during shutdown because it was dereferencing null pointers.
This commit adds checks to avoid that.
2021-02-27 07:20:43 -08:00
Michael Cook eec846a555 Merge branch 'episys/mel/pdcp_write_update' into 'episys/master'
Episys/mel/pdcp write update

See merge request aburger/openairinterface5g!26
2021-02-12 08:59:00 -08:00
Michael Cook 181ae665bd Merge branch 'episys/mel/pdcp_socket_update' into 'episys/master'
Episys/mel/pdcp socket update

See merge request aburger/openairinterface5g!25
2021-02-09 14:09:39 -08:00
Michael Cook 02571e63bb gdb.txt: Linux versions should be the same 2021-01-24 12:38:15 -05:00
Michael Cook 563064ce0b gdb.txt: Notes on loading coredump files into Vscode 2021-01-24 12:27:20 -05:00
Michael Cook 06db0b7730 Merge branch 'episys/mel/fixing_harq_ack_nack' into 'episys/master'
Sending ACK or NACK for uci_harq_ind fix

See merge request aburger/openairinterface5g!23
2021-01-18 13:37:49 -08:00
Michael Cook 5fef878293 gdb.txt: Running Vscode remotely 2021-01-17 12:32:27 -05:00
Michael Cook 12d41fdf72 Merge branch 'episys/oai_home_update' into 'episys/master'
Episys/oai home update

See merge request aburger/openairinterface5g!22
2021-01-14 16:14:38 -08:00
Michael Cook 0b7452a6e4 Merge branch 'episys/Initial_ChannelModel' into 'episys/master'
Episys/initial channel model

See merge request aburger/openairinterface5g!21
2021-01-14 15:53:07 -08:00
Michael Cook ee86a66722 Merge commit '0b40edef2adc45965dcfe2071b0c4170389ae8b5' into episys/master 2021-01-12 18:11:10 -05:00
Michael Cook 0b40edef2a Merge branch 'episys/david/proxy_oai' into 'episys/master'
Updating for operation with Proxy

See merge request aburger/openairinterface5g!18
2021-01-12 14:45:52 -08:00
Michael Cook 355e5919de Merge branch 'episys/mel/nfapi_mode_logic' into 'episys/master'
Episys/mel/nfapi mode logic

See merge request aburger/openairinterface5g!19
2021-01-12 08:55:03 -08:00
Michael Cook f9898d97e8 gdb.txt: Refine
Based on issues discovered by Zaid
2020-12-29 16:04:21 -05:00
Michael Cook b10cc9eb38 Merge branch 'episys/temp_merge_req' into 'episys/master'
Select fair RR packet scheduler

See merge request aburger/openairinterface5g!16
2020-12-23 09:31:47 -08:00
Michael Cook 1a3ef7ab8c rrc_UE.c: Log the initial random values 2020-12-23 11:58:24 -05:00
Michael Cook 380de1761c taus.c: Make globals static 2020-12-23 11:57:58 -05:00
Michael Cook a0ddf3b015 Run lte-softmodem via gdb and vscode
See cmake_targets/gdb.txt for notes
2020-12-22 08:13:53 -05:00
Michael Cook 53cb3e25a9 Merge branch 'episys/andrew/fixing_multiue_config' into 'episys/master'
Episys/andrew/fixing multiue config

See merge request aburger/openairinterface5g!15
2020-12-01 13:39:05 -08:00
Michael Cook e5fac31f2f Merge branch 'episys/mcook-log-scheduler' into 'episys/master'
Log the processor info like scheduler policy

See merge request aburger/openairinterface5g!14
2020-11-23 15:06:55 -08:00
Michael Cook 1687896730 Log the processor info like scheduler policy
And CPU affinity.
Also, use mlockall to keep our memory from being swapped out.
2020-11-22 13:50:35 -05:00
Michael Cook f13875b141 Merge branch 'episys/foobar' into 'episys/master'
Dl_config_req and tx_req filtering allowed for either order

See merge request aburger/openairinterface5g!13
2020-11-20 16:04:14 -08:00
Michael Cook b209f2ff23 Merge branch 'episys/andrew/dl_config+tx_req_combination' into 'episys/master'
Episys/andrew/dl config+tx req combination

See merge request aburger/openairinterface5g!12
2020-11-20 15:06:30 -08:00
Michael Cook b6b9f25082 Merge branch 'episys/andrew/dci0_filtering' into 'episys/master'
Episys/andrew/dci0 filtering

See merge request aburger/openairinterface5g!10
2020-11-16 15:33:50 -08:00
Michael Cook 4ad7d7b5f6 Merge branch 'episys/andrew/dlsch_pdu_index_bug_fix' into 'episys/master'
Episys/andrew/dlsch pdu index bug fix

See merge request aburger/openairinterface5g!9
2020-11-13 14:11:35 -08:00
Michael Cook 3011e229d4 Merge branch 'episys/andrew/fixing_s1_mode+change_to_shutdown' into 'episys/master'
This commit includes:

See merge request aburger/openairinterface5g!7
2020-11-04 14:29:07 -08:00
Michael Cook 6dd80ffd2f queue: add requeue, fix unqueue_matching
Synchronized with emane.git's implementation of this code which
includes a unit test.

This commit also fixes two bugs in unqueue_matching and one inb
unqueue:

- unqueue_matching was returning the wrong pointer when
  there was no match

- both unqueue_matching and unqueue were not clearing the vacated
  queue entry after removing the item
2020-10-20 09:04:23 -04:00
Michael Cook d449a4de8a Align thread priorities
```
$ ps -eL -o pid,lwp,class,priority,comm | grep -E softmodem|oai:'
 6500  6500 RR  -80 lte-softmodem
 6500  6520 RR  -80 oai:enb-L1-rx
 6500  6522 RR  -80 oai:enb-L1-tx
 6508  6508 RR  -80 lte-uesoftmodem
 6508  6537 RR  -80 oai:ue-phy
 6508  6538 RR  -80 oai:ue-stand
 6509  6509 RR  -80 lte-uesoftmodem
$
```
2020-10-18 12:11:10 -04:00
Michael Cook d61bb9836c Merge branch 'episys/andrew/dropping_dl_config_req_and_tx_req' into 'episys/master'
Episys/andrew/dropping dl config req and tx req

See merge request aburger/openairinterface5g!3
2020-10-14 14:52:25 -07:00
Michael Cook ee8781f7e1 Support for using gprof profiling 2020-10-11 12:31:40 -04:00
Michael Cook 7d0497ca80 Fix a compiler warning 2020-10-11 11:02:47 -04:00
Michael Cook 79ba247fe6 Catch SIGTERM and attempt to exit cleanly
This change is to enable use of gprof which requires the process
call `exit` to write out the collected data.

The UE (lte-uesoftmodem) exits cleanly, but the eNB
(lte-softmodem) crashes as it tries to shut down...
2020-10-11 10:22:24 -04:00
Michael Cook f4fc89bce8 Uninitialized memory
Found by valgrind
2020-10-10 12:06:32 -04:00
Michael Cook da81c6f97b Fix uninitialized memory
Found by valgrind
2020-10-10 11:56:55 -04:00
Michael Cook 870465e0a9 Fix numerous uninitialized memory issues
Found by valgrind.
2020-10-10 11:00:38 -04:00
Michael Cook 920fde6a69 Fix a compiler warning 2020-10-10 11:00:19 -04:00
Michael Cook f489a751b9 Fix memcpy with overlapping memory
Found by valgrind.
2020-10-10 10:40:26 -04:00
Michael Cook a0797e76c4 Use LOG_A for lte_timing_analysis.py 2020-09-06 11:29:39 -07:00
Michael Cook 1f771f74a2 Change some printf statements to LOG_I
The printfs were mangling the log.
2020-09-06 10:45:03 -07:00
Michael Cook 3a2e4a3189 Use LOG_A for log messages intended for analysis
This change allows us to disable the LOG_I messages to reduce
overhead.

Removed LOG_VAR macro because it was used in only one place, and
a better solution is to simply use `__attribute__((unused))`.
2020-09-06 07:54:56 -07:00