fw/layer1: Properly set/reset ciphering parameters when needed
authorSylvain Munaut <tnt@246tNt.com>
Wed, 15 Sep 2010 07:40:25 +0000 (09:40 +0200)
committerSylvain Munaut <tnt@246tNt.com>
Fri, 17 Sep 2010 18:52:41 +0000 (20:52 +0200)
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
src/target/firmware/layer1/l23_api.c

index ca8d26a..0027a3b 100644 (file)
@@ -233,8 +233,12 @@ static void l1ctl_rx_crypto_req(struct msgb *msg)
 
        printd("L1CTL_CRYPTO_REQ (algo=A5/%u, len=%u)\n", cr->algo, key_len);
 
-       // for dieter: (cr->alog, cr->key, key_len);
+       if (cr->algo && key_len != 8) {
+               printd("L1CTL_CRYPTO_REQ -> Invalid key\n");
+               return;
+       }
 
+       dsp_load_ciph_param(cr->algo, cr->key);
 }
 
 /* receive a L1CTL_DM_REL_REQ from L23 */
@@ -248,6 +252,7 @@ static void l1ctl_rx_dm_rel_req(struct msgb *msg)
        l1s.dedicated.type = GSM_DCHAN_NONE;
        l1a_txq_msgb_flush(&l1s.tx_queue[L1S_CHAN_MAIN]);
        l1a_txq_msgb_flush(&l1s.tx_queue[L1S_CHAN_SACCH]);
+       dsp_load_ciph_param(0, NULL);
 }
 
 /* receive a L1CTL_RACH_REQ from L23 */