PTCCH: skip Tx DL idle blocks when possible

Same was already done for PDTCH in previous commits. Let's now apply
same bits to PTCCH.

Related: SYS#4919
Change-Id: If6617964e67fc35eeee1791b06e13bf63ac88f73
This commit is contained in:
Pau Espin 2021-09-20 11:20:09 +02:00
parent 0e3083daf5
commit eeae776345
1 changed files with 16 additions and 0 deletions

View File

@ -531,6 +531,22 @@ int pcu_rx_rts_req_ptcch(struct gprs_rlcmac_bts *bts, uint8_t trx, uint8_t ts,
if (!pdch->m_is_enabled)
return -EAGAIN;
/* If there's no TBF attached to this PDCH, we can skip Tx of PTCCH
* since there's nothing worthy of being transmitted. This way BTS can
* identify idle blocks and send nothing or dumy blocks with reduced
* energy for the sake of energy saving.
*/
const unsigned num_tbfs = pdch->num_tbfs(GPRS_RLCMAC_DL_TBF)
+ pdch->num_tbfs(GPRS_RLCMAC_UL_TBF);
bool skip_idle = (num_tbfs == 0);
#ifdef ENABLE_DIRECT_PHY
/* In DIRECT_PHY mode we want to always submit something to L1 in
* TRX0, since BTS is not preparing dummy bursts on idle TS for us: */
skip_idle = skip_idle && trx != 0;
#endif
if (skip_idle)
return 0;
pcu_l1if_tx_ptcch(bts, trx, ts, bts->trx[trx].arfcn, fn, block_nr,
pdch->ptcch_msg, GSM_MACBLOCK_LEN);
return 0;