fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmocom-bb/+/30952 )


Change subject: modem: send CHANNEL REQUEST from modem_rx_bcch()
......................................................................

modem: send CHANNEL REQUEST from modem_rx_bcch()

Sending CHANNEL REQUEST from handle_si13() was a bad idea because
this function returns early if SI13 was received before SI1.

Change-Id: I21f1d68cb9b1d20b356697ba1efe28c3d87fa004
Fixes: 49d993e4abdd8fac8b111e92078563fd9bb28df1
Related: OS#5500
---
M src/host/layer23/src/modem/app_modem.c
1 file changed, 24 insertions(+), 15 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/52/30952/1

diff --git a/src/host/layer23/src/modem/app_modem.c 
b/src/host/layer23/src/modem/app_modem.c
index ec267e5..8af3243 100644
--- a/src/host/layer23/src/modem/app_modem.c
+++ b/src/host/layer23/src/modem/app_modem.c
@@ -67,6 +67,26 @@
        return 0x78 | (rnd & 0x07);
 }

+static int modem_tx_chan_req(struct osmocom_ms *ms, bool single_block)
+{
+       struct gsm48_rrlayer *rr = &ms->rrlayer;
+
+       OSMO_ASSERT(rr->state == GSM48_RR_ST_IDLE);
+
+       if (!app_data.si.si1)
+               return -EBUSY;
+       if (!app_data.si.gprs.supported)
+               return -ENOTSUP;
+
+       rr->cr_ra = gen_chan_req(single_block);
+       LOGP(DRR, LOGL_NOTICE, "Sending CHANNEL REQUEST (0x%02x)\n", rr->cr_ra);
+       l1ctl_tx_rach_req(ms, RSL_CHAN_RACH, 0x00, rr->cr_ra, 0,
+                         app_data.ccch_mode == CCCH_MODE_COMBINED);
+
+       rr->state = GSM48_RR_ST_CONN_PEND;
+       return 0;
+}
+
 static int handle_si1(struct osmocom_ms *ms, struct msgb *msg)
 {
        int rc;
@@ -147,7 +167,6 @@

 static int handle_si13(struct osmocom_ms *ms, struct msgb *msg)
 {
-       struct gsm48_rrlayer *rr = &ms->rrlayer;
        int rc;

        if (msgb_l3len(msg) != GSM_MACBLOCK_LEN)
@@ -159,20 +178,6 @@
        if (rc != 0)
                return rc;

-       /* HACK: request an Uplink TBF here (one phase access) */
-       if (rr->state == GSM48_RR_ST_IDLE) {
-               if (!app_data.si.si1)
-                       return 0;
-               if (!app_data.si.gprs.supported)
-                       return 0;
-
-               rr->cr_ra = gen_chan_req(false);
-               LOGP(DRR, LOGL_NOTICE, "Sending CHANNEL REQUEST (0x%02x)\n", 
rr->cr_ra);
-               l1ctl_tx_rach_req(ms, RSL_CHAN_RACH, 0x00, rr->cr_ra, 0,
-                                 app_data.ccch_mode == CCCH_MODE_COMBINED);
-               rr->state = GSM48_RR_ST_CONN_PEND;
-       }
-
        return 0;
 }

@@ -184,6 +189,10 @@
        LOGP(DRR, LOGL_INFO, "BCCH message (type=0x%02x): %s\n",
             si_type, gsm48_rr_msg_name(si_type));

+       /* HACK: request an Uplink TBF here (one phase access) */
+       if (ms->rrlayer.state == GSM48_RR_ST_IDLE)
+               modem_tx_chan_req(ms, false);
+
        switch (si_type) {
        case GSM48_MT_RR_SYSINFO_1:
                return handle_si1(ms, msg);

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

Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I21f1d68cb9b1d20b356697ba1efe28c3d87fa004
Gerrit-Change-Number: 30952
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to