fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bts/+/29217 )


Change subject: osmo-bts-trx: fix handling of ciphering params in 
PRIM_INFO_MODIFY
......................................................................

osmo-bts-trx: fix handling of ciphering params in PRIM_INFO_MODIFY

The PRIM_INFO_MODIFY is sent on receipt of the RSL MODE MODIFY message,
which may optionally contain new ciphering parameters.  Before this
patch, osmo-bts-trx would ignore the new parameters and continue using
the old ciphering key/algorithm.

* Modify l1if_set_ciphering() to allow updating ciphering params.
* Call l1if_set_ciphering() when handling PRIM_INFO_MODIFY.

This problem was uncovered by BTS_Tests.TC_rsl_modify_encr, which has
been failing ever since it was introduced [1].  This patch makes it pass.

Change-Id: I2278703b487374c0de4cfc42b22e70aaf6548589
Related: [1] I4cbea499bb6a331d314e6573548a4540945208b5 osmo-ttcn3-hacks.git
Related: OS#3750
---
M src/osmo-bts-trx/l1_if.c
1 file changed, 9 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/17/29217/1

diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index 92180b5..8c364c3 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -326,8 +326,8 @@
 /* enable ciphering */
 static int l1if_set_ciphering(struct gsm_lchan *lchan, uint8_t chan_nr, int 
downlink)
 {
-       /* ciphering already enabled in both directions */
-       if (lchan->ciph_state == LCHAN_CIPH_RXTX_CONF)
+       /* ignore the request when the channel is not active */
+       if (lchan->state != LCHAN_S_ACTIVE)
                return -EINVAL;

        if (!downlink) {
@@ -463,6 +463,13 @@
                                        lchan->tch.amr_mr.mode[3].mode,
                                        amr_get_initial_mode(lchan),
                                        0);
+                               /* update ciphering params */
+                               l1if_set_ciphering(lchan, chan_nr, 0);
+                               l1if_set_ciphering(lchan, chan_nr, 1);
+                               if (lchan->encr.alg_id)
+                                       lchan->ciph_state = 
LCHAN_CIPH_RXTX_CONF;
+                               else
+                                       lchan->ciph_state = LCHAN_CIPH_NONE;
                                break;
                        }
                        /* here, type == PRIM_INFO_DEACTIVATE */

--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/29217
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I2278703b487374c0de4cfc42b22e70aaf6548589
Gerrit-Change-Number: 29217
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to