<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/10602">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">CBCH: Move processing via L1SAP<br><br>for some historical reason, CBCH handling was not using the normal<br>L1SAP boundary.  Let's change that and traverse L1SAP just like for<br>e.g. BCCH which is quite similar to CBCH handling.<br><br>Change-Id: Ibdba4c5e808330f8406f441a97fe0e81170fce97<br>---<br>M include/osmo-bts/l1sap.h<br>M src/common/l1sap.c<br>M src/osmo-bts-litecell15/l1_if.c<br>M src/osmo-bts-octphy/l1_if.c<br>M src/osmo-bts-sysmo/l1_if.c<br>5 files changed, 14 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/02/10602/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/l1sap.h b/include/osmo-bts/l1sap.h</span><br><span>index ad13145..8c90838 100644</span><br><span>--- a/include/osmo-bts/l1sap.h</span><br><span>+++ b/include/osmo-bts/l1sap.h</span><br><span>@@ -23,6 +23,7 @@</span><br><span> #define L1SAP_IS_CHAN_RACH(chan_nr) ((chan_nr & 0xf8) == 0x88)</span><br><span> #define L1SAP_IS_CHAN_AGCH_PCH(chan_nr) ((chan_nr & 0xf8) == 0x90)</span><br><span> #define L1SAP_IS_CHAN_PDCH(chan_nr) ((chan_nr & 0xf8) == 0xc0)</span><br><span style="color: hsl(120, 100%, 40%);">+#define L1SAP_IS_CHAN_CBCH(chan_nr) ((chan_nr & 0xf8) == 0xc1)</span><br><span> </span><br><span> /* rach type from ra */</span><br><span> #define L1SAP_IS_PACKET_RACH(ra) ((ra & 0xf0) == 0x70 && (ra & 0x0f) != 0x0f)</span><br><span>diff --git a/src/common/l1sap.c b/src/common/l1sap.c</span><br><span>index b8cec0e..a979e42 100644</span><br><span>--- a/src/common/l1sap.c</span><br><span>+++ b/src/common/l1sap.c</span><br><span>@@ -53,6 +53,7 @@</span><br><span> #include <osmo-bts/power_control.h></span><br><span> #include <osmo-bts/msg_utils.h></span><br><span> #include <osmo-bts/pcuif_proto.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmo-bts/cbch.h></span><br><span> </span><br><span> struct gsm_lchan *get_lchan_by_chan_nr(struct gsm_bts_trx *trx,</span><br><span>                                      unsigned int chan_nr)</span><br><span>@@ -727,6 +728,9 @@</span><br><span>                   memcpy(p, si, GSM_MACBLOCK_LEN);</span><br><span>             else</span><br><span>                         memcpy(p, fill_frame, GSM_MACBLOCK_LEN);</span><br><span style="color: hsl(120, 100%, 40%);">+      } else if (L1SAP_IS_CHAN_CBCH(chan_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+             p = msgb_put(msg, GSM_MACBLOCK_LEN);</span><br><span style="color: hsl(120, 100%, 40%);">+          bts_cbch_get(trx->bts, p, &g_time);</span><br><span>   } else if (!(chan_nr & 0x80)) { /* only TCH/F, TCH/H, SDCCH/4 and SDCCH/8 have C5 bit cleared */</span><br><span>                 lchan = get_active_lchan_by_chan_nr(trx, chan_nr);</span><br><span>           if (!lchan) {</span><br><span>diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c</span><br><span>index e6cdfd4..8bb4909 100644</span><br><span>--- a/src/osmo-bts-litecell15/l1_if.c</span><br><span>+++ b/src/osmo-bts-litecell15/l1_if.c</span><br><span>@@ -50,7 +50,6 @@</span><br><span> #include <osmo-bts/measurement.h></span><br><span> #include <osmo-bts/pcu_if.h></span><br><span> #include <osmo-bts/handover.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/cbch.h></span><br><span> #include <osmo-bts/bts_model.h></span><br><span> #include <osmo-bts/l1sap.h></span><br><span> #include <osmo-bts/msg_utils.h></span><br><span>@@ -700,6 +699,9 @@</span><br><span>     case GsmL1_Sapi_Bcch:</span><br><span>                cbits = 0x10;</span><br><span>                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GsmL1_Sapi_Cbch:</span><br><span style="color: hsl(120, 100%, 40%);">+         cbits = 0xc1; /* Osmocom extension for CBCH via L1SAP */</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span>       case GsmL1_Sapi_Sacch:</span><br><span>               switch(pchan) {</span><br><span>              case GSM_PCHAN_TCH_F:</span><br><span>@@ -863,10 +865,6 @@</span><br><span>         case GsmL1_Sapi_Prach:</span><br><span>               goto empty_frame;</span><br><span>            break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case GsmL1_Sapi_Cbch:</span><br><span style="color: hsl(0, 100%, 40%);">-           /* get them from bts->si_buf[] */</span><br><span style="color: hsl(0, 100%, 40%);">-            bts_cbch_get(bts, msu_param->u8Buffer, &g_time);</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span>       default:</span><br><span>             memcpy(msu_param->u8Buffer, fill_frame, GSM_MACBLOCK_LEN);</span><br><span>                break;</span><br><span>diff --git a/src/osmo-bts-octphy/l1_if.c b/src/osmo-bts-octphy/l1_if.c</span><br><span>index 91ef07b..8ce8163 100644</span><br><span>--- a/src/osmo-bts-octphy/l1_if.c</span><br><span>+++ b/src/osmo-bts-octphy/l1_if.c</span><br><span>@@ -43,7 +43,6 @@</span><br><span> #include <osmo-bts/logging.h></span><br><span> #include <osmo-bts/l1sap.h></span><br><span> #include <osmo-bts/handover.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/cbch.h></span><br><span> </span><br><span> #include "l1_if.h"</span><br><span> #include "l1_oml.h"</span><br><span>@@ -357,6 +356,9 @@</span><br><span>   case cOCTVC1_GSM_SAPI_ENUM_BCCH:</span><br><span>             cbits = 0x10;</span><br><span>                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case cOCTVC1_GSM_SAPI_ENUM_CBCH:</span><br><span style="color: hsl(120, 100%, 40%);">+              cbits = 0xc1; /* Osmocom extension for CBCH via L1SAP */</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span>       case cOCTVC1_GSM_SAPI_ENUM_SACCH:</span><br><span>            switch (pchan) {</span><br><span>             case GSM_PCHAN_TCH_F:</span><br><span>@@ -1017,10 +1019,6 @@</span><br><span>                       (g_time.t1 << 7) | (g_time.t2 << 2) | (t3p >> 1);</span><br><span>          data_req->Data.abyDataContent[3] = (t3p & 1);</span><br><span>                 break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case cOCTVC1_GSM_SAPI_ENUM_CBCH:</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = bts_cbch_get(bts, data_req->Data.abyDataContent, &g_time);</span><br><span style="color: hsl(0, 100%, 40%);">-          data_req->Data.ulDataLength = 23;   /* GSM MAX BLK SIZE */</span><br><span style="color: hsl(0, 100%, 40%);">-           break;</span><br><span>       case cOCTVC1_GSM_SAPI_ENUM_PRACH:</span><br><span> #if 0</span><br><span>           /* in case we decide to send an empty frame... */</span><br><span>diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c</span><br><span>index 3adb442..5d52146 100644</span><br><span>--- a/src/osmo-bts-sysmo/l1_if.c</span><br><span>+++ b/src/osmo-bts-sysmo/l1_if.c</span><br><span>@@ -46,7 +46,6 @@</span><br><span> #include <osmo-bts/measurement.h></span><br><span> #include <osmo-bts/pcu_if.h></span><br><span> #include <osmo-bts/handover.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmo-bts/cbch.h></span><br><span> #include <osmo-bts/bts_model.h></span><br><span> #include <osmo-bts/l1sap.h></span><br><span> #include <osmo-bts/msg_utils.h></span><br><span>@@ -697,6 +696,9 @@</span><br><span>     case GsmL1_Sapi_Bcch:</span><br><span>                cbits = 0x10;</span><br><span>                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GsmL1_Sapi_Cbch:</span><br><span style="color: hsl(120, 100%, 40%);">+         cbits = 0xc1; /* Osmocom extension for CBCH via L1SAP */</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span>       case GsmL1_Sapi_Sacch:</span><br><span>               switch(pchan) {</span><br><span>              case GSM_PCHAN_TCH_F:</span><br><span>@@ -860,10 +862,6 @@</span><br><span>         case GsmL1_Sapi_Prach:</span><br><span>               goto empty_frame;</span><br><span>            break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case GsmL1_Sapi_Cbch:</span><br><span style="color: hsl(0, 100%, 40%);">-           /* get them from bts->si_buf[] */</span><br><span style="color: hsl(0, 100%, 40%);">-            bts_cbch_get(bts, msu_param->u8Buffer, &g_time);</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span>       default:</span><br><span>             memcpy(msu_param->u8Buffer, fill_frame, GSM_MACBLOCK_LEN);</span><br><span>                break;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10602">change 10602</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/10602"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ibdba4c5e808330f8406f441a97fe0e81170fce97 </div>
<div style="display:none"> Gerrit-Change-Number: 10602 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>