diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-12-04 14:20:05 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-12-04 14:41:56 +0100 |
commit | 5b7fc0a8cc0247f8f956637833bbce70ed09b3f2 (patch) | |
tree | 676b9d07bb5d300bed88036ddd7fe20f67242bb6 | |
parent | 7069dfc051d5096e9614a17234646a186de290c9 (diff) |
trxcon: Use current MS Power on dummy meas reports
backpointers are added in order to access the TRX, as advised in the
existing comment.
Change-Id: I975cfc5f5d63eb32a7f8932a7f6a544c9a12233c
-rw-r--r-- | src/host/trxcon/sched_prim.c | 11 | ||||
-rw-r--r-- | src/host/trxcon/sched_trx.c | 6 | ||||
-rw-r--r-- | src/host/trxcon/sched_trx.h | 5 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/host/trxcon/sched_prim.c b/src/host/trxcon/sched_prim.c index 50dfd6e9..fc0f05d5 100644 --- a/src/host/trxcon/sched_prim.c +++ b/src/host/trxcon/sched_prim.c @@ -171,25 +171,18 @@ static struct trx_ts_prim *prim_compose_mr(struct trx_lchan_state *lchan) /* Compose a new Measurement Report primitive */ memcpy(prim->payload, mr_src_ptr, GSM_MACBLOCK_LEN); -#if 0 /** * Update the L1 SACCH pseudo-header (only for cached MRs) * - * FIXME: this would require having access to the trx_instance, - * what can be achieved either by chain-passing the pointer - * through sched_prim_dequeue(), or by adding some - * back-pointers to the logical channel state. - * * TODO: filling of the actual values into cached Measurement * Reports would break the distance spoofing feature. If it * were known whether the spoofing is enabled or not, we could * decide whether to update the cached L1 SACCH header here. */ if (!cached) { - prim->payload[0] = trx->tx_power; - prim->payload[1] = trx->ta; + prim->payload[0] = lchan->ts->trx->tx_power; + prim->payload[1] = lchan->ts->trx->ta; } -#endif /* Inform about the cache usage count */ if (cached && lchan->sacch.mr_cache_usage > 5) { diff --git a/src/host/trxcon/sched_trx.c b/src/host/trxcon/sched_trx.c index eb6f3dc0..6bb662db 100644 --- a/src/host/trxcon/sched_trx.c +++ b/src/host/trxcon/sched_trx.c @@ -202,6 +202,9 @@ struct trx_ts *sched_trx_add_ts(struct trx_instance *trx, int tn) /* Allocate a new one */ trx->ts_list[tn] = talloc_zero(trx, struct trx_ts); + /* Add backpointer */ + trx->ts_list[tn]->trx = trx; + /* Assign TS index */ trx->ts_list[tn]->index = tn; @@ -287,6 +290,9 @@ int sched_trx_configure_ts(struct trx_instance *trx, int tn, if (!lchan) return -ENOMEM; + /* set backpointer */ + lchan->ts = ts; + /* Set channel type */ lchan->type = type; diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h index f2089e88..8718ed69 100644 --- a/src/host/trxcon/sched_trx.h +++ b/src/host/trxcon/sched_trx.h @@ -237,6 +237,9 @@ struct trx_lchan_state { uint8_t key_len; uint8_t algo; } a5; + + /* TS that this lchan belongs to */ + struct trx_ts *ts; }; struct trx_ts { @@ -251,6 +254,8 @@ struct trx_ts { struct llist_head lchans; /*! \brief Queue primitives for TX */ struct llist_head tx_prims; + /* backpointer to its TRX */ + struct trx_instance *trx; }; /* Represents one TX primitive in the queue of trx_ts */ |