bts-{sysmo,oc2g,lc15}: Make sure RTP clock ticks during FACCH stealing
Whenever we have FACCH stealing happening, the RTP clock didn't continue to tick as we didn't report anything to RTP in those situations. Change-Id: Iae832137b8ef8dc7c1e6d0746df69efd41aafcf0 Closes: OS#5974
This commit is contained in:
parent
e464ef6524
commit
89155afa3f
|
@ -1007,6 +1007,9 @@ static int handle_ph_data_ind(struct lc15l1_hdl *fl1, GsmL1_PhDataInd_t *data_in
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* send empty TCH block to make RTP clock continue ticking in case of FACCH */
|
||||
l1if_tch_rx(trx, chan_nr, NULL);
|
||||
|
||||
/* get rssi */
|
||||
rssi = (int8_t) (data_ind->measParam.fRssi);
|
||||
/* get data pointer and length */
|
||||
|
|
|
@ -358,8 +358,8 @@ static int is_recv_only(uint8_t speech_mode)
|
|||
/*! \brief receive a traffic L1 primitive for a given lchan */
|
||||
int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
||||
{
|
||||
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
|
||||
GsmL1_PhDataInd_t *data_ind = &l1p->u.phDataInd;
|
||||
GsmL1_Prim_t *l1p;
|
||||
GsmL1_PhDataInd_t *data_ind;
|
||||
uint8_t *payload, payload_type, payload_len, sid_first[9] = { 0 };
|
||||
struct msgb *rmsg = NULL;
|
||||
struct gsm_lchan *lchan = &trx->ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
|
||||
|
@ -367,7 +367,12 @@ int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
|||
if (is_recv_only(lchan->abis_ip.speech_mode))
|
||||
return -EAGAIN;
|
||||
|
||||
if (data_ind->msgUnitParam.u8Size < 1) {
|
||||
if (l1p_msg) {
|
||||
l1p = msgb_l1prim(l1p_msg);
|
||||
data_ind = &l1p->u.phDataInd;
|
||||
}
|
||||
|
||||
if (!l1p_msg || data_ind->msgUnitParam.u8Size < 1) {
|
||||
LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
|
||||
/* Push empty payload to upper layers */
|
||||
rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
|
||||
|
|
|
@ -1064,6 +1064,9 @@ static int handle_ph_data_ind(struct oc2gl1_hdl *fl1, GsmL1_PhDataInd_t *data_in
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* send empty TCH block to make RTP clock continue ticking in case of FACCH */
|
||||
l1if_tch_rx(trx, chan_nr, NULL);
|
||||
|
||||
/* get rssi */
|
||||
rssi = (int8_t) (data_ind->measParam.fRssi);
|
||||
/* get data pointer and length */
|
||||
|
|
|
@ -358,8 +358,8 @@ static int is_recv_only(uint8_t speech_mode)
|
|||
/*! \brief receive a traffic L1 primitive for a given lchan */
|
||||
int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
||||
{
|
||||
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
|
||||
GsmL1_PhDataInd_t *data_ind = &l1p->u.phDataInd;
|
||||
GsmL1_Prim_t *l1p;
|
||||
GsmL1_PhDataInd_t *data_ind;
|
||||
uint8_t *payload, payload_type, payload_len, sid_first[9] = { 0 };
|
||||
struct msgb *rmsg = NULL;
|
||||
struct gsm_lchan *lchan = &trx->ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
|
||||
|
@ -367,7 +367,12 @@ int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
|||
if (is_recv_only(lchan->abis_ip.speech_mode))
|
||||
return -EAGAIN;
|
||||
|
||||
if (data_ind->msgUnitParam.u8Size < 1) {
|
||||
if (l1p_msg) {
|
||||
l1p = msgb_l1prim(l1p_msg);
|
||||
data_ind = &l1p->u.phDataInd;
|
||||
}
|
||||
|
||||
if (!l1p_msg || data_ind->msgUnitParam.u8Size < 1) {
|
||||
LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
|
||||
/* Push empty payload to upper layers */
|
||||
rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
|
||||
|
|
|
@ -980,6 +980,9 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_i
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* send empty TCH block to make RTP clock continue ticking in case of FACCH */
|
||||
l1if_tch_rx(trx, chan_nr, NULL);
|
||||
|
||||
/* fill L1SAP header */
|
||||
sap_msg = l1sap_msgb_alloc(data_ind->msgUnitParam.u8Size);
|
||||
l1sap = msgb_l1sap_prim(sap_msg);
|
||||
|
|
|
@ -503,8 +503,8 @@ static int is_recv_only(uint8_t speech_mode)
|
|||
/*! \brief receive a traffic L1 primitive for a given lchan */
|
||||
int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
||||
{
|
||||
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
|
||||
GsmL1_PhDataInd_t *data_ind = &l1p->u.phDataInd;
|
||||
GsmL1_Prim_t *l1p;
|
||||
GsmL1_PhDataInd_t *data_ind;
|
||||
uint8_t *payload, payload_type, payload_len, sid_first[9] = { 0 };
|
||||
struct msgb *rmsg = NULL;
|
||||
struct gsm_lchan *lchan = &trx->ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
|
||||
|
@ -512,7 +512,12 @@ int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
|
|||
if (is_recv_only(lchan->abis_ip.speech_mode))
|
||||
return -EAGAIN;
|
||||
|
||||
if (data_ind->msgUnitParam.u8Size < 1) {
|
||||
if (l1p_msg) {
|
||||
l1p = msgb_l1prim(l1p_msg);
|
||||
data_ind = &l1p->u.phDataInd;
|
||||
}
|
||||
|
||||
if (!l1p_msg || data_ind->msgUnitParam.u8Size < 1) {
|
||||
LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
|
||||
/* Push empty payload to upper layers */
|
||||
rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
|
||||
|
|
Loading…
Reference in New Issue