1. 16 Feb, 2017 1 commit
    • Cedric Roux's avatar
      bugfix: fix PCDP inst (again) · 6397e66c
      Cedric Roux authored
      This commit follows 7d9945e8.
      
      lte-softmodem UE in S1 and lte-softmodem UE in noS1 modes behave
      differently here.
      
      This commit fixes the issue for thoses cases.
      
      Other cases (eNB S1, eNB noS1, oaisim S1/noS1) have to be checked.
      6397e66c
  2. 15 Feb, 2017 1 commit
    • Cedric Roux's avatar
      bugfix: fix PDCP inst · 7d9945e8
      Cedric Roux authored
      This commit is a continuation of 614d6bbe
      (ue_ip: use correct instance).
      
      Now in openair2/NETWORK_DRIVER/UE_IP/common.c the 'inst' is not
      forced to 1 anymore, we take the value 'pdcph_p->inst'.
      
      It turns out that 'pdcph_p->inst' is 0 instead of 1 when we
      run lte-softmodem as an UE.
      
      So let's modify PDCP to set 'inst' to 1 where it was set to 0 for
      the UE softmodem case, and skip the places where it is reset to 0,
      still for the UE softmodem case.
      
      This may break things, I am not sure.
      7d9945e8
  3. 14 Feb, 2017 2 commits
    • Cedric Roux's avatar
      minor: add a comment · 6c789a36
      Cedric Roux authored
      6c789a36
    • Cedric Roux's avatar
      ue_ip: use correct instance · 614d6bbe
      Cedric Roux authored
      The problem was the following.
      
      Run oaisim with two UEs:
      
          sudo ../cmake_targets/oaisim_build_oai/build/oaisim -O enb.conf -u2 -s15 -AAWGN -y1 -b1 -Q0
      
      Then wait for both UEs to be connected. The interfaces "oip1" and "oip2" are
      activated, with IP addresses 192.172.0.2 for the first UE and 192.172.0.3 for
      the second.
      
      Then on the EPC machine, do:
      
          ping 192.172.0.3
      
      No reply.
      On the oaisim machine, we see that the packets are sent to "oip1" instead
      of "oip2".
      
      The fix may break softmodem UE. The inst was forced to "1" for some reason.
      To be checked.
      614d6bbe
  4. 25 Jan, 2017 6 commits
  5. 20 Jan, 2017 12 commits
    • Cedric Roux's avatar
      add some printf for debug purpose (to be remove at some point) · a0f19a72
      Cedric Roux authored
      this commit is here to help debug the previous ones.
      
      It has to be reverted at some point.
      a0f19a72
    • Cedric Roux's avatar
      check (to be reworked at some point) · a6219153
      Cedric Roux authored
      We put an abort() at this point in the code, because
      if the previous commit is correct, the program will
      never comme here.
      a6219153
    • Cedric Roux's avatar
      rewrite sort_UE for UL and DL and adapt the rest to the change · da75a078
      Cedric Roux authored
      The previous version did not seem to work properly with
      several UEs. I too often ended up with a list 'next' where
      next[i] = i, leading to an infinite loop, crashing the
      processing.
      
      The sorting functions were hard to understand and too slow
      anyway (O(n*n)).
      
      We now use qsort_r and comparison functions, that should
      define the same order as the previous version.
      
      One important point is that the "next" lists and the "head"
      variable are now considered invalid before calling sort_UE.
      
      So all the code (coming before sort_UE) that looped using those
      variables has been rewritten to loop over all possible UEs and
      the first instruction of the loop is to exit the loop if the UE
      is not 'active'. There is room for improvement here. We will
      reintroduce a list of some kind at some point. Let's first
      have something that works and then optimize. Today NUMBER_OF_UE_MAX
      is 16, that's not a big deal.
      
      Consequently, the add_new_ue and rrc_mac_remove_ue have also
      been rewritten, hopefully for the better.
      
      This commit is not a basic work and may introduce some
      problems.
      da75a078
    • Cedric Roux's avatar
      better (maybe) freeing of RA process when an UE is removed from MAC · c824eea0
      Cedric Roux authored
      The RA process may be in the state:
      RA_active == FALSE and wait_ack_Msg4 == 1
      
      Testing only the rnti should be enough, if everything else works
      properly.
      
      Also, don't break, just in case. (Not sure it makes a
      difference.)
      c824eea0
    • Cedric Roux's avatar
      c3c2b774
    • Cedric Roux's avatar
      add a LOG in RA · 0d3fa211
      Cedric Roux authored
      0d3fa211
    • Cedric Roux's avatar
      fix: better creation of RNTI · 428c2212
      Cedric Roux authored
      The previous version was calling taus(), which
      may return any value in [0..65535].
      
      The new version restricts it to [1024..59999]
      (arbitrary values, big enough, and in the valid range).
      
      It also checks that the new RNTI is not already present
      in the MAC.
      
      I think we should also check that it's not used by a RA
      process.
      
      The "loop" thing may not be the best solution either.
      
      To be refined.
      428c2212
    • Cedric Roux's avatar
      RA: fix allocation of RA process · c1fee624
      Cedric Roux authored
      A RA process is not available if
      and RA_template[i].wait_ack_Msg4 != 0
      
      We can have RA_active==FALSE and wait_ack_Msg4==1,
      in which case the RA process is in use and cannot
      be reassigned.
      c1fee624
    • Cedric Roux's avatar
      "fix" handling of UE_id in RA. · a5d5a21d
      Cedric Roux authored
      What if it's -1? Is it possible?
      We catch the case and abort.
      
      We may do a proper fix if the case happen.
      I don't think it will, but who knows...
      a5d5a21d
    • Cedric Roux's avatar
      attempting at fixing RRC · 89445da9
      Cedric Roux authored
      RRC does not work very well when one UE goes away and comes
      back in some situations.
      
      This commit is an attempt at making things work better.
      
      It is probably not the end of the story.
      89445da9
    • Cedric Roux's avatar
      bugfix: logging was done after modification of values · c33afccb
      Cedric Roux authored
      It resulted in wrong log message, leading to complicated
      debugging.
      c33afccb
    • Cedric Roux's avatar
      2a1d1134
  6. 19 Jan, 2017 6 commits
    • Cedric Roux's avatar
      2c578f35
    • Cedric Roux's avatar
      remove printing of UE capabilities on stdout · 390085c3
      Cedric Roux authored
      Modern UEs have very long UE capabilities.
      It disrupts realtime behaviour of the modem.
      
      Let's put a simple log message indicating we got the
      UE capabilities.
      390085c3
    • nikaeinn's avatar
      27a1101a
    • Cedric Roux's avatar
      hack to avoid zombie UEs in the MAC layer · 5933f218
      Cedric Roux authored
      Here is the problem:
          Sometimes the UE has no PHY context but
          is still present in the MAC with 'ul_failure_timer' = 0 and
          'ul_out_of_sync' = 0. It seems wrong and the UE stays there forever. Let's
          start an UL out of sync procedure in this case.
          The root cause of this problem has to be found and corrected.
          In the meantime, this hack...
      
      This has to be redone at some point.
      5933f218
    • Cedric Roux's avatar
      hack in RLC AM to avoid a race · 38b38779
      Cedric Roux authored
      Here is the problem:
          UE comes. SRB2 is configured via message to RRC.
          At some point the RLC AM is created but not configured yet.
          At this moment (I think) MAC calls mac_rlc_status_ind
          which calls this function. But the init was not finished yet
          and we have a crash below when testing mem_block != NULL.
      
      The "solution" is to test if rlc->input_sdus is NULL.
      This is a very dirty hack. I would say the solution
      is to use proper locking mechanism because RLC is used
      by two threads: PHY/MAC on one hand and RRC on another
      hand (I think).
      38b38779
    • Cedric Roux's avatar
      remove annoying logging (dump_CCE_table) · 05d02c43
      Cedric Roux authored
      05d02c43
  7. 18 Jan, 2017 2 commits
  8. 16 Jan, 2017 3 commits
  9. 15 Jan, 2017 1 commit
  10. 12 Jan, 2017 2 commits
    • Cedric Roux's avatar
      fix compilation of RRH GW · ab7a3e8e
      Cedric Roux authored
      I am not sure this is the correct solution.
      
      The problem seems to be that the RRH GW does not use ITTI
      and thus the type 'as_nas_info_t' is not defined, and then
      the compilation fails.
      
      The simple fix is to include 'as_message.h' in
      'openair2/RRC/LITE/defs.h' if ENABLE_ITTI is not
      defined. Maybe it's not good. RRH GW compiles with this fix.
      ab7a3e8e
    • Cedric Roux's avatar
      fix duplicated definition of boolean_t · 669aa1fb
      Cedric Roux authored
      It is defined both in openair2/COMMON/commonDef.h and
      openair2/COMMON/platform_types.h.
      
      Removing one or the other definition creates many problems
      when compiling this or that part of the system (ue_ip.ko,
      at_nas_ue). Let's keep both and protect the definitions
      inside #ifdefs.
      669aa1fb
  11. 11 Jan, 2017 1 commit
    • Cedric Roux's avatar
      fix LOG_X macros · f2f32f53
      Cedric Roux authored
      Some of them might not be correctly handled.
      I put /* TODO: XXX */ where I didn't know if
      the fix was correct.
      f2f32f53
  12. 10 Jan, 2017 1 commit
    • Cedric Roux's avatar
      add format indicator to get LOG_X warnings · cb67d586
      Cedric Roux authored
      The LOG_X macros emit a lot of warnings when compiling with the T
      because they call the function logRecord (or logRecord_mt)
      which has not been "marked" as calling printf, so gcc won't
      emit typical printf warnings.
      
      With the T, they directly translate to sprintf, so those warnings
      pop up, much more verbose due to several macro expansions.
      
      Let's make them pop up all the time so it's easier to fix them.
      cb67d586
  13. 09 Jan, 2017 1 commit
  14. 07 Jan, 2017 1 commit