lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

July 2023

  • 1 participants
  • 3051 discussions
[M] Change in libosmo-gprs[master]: rlcmac: add OSMO_GPRS_RLCMAC_L1CTL_PDCH_{ESTABLISH,RELEASE}.req
by pespin 05 Jul '23

05 Jul '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33370 ) Change subject: rlcmac: add OSMO_GPRS_RLCMAC_L1CTL_PDCH_{ESTABLISH,RELEASE}.req ...................................................................... rlcmac: add OSMO_GPRS_RLCMAC_L1CTL_PDCH_{ESTABLISH,RELEASE}.req * Send the PDCH_ESTABLISH.req on receipt of RR IMM ASS, * Sending of PDCH_RELEASE.req is to be implemented. Change-Id: I2568c58646ce7511367275ac96cd55e7fdd7ec18 Related: OS#5500 --- M include/osmocom/gprs/rlcmac/rlcmac_prim.h M src/rlcmac/rlcmac.c M src/rlcmac/rlcmac_prim.c M tests/rlcmac/rlcmac_prim_test.err M tests/rlcmac/rlcmac_prim_test.ok 5 files changed, 126 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/rlcmac/rlcmac_prim.h b/include/osmocom/gprs/rlcmac/rlcmac_prim.h index fa1ee52..16d43d1 100644 --- a/include/osmocom/gprs/rlcmac/rlcmac_prim.h +++ b/include/osmocom/gprs/rlcmac/rlcmac_prim.h @@ -111,6 +111,8 @@ OSMO_GPRS_RLCMAC_L1CTL_PDCH_RTS, OSMO_GPRS_RLCMAC_L1CTL_CFG_UL_TBF, OSMO_GPRS_RLCMAC_L1CTL_CFG_DL_TBF, + OSMO_GPRS_RLCMAC_L1CTL_PDCH_ESTABLISH, + OSMO_GPRS_RLCMAC_L1CTL_PDCH_RELEASE, }; extern const struct value_string osmo_gprs_rlcmac_l1ctl_prim_type_names[]; @@ -174,6 +176,22 @@ uint8_t dl_slotmask; uint8_t dl_tfi; /* DL TFI for all PDCHs indicated in the slotmask */ } cfg_dl_tbf_req; + /* OSMO_GPRS_RLCMAC_L1CTL_PDCH_ESTABLISH | Req */ + struct { + uint8_t ts_nr; /* Timeslot Number */ + uint8_t tsc; /* Training Sequence Code */ + uint8_t ta; /* Timing Advance */ + bool fh; /* Frequency Hopping */ + union { + uint16_t arfcn; + struct { + uint8_t hsn; + uint8_t maio; + uint8_t ma_len; + uint8_t ma[8]; + } fhp; /* fh == true */ + }; + } pdch_est_req; }; }; @@ -211,3 +229,5 @@ uint8_t rx_lev, uint16_t ber10k, int16_t ci_cb, uint8_t *data, uint8_t data_len); struct osmo_gprs_rlcmac_prim *osmo_gprs_rlcmac_prim_alloc_l1ctl_pdch_rts_ind(uint8_t ts_nr, uint32_t fn, uint8_t usf); +struct osmo_gprs_rlcmac_prim *gprs_rlcmac_prim_alloc_l1ctl_pdch_est_req(uint8_t ts_nr, uint8_t tsc, uint8_t ta); +struct osmo_gprs_rlcmac_prim *gprs_rlcmac_prim_alloc_l1ctl_pdch_rel_req(void); diff --git a/src/rlcmac/rlcmac.c b/src/rlcmac/rlcmac.c index 318e3a7..b026048 100644 --- a/src/rlcmac/rlcmac.c +++ b/src/rlcmac/rlcmac.c @@ -252,6 +252,7 @@ IA_RestOctets_t iaro; const uint8_t *iaro_raw = ((uint8_t *)ia) + sizeof(*ia) + ia->mob_alloc_len; size_t iaro_raw_len = GSM_MACBLOCK_LEN - (sizeof(*ia) + ia->mob_alloc_len); + struct osmo_gprs_rlcmac_prim *prim; rc = rsl_dec_chan_nr(ia->chan_desc.chan_nr, &ch_type, &ch_subch, &ch_ts); if (rc != 0) { @@ -267,6 +268,43 @@ return rc; } + prim = gprs_rlcmac_prim_alloc_l1ctl_pdch_est_req(ch_ts, + ia->chan_desc.h0.tsc, + ia->timing_advance); + if (!ia->chan_desc.h0.h) { + /* TODO: indirect encoding of hopping RF channel configuration + * see 3GPP TS 44.018, section 10.5.2.25a */ + if (ia->chan_desc.h0.spare & 0x02) { + LOGRLCMAC(LOGL_ERROR, + "Indirect encoding of hopping RF channel " + "configuration is not supported\n"); + msgb_free(prim->oph.msg); + return -ENOTSUP; + } + /* non-hopping RF channel configuraion */ + prim->l1ctl.pdch_est_req.fh = false; + prim->l1ctl.pdch_est_req.arfcn = (ia->chan_desc.h0.arfcn_low) + | (ia->chan_desc.h0.arfcn_high << 8); + } else { + /* direct encoding of hopping RF channel configuration */ + prim->l1ctl.pdch_est_req.fh = true; + prim->l1ctl.pdch_est_req.fhp.hsn = ia->chan_desc.h1.hsn; + prim->l1ctl.pdch_est_req.fhp.maio = (ia->chan_desc.h1.maio_low) + | (ia->chan_desc.h1.maio_high << 2); + + const size_t ma_len_max = sizeof(prim->l1ctl.pdch_est_req.fhp.ma); + prim->l1ctl.pdch_est_req.fhp.ma_len = OSMO_MIN(ia->mob_alloc_len, ma_len_max); + memcpy(&prim->l1ctl.pdch_est_req.fhp.ma[0], &ia->mob_alloc[0], + prim->l1ctl.pdch_est_req.fhp.ma_len); + } + + /* Request the lower layers to establish a PDCH channel */ + rc = gprs_rlcmac_prim_call_down_cb(prim); + if (rc != 0) { + LOGRLCMAC(LOGL_ERROR, "PDCH channel establishment failed\n"); + return rc; + } + switch (iaro.UnionType) { case 0: /* iaro.u.ll.* (IA_RestOctetsLL_t) */ /* TODO: iaro.u.ll.Compressed_Inter_RAT_HO_INFO_IND */ diff --git a/src/rlcmac/rlcmac_prim.c b/src/rlcmac/rlcmac_prim.c index a5f796a..5261a73 100644 --- a/src/rlcmac/rlcmac_prim.c +++ b/src/rlcmac/rlcmac_prim.c @@ -70,6 +70,8 @@ { OSMO_GPRS_RLCMAC_L1CTL_PDCH_RTS, "PDCH_RTS" }, { OSMO_GPRS_RLCMAC_L1CTL_CFG_UL_TBF, "CFG_UL_TBF" }, { OSMO_GPRS_RLCMAC_L1CTL_CFG_DL_TBF, "CFG_DL_TBF" }, + { OSMO_GPRS_RLCMAC_L1CTL_PDCH_ESTABLISH, "PDCH_ESTABLISH" }, + { OSMO_GPRS_RLCMAC_L1CTL_PDCH_RELEASE, "PDCH_RELEASE" }, { 0, NULL } }; @@ -325,6 +327,25 @@ return rlcmac_prim; } +/* L1CTL-PDCH_ESTABLISH.req */ +struct osmo_gprs_rlcmac_prim *gprs_rlcmac_prim_alloc_l1ctl_pdch_est_req(uint8_t ts_nr, uint8_t tsc, uint8_t ta) +{ + struct osmo_gprs_rlcmac_prim *rlcmac_prim; + rlcmac_prim = rlcmac_prim_l1ctl_alloc(OSMO_GPRS_RLCMAC_L1CTL_PDCH_ESTABLISH, PRIM_OP_REQUEST, 0); + rlcmac_prim->l1ctl.pdch_est_req.ts_nr = ts_nr; + rlcmac_prim->l1ctl.pdch_est_req.tsc = tsc; + rlcmac_prim->l1ctl.pdch_est_req.ta = ta; + return rlcmac_prim; +} + +/* L1CTL-PDCH_RELEASE.req */ +struct osmo_gprs_rlcmac_prim *gprs_rlcmac_prim_alloc_l1ctl_pdch_rel_req(void) +{ + struct osmo_gprs_rlcmac_prim *rlcmac_prim; + rlcmac_prim = rlcmac_prim_l1ctl_alloc(OSMO_GPRS_RLCMAC_L1CTL_PDCH_RELEASE, PRIM_OP_REQUEST, 0); + return rlcmac_prim; +} + int gprs_rlcmac_prim_handle_unsupported(struct osmo_gprs_rlcmac_prim *rlcmac_prim) { LOGRLCMAC(LOGL_ERROR, "Unsupported rlcmac_prim! %s\n", osmo_gprs_rlcmac_prim_name(rlcmac_prim)); diff --git a/tests/rlcmac/rlcmac_prim_test.err b/tests/rlcmac/rlcmac_prim_test.err index 2d68abc..ea4d2e5 100644 --- a/tests/rlcmac/rlcmac_prim_test.err +++ b/tests/rlcmac/rlcmac_prim_test.err @@ -10,6 +10,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -81,6 +82,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -102,6 +104,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -123,6 +126,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -144,6 +148,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -173,6 +178,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -208,6 +214,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -240,6 +247,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -272,6 +280,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -315,6 +324,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -458,6 +468,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -484,6 +495,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -548,6 +560,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -658,6 +671,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -766,6 +780,7 @@ DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 @@ -830,6 +845,7 @@ DLGLOBAL INFO GMMRR-ASSIGN.req: creating new entity TLLI=0x00000001 DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO DL_TBF_ASS{IDLE}: Got PCH IMM_ASS (DL_TBF): DL_TFI=0 TS=7 DLGLOBAL INFO DL_TBF_ASS{IDLE}: state_chg to COMPLETED @@ -866,6 +882,7 @@ DLGLOBAL INFO GMMRR-ASSIGN.req: creating new entity TLLI=0x00000001 DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Received Event RX_CCCH_IMM_ASS DLGLOBAL INFO DL_TBF_ASS{IDLE}: Got PCH IMM_ASS (DL_TBF): DL_TFI=0 TS=7 DLGLOBAL INFO DL_TBF_ASS{IDLE}: state_chg to COMPLETED diff --git a/tests/rlcmac/rlcmac_prim_test.ok b/tests/rlcmac/rlcmac_prim_test.ok index bf3732e..12e5ece 100644 --- a/tests/rlcmac/rlcmac_prim_test.ok +++ b/tests/rlcmac/rlcmac_prim_test.ok @@ -1,6 +1,7 @@ === test_ul_tbf_attach start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7e +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] @@ -11,21 +12,25 @@ === test_ul_tbf_t3164_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={5.000000}, mono={5.000000}: clock_override_add sys={5.000000}, mono={5.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={10.000000}, mono={10.000000}: clock_override_add sys={10.000000}, mono={10.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={15.000000}, mono={15.000000}: clock_override_add sys={15.000000}, mono={15.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x78 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={20.000000}, mono={20.000000}: clock_override_add sys={20.000000}, mono={20.000000}: Expect T3164 timeout @@ -34,6 +39,7 @@ === test_ul_tbf_t3166_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] @@ -41,18 +47,21 @@ sys={5.000000}, mono={5.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7c +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={10.000000}, mono={10.000000}: clock_override_add sys={10.000000}, mono={10.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={15.000000}, mono={15.000000}: clock_override_add sys={15.000000}, mono={15.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7d +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={20.000000}, mono={20.000000}: clock_override_add @@ -62,6 +71,7 @@ === test_ul_tbf_n3104_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 RTS 0: FN=8 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 @@ -91,12 +101,14 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=56 ts=7 data_len=34 data=[00 01 04 3d 00 00 23 42 71 62 f2 24 6c 84 44 04 11 e5 10 00 e2 18 f2 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 === test_ul_tbf_n3104_timeout end === test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 === test_ul_tbf_t3182_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] @@ -108,6 +120,7 @@ === test_ul_tbf_last_data_cv0_retrans_max start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] @@ -125,6 +138,7 @@ === test_ul_tbf_countdown_procedure start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab 00 ] @@ -145,6 +159,7 @@ === test_ul_tbf_request_another_ul_tbf start === sys={0.000000}, mono={0.000000}: clock_override_set test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7e +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[00 01 00 39 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] @@ -154,12 +169,14 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=1 ul_slotmask=0x00 === test_dl_tbf_ccch_assign start === sys={0.000000}, mono={0.000000}: clock_override_set +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_DL_TBF.request dl_tbf_nr=0 dl_slotmask=0x80 dl_tfi=0 test_rlcmac_prim_up_cb(): Rx GRR-UNITDATA.indication TLLI=0x00000001 ll=[43 c0 01 2b 2b 2b ] test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=23 data=[40 08 10 20 00 00 00 00 00 00 00 20 00 00 03 2b 2b 2b 2b 2b 2b 2b 2b ] === test_dl_tbf_ccch_assign end === === test_dl_tbf_ccch_assign_requests_ul_tbf_pacch start === sys={0.000000}, mono={0.000000}: clock_override_set +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_DL_TBF.request dl_tbf_nr=0 dl_slotmask=0x80 dl_tfi=0 test_rlcmac_prim_up_cb(): Rx GRR-UNITDATA.indication TLLI=0x00000001 ll=[43 c0 01 2b 2b 2b ] test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=23 data=[40 08 10 20 00 00 00 00 00 00 00 30 40 00 00 00 00 03 2b 2b 2b 2b 2b ] -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33370 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I2568c58646ce7511367275ac96cd55e7fdd7ec18 Gerrit-Change-Number: 33370 Gerrit-PatchSet: 8 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in libosmo-gprs[master]: rlcmac: tbf_ul: Move to packet-idle state when T3164 triggers
by pespin 05 Jul '23

05 Jul '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33552 ) Change subject: rlcmac: tbf_ul: Move to packet-idle state when T3164 triggers ...................................................................... rlcmac: tbf_ul: Move to packet-idle state when T3164 triggers TS 44.018 3.5.2.1.4: "The one phase packet access procedure is completed at a successful contention resolution. The mobile station has entered the packet transfer mode. Timer T3141 is stopped on the network side. Timer T3164 is stopped on the mobile station side." Change-Id: Ic7420a42e2e81effdde587d7e49acd66b404354c --- M include/osmocom/gprs/rlcmac/gre.h M include/osmocom/gprs/rlcmac/rlcmac_private.h M src/rlcmac/gre.c M src/rlcmac/rlcmac.c M src/rlcmac/tbf_dl_ass_fsm.c M src/rlcmac/tbf_ul_fsm.c M tests/rlcmac/rlcmac_prim_test.err M tests/rlcmac/rlcmac_prim_test.ok 8 files changed, 220 insertions(+), 73 deletions(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/rlcmac/gre.h b/include/osmocom/gprs/rlcmac/gre.h index c976b4a..0e17836 100644 --- a/include/osmocom/gprs/rlcmac/gre.h +++ b/include/osmocom/gprs/rlcmac/gre.h @@ -24,6 +24,8 @@ struct gprs_rlcmac_dl_tbf *dl_tbf; struct gprs_rlcmac_ul_tbf *ul_tbf; + + bool freeing; /* Set to true during destructor */ }; struct gprs_rlcmac_entity *gprs_rlcmac_entity_alloc(uint32_t tlli); @@ -32,6 +34,7 @@ bool gprs_rlcmac_entity_in_packet_idle_mode(const struct gprs_rlcmac_entity *gre); bool gprs_rlcmac_entity_in_packet_transfer_mode(const struct gprs_rlcmac_entity *gre); bool gprs_rlcmac_entity_have_tx_data_queued(const struct gprs_rlcmac_entity *gre); +int gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(struct gprs_rlcmac_entity *gre); int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre, uint8_t *ll_pdu, unsigned int ll_pdu_len, enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio); diff --git a/include/osmocom/gprs/rlcmac/rlcmac_private.h b/include/osmocom/gprs/rlcmac/rlcmac_private.h index 76fa3fd..0fefd11 100644 --- a/include/osmocom/gprs/rlcmac/rlcmac_private.h +++ b/include/osmocom/gprs/rlcmac/rlcmac_private.h @@ -90,6 +90,7 @@ struct gprs_rlcmac_entity *gprs_rlcmac_find_entity_by_imsi(const char *imsi); struct gprs_rlcmac_dl_tbf *gprs_rlcmac_find_dl_tbf_by_tfi(uint8_t dl_tfi); struct gprs_rlcmac_ul_tbf *gprs_rlcmac_find_ul_tbf_by_tfi(uint8_t ul_tfi); +int gprs_rlcmac_submit_l1ctl_pdch_rel_req(void); int gprs_rlcmac_handle_ccch_imm_ass(const struct gsm48_imm_ass *ia, uint32_t fn); int gprs_rlcmac_handle_ccch_pag_req1(const struct gsm48_paging1 *pag); int gprs_rlcmac_handle_ccch_pag_req2(const struct gsm48_paging2 *pag); diff --git a/src/rlcmac/gre.c b/src/rlcmac/gre.c index 6340437..9021faa 100644 --- a/src/rlcmac/gre.c +++ b/src/rlcmac/gre.c @@ -71,6 +71,8 @@ if (!gre) return; + gre->freeing = true; + gprs_rlcmac_tbf_dl_ass_fsm_destructor(&gre->dl_tbf_dl_ass_fsm); gprs_rlcmac_dl_tbf_free(gre->dl_tbf); gprs_rlcmac_ul_tbf_free(gre->ul_tbf); @@ -83,16 +85,68 @@ * Hence memory pointed by "dl_tbf" is already freed and shall not be accessed. */ void gprs_rlcmac_entity_dl_tbf_freed(struct gprs_rlcmac_entity *gre, const struct gprs_rlcmac_dl_tbf *dl_tbf) { - if (gre->dl_tbf == dl_tbf) - gre->dl_tbf = NULL; + OSMO_ASSERT(gre); + OSMO_ASSERT(gre->dl_tbf); + OSMO_ASSERT(dl_tbf); + + /* GRE is freeing (destructor being called) do nothing */ + if (gre->freeing) + return; + + if (gre->dl_tbf != dl_tbf) { + /* This may happen if we already have a new DL TBF allocated + * immediately prior to freeing the old one (PACCH assignment + * reusing resources of old one). Nothing to do, simply wait for + * new DL TBF to do its job. + */ + return; + } + + gre->dl_tbf = NULL; + + /* Nothing to do, we are still in packet-transfer-mode using UL TBF. */ + if (gre->ul_tbf) + return; + + /* we have no DL nor UL TBFs. Go back to PACKET-IDLE state, and start + * packet-access-procedure if we still have data to be transmitted. + */ + gprs_rlcmac_submit_l1ctl_pdch_rel_req(); + gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(gre); } /* Called by ul_tbf destructor to inform the UL TBF pointer has been freed. * Hence memory pointed by "ul_tbf" is already freed and shall not be accessed. */ void gprs_rlcmac_entity_ul_tbf_freed(struct gprs_rlcmac_entity *gre, const struct gprs_rlcmac_ul_tbf *ul_tbf) { - if (gre->ul_tbf == ul_tbf) - gre->ul_tbf = NULL; + OSMO_ASSERT(gre); + OSMO_ASSERT(gre->ul_tbf); + OSMO_ASSERT(ul_tbf); + + /* GRE is freeing (destructor being called) do nothing */ + if (gre->freeing) + return; + + if (gre->ul_tbf != ul_tbf) { + /* This may happen if we already have a new UL TBF allocated + * immediately prior to freeing the old one (PACCH assignment + * reusing resources of old one). Nothing to do, simply wait for + * new UL TBF to do its job. + */ + return; + } + + gre->ul_tbf = NULL; + + /* Nothing to do, dl_tbf will eventually trigger request for UL TBF PACCH assignment. */ + if (gre->dl_tbf) + return; + + /* we have no DL nor UL TBFs. Go back to PACKET-IDLE state, and start + * packet-access-procedure if we still have data to be transmitted. + */ + gprs_rlcmac_submit_l1ctl_pdch_rel_req(); + gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(gre); } /* TS 44.060 5.3 In packet idle mode: @@ -129,6 +183,27 @@ return gprs_rlcmac_llc_queue_size(gre->llc_queue) > 0; } +/* Create a new UL TBF and start Packet access procedure to get an UL assignment if needed */ +int gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(struct gprs_rlcmac_entity *gre) +{ + /* TS 44.060 5.3 "In packet idle mode, upper layers may require the + * transfer of a upper layer PDU, which implicitly triggers the + * establishment of a TBF and the transition to packet transfer mode." */ + if (!gprs_rlcmac_entity_in_packet_idle_mode(gre)) + return 0; + + if (!gprs_rlcmac_entity_have_tx_data_queued(gre)) + return 0; + + OSMO_ASSERT(!gre->ul_tbf); + /* We have data in the queue but we have no ul_tbf. Allocate one and start UL Assignment. */ + gre->ul_tbf = gprs_rlcmac_ul_tbf_alloc(gre); + if (!gre->ul_tbf) + return -ENOMEM; + /* We always use 1phase for now... */ + return gprs_rlcmac_tbf_ul_ass_start(gre->ul_tbf, GPRS_RLCMAC_TBF_UL_ASS_TYPE_1PHASE); +} + int gprs_rlcmac_entity_llc_enqueue(struct gprs_rlcmac_entity *gre, uint8_t *ll_pdu, unsigned int ll_pdu_len, enum osmo_gprs_rlcmac_llc_sapi sapi, uint8_t radio_prio) { @@ -138,19 +213,7 @@ if (rc < 0) return rc; - /* TS 44.060 5.3 "In packet idle mode, upper layers may require the - * transfer of a upper layer PDU, which implicitly triggers the - * establishment of a TBF and the transition to packet transfer mode." */ - if (gprs_rlcmac_entity_in_packet_idle_mode(gre)) { - OSMO_ASSERT(!gre->ul_tbf); - /* We have new data in the queue but we have no ul_tbf. Allocate one and start UL Assignment. */ - gre->ul_tbf = gprs_rlcmac_ul_tbf_alloc(gre); - if (!gre->ul_tbf) - return -ENOMEM; - /* We always use 1phase for now... */ - rc = gprs_rlcmac_tbf_ul_ass_start(gre->ul_tbf, GPRS_RLCMAC_TBF_UL_ASS_TYPE_1PHASE); - } - + rc = gprs_rlcmac_entity_start_ul_tbf_pkt_acc_proc_if_needed(gre); return rc; } diff --git a/src/rlcmac/rlcmac.c b/src/rlcmac/rlcmac.c index b026048..5cf4bb9 100644 --- a/src/rlcmac/rlcmac.c +++ b/src/rlcmac/rlcmac.c @@ -189,6 +189,18 @@ return NULL; } +/* Request lower layers to go to packet-idle mode: */ +int gprs_rlcmac_submit_l1ctl_pdch_rel_req(void) +{ + struct osmo_gprs_rlcmac_prim *rlcmac_prim; + + rlcmac_prim = gprs_rlcmac_prim_alloc_l1ctl_pdch_rel_req(); + + LOGRLCMAC(LOGL_INFO, "Tx L1CTL-PDCH_REL.req\n"); + + return gprs_rlcmac_prim_call_down_cb(rlcmac_prim); +} + static int gprs_rlcmac_handle_ccch_imm_ass_ul_tbf(uint8_t ts_nr, uint32_t fn, const struct gsm48_imm_ass *ia, const IA_RestOctets_t *iaro) { int rc = -ENOENT; diff --git a/src/rlcmac/tbf_dl_ass_fsm.c b/src/rlcmac/tbf_dl_ass_fsm.c index 40bd17c..9acf723 100644 --- a/src/rlcmac/tbf_dl_ass_fsm.c +++ b/src/rlcmac/tbf_dl_ass_fsm.c @@ -202,22 +202,23 @@ static void st_compl_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct gprs_rlcmac_tbf_dl_ass_fsm_ctx *ctx = (struct gprs_rlcmac_tbf_dl_ass_fsm_ctx *)fi->priv; - struct gprs_rlcmac_dl_tbf *dl_tbf; + struct gprs_rlcmac_dl_tbf *old_dl_tbf, *new_dl_tbf; - dl_tbf = gprs_rlcmac_dl_tbf_alloc(ctx->gre); + old_dl_tbf = ctx->gre->dl_tbf; + new_dl_tbf = gprs_rlcmac_dl_tbf_alloc(ctx->gre); /* Update TBF with allocated content: */ - memcpy(&dl_tbf->cur_alloc, &ctx->alloc, sizeof(ctx->alloc)); + memcpy(&new_dl_tbf->cur_alloc, &ctx->alloc, sizeof(ctx->alloc)); /* Replace old DL TBF with new one. 8.1.1.1.3: "the mobile station shall * release all ongoing downlink TBFs not addressed by this message and * shall act on the message. All ongoing uplink TBFs shall be maintained;" */ - gprs_rlcmac_dl_tbf_free(ctx->gre->dl_tbf); - ctx->gre->dl_tbf = dl_tbf; + ctx->gre->dl_tbf = new_dl_tbf; + gprs_rlcmac_dl_tbf_free(old_dl_tbf); /* Inform the main TBF state about the assignment completed: */ - osmo_fsm_inst_dispatch(dl_tbf->state_fsm.fi, GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL, NULL); + osmo_fsm_inst_dispatch(new_dl_tbf->state_fsm.fi, GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL, NULL); /* Go back to IDLE state. */ tbf_dl_ass_fsm_state_chg(fi, GPRS_RLCMAC_TBF_DL_ASS_ST_IDLE); } diff --git a/src/rlcmac/tbf_ul_fsm.c b/src/rlcmac/tbf_ul_fsm.c index e713085..37d2e4a 100644 --- a/src/rlcmac/tbf_ul_fsm.c +++ b/src/rlcmac/tbf_ul_fsm.c @@ -97,7 +97,7 @@ { int rc; /* TS 44.060 sub-clause 7.1.4. Reinitiate the packet access procedure: - * Move to NEW state, start Ass and wait for GPRS_RLCMAC_TBF_UL_ASS_EV_START */ + * Move to NEW state, start Ass and wait for GPRS_RLCMAC_TBF_UL_ASS_EV_START */ tbf_ul_fsm_state_chg(ctx->fi, GPRS_RLCMAC_TBF_UL_ST_NEW); /* We always use 1phase for now... */ rc = gprs_rlcmac_tbf_ul_ass_start(ctx->ul_tbf, GPRS_RLCMAC_TBF_UL_ASS_TYPE_1PHASE); @@ -139,6 +139,8 @@ gprs_rlcmac_rlc_ul_window_mark_for_resend(ctx->ul_tbf->ulw); /* Make sure the lower layers realize this tbf_nr has no longer any assigned resource: */ release_ul_tbf(ctx); + /* Move back to CCCH */ + gprs_rlcmac_submit_l1ctl_pdch_rel_req(); } static void st_new(struct osmo_fsm_inst *fi, uint32_t event, void *data) diff --git a/tests/rlcmac/rlcmac_prim_test.err b/tests/rlcmac/rlcmac_prim_test.err index ea4d2e5..5f8cbbb 100644 --- a/tests/rlcmac/rlcmac_prim_test.err +++ b/tests/rlcmac/rlcmac_prim_test.err @@ -69,6 +69,8 @@ DLGLOBAL INFO UL_TBF{RELEASING}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request DLGLOBAL INFO UL_TBF{RELEASING}: Deallocated +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly @@ -97,6 +99,8 @@ DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN @@ -119,6 +123,8 @@ DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN @@ -141,6 +147,8 @@ DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN @@ -165,7 +173,21 @@ DLGLOBAL INFO UL_TBF{FLOW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request DLGLOBAL INFO UL_TBF{FLOW}: Deallocated +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request +DLGLOBAL INFO UL_TBF{NEW}: Allocated +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Allocated +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START +DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START +DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a +DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request +DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated +DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Deallocated +DLGLOBAL INFO UL_TBF{ASSIGN}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=1 (release) +DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO UL_TBF{ASSIGN}: Deallocated DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly DLGLOBAL INFO DL_TBF_ASS{IDLE}: Allocated @@ -174,7 +196,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7c DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication @@ -207,39 +229,8 @@ DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START -DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START -DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7c -DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request -DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS -DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication -DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request -DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS -DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 -DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 -DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: state_chg to COMPLETED -DLGLOBAL INFO UL_TBF{ASSIGN}: Received Event UL_ASS_COMPL -DLGLOBAL INFO UL_TBF{ASSIGN}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 ul_slotmask=0x80 -DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request -DLGLOBAL INFO UL_TBF{ASSIGN}: state_chg to FLOW -DLGLOBAL INFO UL_TBF_ASS{COMPLETED}: state_chg to IDLE -DLGLOBAL DEBUG Rx from lower layers: L1CTL-PDCH_RTS.indication -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Resending BSN 0 -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) need_padding 0 spb_status 0 spb 0 (BSN1 0 BSN2 -1) -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Copying 1 RLC blocks, 1 BSNs -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Copying data unit 0 (BSN=0 CV=15) -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) msg block (BSN 0, CS-2): 3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 -DLGLOBAL INFO UL_TBF{FLOW}: Received Event FIRST_UL_DATA_SENT -DLGLOBAL INFO UL_TBF{FLOW}: First UL block sent, stop T3164 -DLGLOBAL INFO UL_TBF{FLOW}: First UL block sent (1 phase access), start T3166 -DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) N3104 inc (1) -DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request -DLGLOBAL INFO UL_TBF{FLOW}: Timeout of T3166 -DLGLOBAL INFO UL_TBF{FLOW}: T3166 timeout attempts=2 -DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW -DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) -DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN @@ -269,10 +260,12 @@ DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) N3104 inc (1) DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request DLGLOBAL INFO UL_TBF{FLOW}: Timeout of T3166 -DLGLOBAL INFO UL_TBF{FLOW}: T3166 timeout attempts=3 +DLGLOBAL INFO UL_TBF{FLOW}: T3166 timeout attempts=2 DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN @@ -302,12 +295,49 @@ DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) N3104 inc (1) DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request DLGLOBAL INFO UL_TBF{FLOW}: Timeout of T3166 +DLGLOBAL INFO UL_TBF{FLOW}: T3166 timeout attempts=3 +DLGLOBAL INFO UL_TBF{FLOW}: state_chg to NEW +DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) +DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START +DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START +DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a +DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request +DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS +DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_ESTABLISH.request +DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: Received Event RX_CCCH_IMM_ASS +DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss TFI=0 initCS=CS-2 startTimeFN=0 +DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: ImmAss DynamicAlloc (1phase access) ts_nr=7 usf=0 +DLGLOBAL INFO UL_TBF_ASS{WAIT_CCCH_IMM_ASS}: state_chg to COMPLETED +DLGLOBAL INFO UL_TBF{ASSIGN}: Received Event UL_ASS_COMPL +DLGLOBAL INFO UL_TBF{ASSIGN}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 ul_slotmask=0x80 +DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO UL_TBF{ASSIGN}: state_chg to FLOW +DLGLOBAL INFO UL_TBF_ASS{COMPLETED}: state_chg to IDLE +DLGLOBAL DEBUG Rx from lower layers: L1CTL-PDCH_RTS.indication +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Resending BSN 0 +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) need_padding 0 spb_status 0 spb 0 (BSN1 0 BSN2 -1) +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Copying 1 RLC blocks, 1 BSNs +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) Copying data unit 0 (BSN=0 CV=15) +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) msg block (BSN 0, CS-2): 3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 +DLGLOBAL INFO UL_TBF{FLOW}: Received Event FIRST_UL_DATA_SENT +DLGLOBAL INFO UL_TBF{FLOW}: First UL block sent, stop T3164 +DLGLOBAL INFO UL_TBF{FLOW}: First UL block sent (1 phase access), start T3166 +DLGLOBAL DEBUG TBF(UL:NR-0:TLLI-00002342) N3104 inc (1) +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request +DLGLOBAL INFO UL_TBF{FLOW}: Timeout of T3166 DLGLOBAL INFO UL_TBF{FLOW}: T3166 timeout attempts=4 DLGLOBAL NOTICE UL_TBF{FLOW}: TBF establishment failure (T3166 timeout attempts=4) DLGLOBAL INFO UL_TBF_ASS{IDLE}: Deallocated DLGLOBAL INFO UL_TBF{FLOW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request DLGLOBAL INFO UL_TBF{FLOW}: Deallocated +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication DLGLOBAL DEBUG Rx SI13 from lower layers @@ -319,7 +349,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7b DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request @@ -460,10 +490,12 @@ DLGLOBAL INFO UL_TBF{FINISHED}: state_chg to NEW DLGLOBAL INFO UL_TBF{NEW}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7b +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request @@ -491,7 +523,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7a +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7b DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication @@ -547,6 +579,8 @@ DLGLOBAL INFO UL_TBF{FINISHED}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request DLGLOBAL INFO UL_TBF{FINISHED}: Deallocated +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated DLGLOBAL INFO Rx from upper layers: GRR-UNITDATA.request DLGLOBAL INFO TLLI=0x00002342 not found, creating entity on the fly @@ -655,6 +689,8 @@ DLGLOBAL INFO UL_TBF{FINISHED}: Send L1CTL-CFG_UL_TBF.req ul_tbf_nr=0 (release) DLGLOBAL DEBUG Tx to lower layers: L1CTL-CFG_UL_TBF.request DLGLOBAL INFO UL_TBF{FINISHED}: Deallocated +DLGLOBAL INFO Tx L1CTL-PDCH_REL.req +DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_RELEASE.request DLGLOBAL DEBUG Tx to lower layers: L1CTL-PDCH_DATA.request DLGLOBAL INFO DL_TBF_ASS{IDLE}: Deallocated DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication @@ -667,7 +703,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7b +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7e DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication @@ -776,7 +812,7 @@ DLGLOBAL INFO UL_TBF_ASS{IDLE}: Received Event START DLGLOBAL INFO UL_TBF{NEW}: Received Event UL_ASS_START DLGLOBAL INFO UL_TBF{NEW}: state_chg to ASSIGN -DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7e +DLGLOBAL INFO UL_TBF_ASS{IDLE}: Send RACH.req ra=0x7c DLGLOBAL DEBUG Tx to lower layers: L1CTL-RACH.request DLGLOBAL INFO UL_TBF_ASS{IDLE}: state_chg to WAIT_CCCH_IMM_ASS DLGLOBAL DEBUG Rx from lower layers: L1CTL-CCCH_DATA.indication diff --git a/tests/rlcmac/rlcmac_prim_test.ok b/tests/rlcmac/rlcmac_prim_test.ok index 12e5ece..a3e82c3 100644 --- a/tests/rlcmac/rlcmac_prim_test.ok +++ b/tests/rlcmac/rlcmac_prim_test.ok @@ -8,6 +8,7 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=8 ts=7 data_len=34 data=[00 01 02 1d 00 00 23 42 11 e5 10 00 e2 18 f2 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=23 data=[40 04 00 00 8d 08 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b ] test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request === test_ul_tbf_attach end === === test_ul_tbf_t3164_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set @@ -17,28 +18,34 @@ sys={5.000000}, mono={5.000000}: clock_override_add sys={5.000000}, mono={5.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={10.000000}, mono={10.000000}: clock_override_add sys={10.000000}, mono={10.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={15.000000}, mono={15.000000}: clock_override_add sys={15.000000}, mono={15.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x78 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 sys={20.000000}, mono={20.000000}: clock_override_add sys={20.000000}, mono={20.000000}: Expect T3164 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a === test_ul_tbf_t3164_timeout end === +test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=1 ul_slotmask=0x00 === test_ul_tbf_t3166_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7c test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 @@ -46,31 +53,35 @@ sys={5.000000}, mono={5.000000}: clock_override_add sys={5.000000}, mono={5.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7c +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={10.000000}, mono={10.000000}: clock_override_add sys={10.000000}, mono={10.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x79 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7d test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={15.000000}, mono={15.000000}: clock_override_add sys={15.000000}, mono={15.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7d +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=4 ts=7 data_len=34 data=[3c 01 01 00 00 23 42 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 71 62 f2 24 6c 84 44 04 00 ] sys={20.000000}, mono={20.000000}: clock_override_add sys={20.000000}, mono={20.000000}: Expect T3166 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request === test_ul_tbf_t3166_timeout end === === test_ul_tbf_n3104_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 RTS 0: FN=8 @@ -99,7 +110,8 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=52 ts=7 data_len=34 data=[3c 01 02 1f 00 00 23 42 11 e5 10 00 e2 18 f2 01 c0 00 08 01 01 d5 71 00 00 08 29 26 24 00 00 00 00 00 ] RTS 11: FN=56 test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=56 ts=7 data_len=34 data=[00 01 04 3d 00 00 23 42 71 62 f2 24 6c 84 44 04 11 e5 10 00 e2 18 f2 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 @@ -107,7 +119,7 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 === test_ul_tbf_t3182_timeout start === sys={0.000000}, mono={0.000000}: clock_override_set -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7a +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 @@ -116,6 +128,7 @@ sys={5.000000}, mono={5.000000}: clock_override_add sys={5.000000}, mono={5.000000}: Expect T3182 timeout test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request === test_ul_tbf_t3182_timeout end === === test_ul_tbf_last_data_cv0_retrans_max start === sys={0.000000}, mono={0.000000}: clock_override_set @@ -133,11 +146,12 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=21 ts=7 data_len=34 data=[00 00 02 1d 11 e5 10 00 e2 18 f2 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] RTS 3: FN=26 test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 +test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_RELEASE.request test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_DATA.request fn=26 ts=7 data_len=34 data=[00 00 02 1d 11 e5 10 00 e2 18 f2 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00 ] === test_ul_tbf_last_data_cv0_retrans_max end === === test_ul_tbf_countdown_procedure start === sys={0.000000}, mono={0.000000}: clock_override_set -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7b +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7e test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 @@ -158,7 +172,7 @@ test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x00 === test_ul_tbf_request_another_ul_tbf start === sys={0.000000}, mono={0.000000}: clock_override_set -test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7e +test_rlcmac_prim_down_cb(): Rx L1CTL-RACH.request ra=0x7c test_rlcmac_prim_down_cb(): Rx L1CTL-PDCH_ESTABLISH.request test_rlcmac_prim_down_cb(): Rx L1CTL-CFG_UL_TBF.request ul_tbf_nr=0 ul_slotmask=0x80 test_rlcmac_prim_up_cb(): Rx GMMRR-LLC_TRANSMITTED.indication TLLI=0x00002342 -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33552 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Ic7420a42e2e81effdde587d7e49acd66b404354c Gerrit-Change-Number: 33552 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in libosmo-gprs[master]: rlcmac: tbf_ul: Move to packet-idle state when T3164 triggers
by pespin 05 Jul '23

05 Jul '23
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33552 ) Change subject: rlcmac: tbf_ul: Move to packet-idle state when T3164 triggers ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33552 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Ic7420a42e2e81effdde587d7e49acd66b404354c Gerrit-Change-Number: 33552 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:24:39 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmo-gprs[master]: rlcmac: Rework tbf destructor to signal free() to its gre object
by pespin 05 Jul '23

05 Jul '23
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33551 ) Change subject: rlcmac: Rework tbf destructor to signal free() to its gre object ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33551 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I72959e27f2f62c84218d740cfb9e396d70562929 Gerrit-Change-Number: 33551 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:24:35 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmo-gprs[master]: rlcmac: add OSMO_GPRS_RLCMAC_L1CTL_PDCH_{ESTABLISH,RELEASE}.req
by pespin 05 Jul '23

05 Jul '23
Attention is currently required from: fixeria. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33370 ) Change subject: rlcmac: add OSMO_GPRS_RLCMAC_L1CTL_PDCH_{ESTABLISH,RELEASE}.req ...................................................................... Patch Set 8: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33370 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I2568c58646ce7511367275ac96cd55e7fdd7ec18 Gerrit-Change-Number: 33370 Gerrit-PatchSet: 8 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:24:30 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in libosmo-gprs[master]: rlcmac: tbf_dl: Fix typo in event name
by pespin 05 Jul '23

05 Jul '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33550 ) Change subject: rlcmac: tbf_dl: Fix typo in event name ...................................................................... rlcmac: tbf_dl: Fix typo in event name Change-Id: I089d8e5f0a3e8946cc78a0e9645a8d040aa7dddf --- M include/osmocom/gprs/rlcmac/tbf_dl_fsm.h M src/rlcmac/tbf_dl_ass_fsm.c M src/rlcmac/tbf_dl_fsm.c 3 files changed, 14 insertions(+), 5 deletions(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved laforge: Looks good to me, approved diff --git a/include/osmocom/gprs/rlcmac/tbf_dl_fsm.h b/include/osmocom/gprs/rlcmac/tbf_dl_fsm.h index 5458b68..d1527fc 100644 --- a/include/osmocom/gprs/rlcmac/tbf_dl_fsm.h +++ b/include/osmocom/gprs/rlcmac/tbf_dl_fsm.h @@ -23,7 +23,7 @@ enum tbf_dl_fsm_event { GPRS_RLCMAC_TBF_DL_EV_LAST_DL_DATA_RECVD, - GPRS_RLCMAC_TBF_UL_EV_DL_ASS_COMPL, + GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL, }; int gprs_rlcmac_tbf_dl_fsm_init(void); diff --git a/src/rlcmac/tbf_dl_ass_fsm.c b/src/rlcmac/tbf_dl_ass_fsm.c index 4bb6ae9..40bd17c 100644 --- a/src/rlcmac/tbf_dl_ass_fsm.c +++ b/src/rlcmac/tbf_dl_ass_fsm.c @@ -217,7 +217,7 @@ ctx->gre->dl_tbf = dl_tbf; /* Inform the main TBF state about the assignment completed: */ - osmo_fsm_inst_dispatch(dl_tbf->state_fsm.fi, GPRS_RLCMAC_TBF_UL_EV_DL_ASS_COMPL, NULL); + osmo_fsm_inst_dispatch(dl_tbf->state_fsm.fi, GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL, NULL); /* Go back to IDLE state. */ tbf_dl_ass_fsm_state_chg(fi, GPRS_RLCMAC_TBF_DL_ASS_ST_IDLE); } diff --git a/src/rlcmac/tbf_dl_fsm.c b/src/rlcmac/tbf_dl_fsm.c index 3ceea97..606b985 100644 --- a/src/rlcmac/tbf_dl_fsm.c +++ b/src/rlcmac/tbf_dl_fsm.c @@ -31,7 +31,7 @@ static const struct value_string tbf_dl_fsm_event_names[] = { { GPRS_RLCMAC_TBF_DL_EV_LAST_DL_DATA_RECVD, "LAST_DL_DATA_RECVD" }, - { GPRS_RLCMAC_TBF_UL_EV_DL_ASS_COMPL, "DL_ASS_COMPL" }, + { GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL, "DL_ASS_COMPL" }, { 0, NULL } }; @@ -54,7 +54,7 @@ { struct gprs_rlcmac_tbf_dl_fsm_ctx *ctx = (struct gprs_rlcmac_tbf_dl_fsm_ctx *)fi->priv; switch (event) { - case GPRS_RLCMAC_TBF_UL_EV_DL_ASS_COMPL: + case GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL: /* Configure DL TBF on the lower MAC side: */ gprs_rlcmac_dl_tbf_configure_l1ctl(ctx->dl_tbf); tbf_dl_fsm_state_chg(fi, GPRS_RLCMAC_TBF_DL_ST_FLOW); @@ -91,7 +91,7 @@ static struct osmo_fsm_state tbf_dl_fsm_states[] = { [GPRS_RLCMAC_TBF_DL_ST_NEW] = { .in_event_mask = - X(GPRS_RLCMAC_TBF_UL_EV_DL_ASS_COMPL), + X(GPRS_RLCMAC_TBF_DL_EV_DL_ASS_COMPL), .out_state_mask = X(GPRS_RLCMAC_TBF_DL_ST_FLOW), .name = "NEW", -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33550 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I089d8e5f0a3e8946cc78a0e9645a8d040aa7dddf Gerrit-Change-Number: 33550 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-gprs[master]: rlcmac: tbf_fsl_fsm: Expect ev LAST_DL_DATA_RECVD in state FINISHED
by pespin 05 Jul '23

05 Jul '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33549 ) Change subject: rlcmac: tbf_fsl_fsm: Expect ev LAST_DL_DATA_RECVD in state FINISHED ...................................................................... rlcmac: tbf_fsl_fsm: Expect ev LAST_DL_DATA_RECVD in state FINISHED Change-Id: Iff581e53cdbf9057b65c478f7ce9f3387c4a1646 --- M src/rlcmac/tbf_dl_fsm.c 1 file changed, 14 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/src/rlcmac/tbf_dl_fsm.c b/src/rlcmac/tbf_dl_fsm.c index 250b66c..3ceea97 100644 --- a/src/rlcmac/tbf_dl_fsm.c +++ b/src/rlcmac/tbf_dl_fsm.c @@ -80,6 +80,9 @@ { //struct gprs_rlcmac_tbf_dl_fsm_ctx *ctx = (struct gprs_rlcmac_tbf_dl_fsm_ctx *)fi->priv; switch (event) { + case GPRS_RLCMAC_TBF_DL_EV_LAST_DL_DATA_RECVD: + /* ignore, PCU is retransmitting last DL block (FBI=1) before we ACKed it */ + break; default: OSMO_ASSERT(0); } @@ -103,7 +106,8 @@ .action = st_flow, }, [GPRS_RLCMAC_TBF_DL_ST_FINISHED] = { - .in_event_mask = 0, + .in_event_mask = + X(GPRS_RLCMAC_TBF_DL_EV_LAST_DL_DATA_RECVD), .out_state_mask = 0, .name = "FINISHED", .action = st_finished, -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/33549 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Iff581e53cdbf9057b65c478f7ce9f3387c4a1646 Gerrit-Change-Number: 33549 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in docker-playground[master]: MME_Tests: add docker tests for MME
by pespin 05 Jul '23

05 Jul '23
Attention is currently required from: osmith, laforge, dexter. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/docker-playground/+/33571 ) Change subject: MME_Tests: add docker tests for MME ...................................................................... Patch Set 1: Code-Review-1 (1 comment) File ttcn3-mme-test-ogs/jenkins.sh: https://gerrit.osmocom.org/c/docker-playground/+/33571/comment/800d148d_d9f… PS1, Line 27: --cap-add=NET_ADMIN \ : --device /dev/net/tun:/dev/net/tun \ : --sysctl net.ipv6.conf.all.disable_ipv6=0 \ > the MME is not involved in the user plane, so I don't understand why it would need /dev/net/tun acce […] The feature is enabled simply to make sure it is used and spot regressions/changes in the feature for the SMF/UPF (it already happened in the past). I think we can drop the so_bindtodevice for MME. -- To view, visit https://gerrit.osmocom.org/c/docker-playground/+/33571 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Change-Id: Ic1ce1dace47353b0dcf321c923a78567e3ddefb9 Gerrit-Change-Number: 33571 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: laforge <laforge(a)osmocom.org> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:23:07 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Comment-In-Reply-To: osmith <osmith(a)sysmocom.de> Comment-In-Reply-To: laforge <laforge(a)osmocom.org> Gerrit-MessageType: comment
1 0
0 0
[S] Change in docker-playground[master]: redmine: fix auto-scan of repositories
by pespin 05 Jul '23

05 Jul '23
Attention is currently required from: osmith. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/docker-playground/+/33572 ) Change subject: redmine: fix auto-scan of repositories ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/docker-playground/+/33572 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: docker-playground Gerrit-Branch: master Gerrit-Change-Id: I195311b93868eb5fd73ad6e3c165d48f3b7b53ce Gerrit-Change-Number: 33572 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:19:05 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-hlr[master]: gsup_server: fix msgb memleak in osmo_gsup_server_read_cb()
by pespin 05 Jul '23

05 Jul '23
Attention is currently required from: fixeria. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/33567 ) Change subject: gsup_server: fix msgb memleak in osmo_gsup_server_read_cb() ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/33567 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-Change-Id: I5c5acbffc2913f78db4894ae3633b5eca9c2e8d6 Gerrit-Change-Number: 33567 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Jul 2023 11:17:51 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • ...
  • 306
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.