<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/14218">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon/scheduler: refactor description of TRXC_* lchans<br><br>Let's avoid fancy alignment in the description of logical channels<br>for the benefits of having better readability, the ability to add<br>more comments and fields without making it look ugly.<br><br>Also, let's get rid of field 'chan' of 'trx_lchan_desc' structure<br>since it's not used anywhere, and not actually needed because the<br>position of each lchan description is defined by its TRXC_* type.<br><br>As a bonus, let's add a human readable description to each<br>lchan definition, so it can be printed in the VTY some day.<br><br>Change-Id: I2fc61e1cdca4690a34e2861b9ee3b7c64ea64843<br>---<br>M src/host/trxcon/sched_lchan_desc.c<br>M src/host/trxcon/sched_trx.h<br>2 files changed, 438 insertions(+), 211 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/sched_lchan_desc.c b/src/host/trxcon/sched_lchan_desc.c</span><br><span>index 8bc336e..5cee7c8 100644</span><br><span>--- a/src/host/trxcon/sched_lchan_desc.c</span><br><span>+++ b/src/host/trxcon/sched_lchan_desc.c</span><br><span>@@ -63,256 +63,482 @@</span><br><span>  struct trx_lchan_state *lchan, uint32_t fn, uint8_t bid);</span><br><span> </span><br><span> const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = {</span><br><span style="color: hsl(0, 100%, 40%);">-  {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_IDLE,              "IDLE",</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_IDLE] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "IDLE",</span><br><span style="color: hsl(120, 100%, 40%);">+             .desc = "Idle channel",</span><br><span style="color: hsl(120, 100%, 40%);">+             /* The MS needs to perform neighbour measurements during</span><br><span style="color: hsl(120, 100%, 40%);">+               * IDLE slots, however this is not implemented (yet). */</span><br><span style="color: hsl(120, 100%, 40%);">+      },</span><br><span style="color: hsl(120, 100%, 40%);">+    [TRXC_FCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "FCCH", /* 3GPP TS 05.02, section 3.3.2.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Frequency correction channel",</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Handled by transceiver, nothing to do. */</span><br><span style="color: hsl(120, 100%, 40%);">+  },</span><br><span style="color: hsl(120, 100%, 40%);">+    [TRXC_SCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+                .name = "SCH", /* 3GPP TS 05.02, section 3.3.2.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+         .desc = "Synchronization channel",</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                /**</span><br><span style="color: hsl(0, 100%, 40%);">-              * MS: do nothing, save power...</span><br><span style="color: hsl(0, 100%, 40%);">-                 * BTS: send dummy burst on C0</span><br><span style="color: hsl(0, 100%, 40%);">-           */</span><br><span style="color: hsl(0, 100%, 40%);">-             NULL,                   NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+         /* 3GPP TS 05.03, section 4.7. Handled by transceiver,</span><br><span style="color: hsl(120, 100%, 40%);">+                 * however we still need to parse BSIC (BCC / NCC). */</span><br><span style="color: hsl(120, 100%, 40%);">+                .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_sch_fn,</span><br><span>  },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_FCCH,              "FCCH",</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_BCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "BCCH", /* 3GPP TS 05.02, section 3.3.2.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Broadcast control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_BCCH,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           /* FCCH is handled by transceiver */</span><br><span style="color: hsl(0, 100%, 40%);">-            NULL,                   NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+         /* Rx only, xCCH convolutional coding (3GPP TS 05.03, section 4.4),</span><br><span style="color: hsl(120, 100%, 40%);">+            * regular interleaving (3GPP TS 05.02, clause 7, table 3):</span><br><span style="color: hsl(120, 100%, 40%);">+            * a L2 frame is interleaved over 4 consecutive bursts. */</span><br><span style="color: hsl(120, 100%, 40%);">+            .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SCH,               "SCH",</span><br><span style="color: hsl(0, 100%, 40%);">-                0x00,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+     [TRXC_RACH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "RACH", /* 3GPP TS 05.02, section 3.3.3.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Random access channel",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_RACH,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           /**</span><br><span style="color: hsl(0, 100%, 40%);">-              * We already have clock indications from TRX,</span><br><span style="color: hsl(0, 100%, 40%);">-           * but we also need BSIC (BCC / NCC) value.</span><br><span style="color: hsl(0, 100%, 40%);">-              */</span><br><span style="color: hsl(0, 100%, 40%);">-             rx_sch_fn,              NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+         /* Tx only, RACH convolutional coding (3GPP TS 05.03, section 4.6). */</span><br><span style="color: hsl(120, 100%, 40%);">+                .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+            .tx_fn = tx_rach_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_BCCH,              "BCCH",</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL_CHAN_BCCH,          TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_CCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "CCCH", /* 3GPP TS 05.02, section 3.3.3.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Common control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+           .chan_nr = RSL_CHAN_PCH_AGCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+               /* Rx only, xCCH convolutional coding (3GPP TS 05.03, section 4.4),</span><br><span style="color: hsl(120, 100%, 40%);">+            * regular interleaving (3GPP TS 05.02, clause 7, table 3):</span><br><span style="color: hsl(120, 100%, 40%);">+            * a L2 frame is interleaved over 4 consecutive bursts. */</span><br><span style="color: hsl(120, 100%, 40%);">+            .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_RACH,              "RACH",</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL_CHAN_RACH,          TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               0x00,                   TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">-               NULL,                   tx_rach_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_TCHF] = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .name = "TCH/F", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+           .desc = "Full Rate traffic channel",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_Bm_ACCHs,</span><br><span style="color: hsl(120, 100%, 40%);">+         .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Rx and Tx, multiple convolutional coding types (3GPP TS 05.03,</span><br><span style="color: hsl(120, 100%, 40%);">+              * chapter 3), block diagonal interleaving (3GPP TS 05.02, clause 7):</span><br><span style="color: hsl(120, 100%, 40%);">+          *</span><br><span style="color: hsl(120, 100%, 40%);">+             *   - a traffic frame is interleaved over 8 consecutive bursts</span><br><span style="color: hsl(120, 100%, 40%);">+                *     using the even numbered bits of the first 4 bursts</span><br><span style="color: hsl(120, 100%, 40%);">+              *     and odd numbered bits of the last 4 bursts;</span><br><span style="color: hsl(120, 100%, 40%);">+             *   - a FACCH/F frame 'steals' (replaces) one traffic frame,</span><br><span style="color: hsl(120, 100%, 40%);">+          *     interleaving is done in the same way.</span><br><span style="color: hsl(120, 100%, 40%);">+           *</span><br><span style="color: hsl(120, 100%, 40%);">+             * The MS shall continuously transmit bursts, even if there is nothing</span><br><span style="color: hsl(120, 100%, 40%);">+                 * to send, unless DTX (Discontinuous Transmission) is used. */</span><br><span style="color: hsl(120, 100%, 40%);">+               .burst_buf_size = 8 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_tchf_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_tchf_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_CCCH,              "CCCH",</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL_CHAN_PCH_AGCH,      TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_TCHH_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+             .name = "TCH/H(0)", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Half Rate traffic channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_Lm_ACCHs + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+                .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Rx and Tx, multiple convolutional coding types (3GPP TS 05.03,</span><br><span style="color: hsl(120, 100%, 40%);">+              * chapter 3), block diagonal interleaving (3GPP TS 05.02, clause 7):</span><br><span style="color: hsl(120, 100%, 40%);">+          *</span><br><span style="color: hsl(120, 100%, 40%);">+             *   - a traffic frame is interleaved over 6 consecutive bursts</span><br><span style="color: hsl(120, 100%, 40%);">+                *     using the even numbered bits of the first 2 bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+             *     all bits of the middle two 2 bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+            *     and odd numbered bits of the last 2 bursts;</span><br><span style="color: hsl(120, 100%, 40%);">+             *   - a FACCH/H frame 'steals' (replaces) two traffic frames,</span><br><span style="color: hsl(120, 100%, 40%);">+                 *     interleaving is done over 4 consecutive bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+                 *     the same as given for a TCH/FS.</span><br><span style="color: hsl(120, 100%, 40%);">+                 *</span><br><span style="color: hsl(120, 100%, 40%);">+             * The MS shall continuously transmit bursts, even if there is nothing</span><br><span style="color: hsl(120, 100%, 40%);">+                 * to send, unless DTX (Discontinuous Transmission) is used. */</span><br><span style="color: hsl(120, 100%, 40%);">+               .burst_buf_size = 6 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_tchh_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_TCHF,              "TCH/F",</span><br><span style="color: hsl(0, 100%, 40%);">-              RSL_CHAN_Bm_ACCHs,              TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               8 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_tchf_fn,             tx_tchf_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_TCHH_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+             .name = "TCH/H(1)", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+                .desc = "Half Rate traffic channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_Lm_ACCHs + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+                .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_TCHH_0, see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+             .burst_buf_size = 6 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_tchh_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_TCHH_0,            "TCH/H(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-           RSL_CHAN_Lm_ACCHs,              TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               6 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_tchh_fn,             tx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH4_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH4_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_TCHH_1,            "TCH/H(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-           0x18,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               6 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_tchh_fn,             tx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH4_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH4_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH4_0,          "SDCCH/4(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x20,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH4_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH4_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH4_1,          "SDCCH/4(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x28,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH4_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH4_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH4_2,          "SDCCH/4(2)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x30,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH4_3,          "SDCCH/4(3)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x38,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_0,          "SDCCH/8(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x40,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_1,          "SDCCH/8(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x48,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_2,          "SDCCH/8(2)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x50,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_4] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 4)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (4 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_3,          "SDCCH/8(3)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x58,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_5] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 5)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (5 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_4,          "SDCCH/8(4)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x60,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_6] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 6)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (6 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_5,          "SDCCH/8(5)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x68,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SDCCH8_7] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SDCCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Stand-alone dedicated control channel (sub-channel 7)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_SDCCH8_ACCH + (7 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_6,          "SDCCH/8(6)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x70,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCHTF] = {</span><br><span style="color: hsl(120, 100%, 40%);">+            .name = "SACCH/TF", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+            .desc = "Slow TCH/F associated control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_Bm_ACCHs,</span><br><span style="color: hsl(120, 100%, 40%);">+         .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SDCCH8_7,          "SDCCH/8(7)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x78,                   TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCHTH_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+          .name = "SACCH/TH(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+         .desc = "Slow TCH/H associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_Lm_ACCHs + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+                .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCHTF,           "SACCH/TF",</span><br><span style="color: hsl(0, 100%, 40%);">-           0x08,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCHTH_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+          .name = "SACCH/TH(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+         .desc = "Slow TCH/H associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_Lm_ACCHs + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+                .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCHTH_0,         "SACCH/TH(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-                0x10,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH4_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/4 associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH4_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCHTH_1,         "SACCH/TH(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-                0x18,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH4_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/4 associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH4_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH4_0,          "SACCH/4(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x20,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH4_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/4 associated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH4_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH4_1,          "SACCH/4(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x28,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH4_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/4 associated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH4_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH4_2,          "SACCH/4(2)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x30,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH4_3,          "SACCH/4(3)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x38,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_0,          "SACCH/8(0)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x40,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_1,          "SACCH/8(1)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x48,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_2,          "SACCH/8(2)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x50,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_4] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 4)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (4 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_3,          "SACCH/8(3)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x58,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_5] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 5)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (5 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_4,          "SACCH/8(4)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x60,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_6] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 6)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (6 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_5,          "SACCH/8(5)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x68,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_SACCH8_7] = {</span><br><span style="color: hsl(120, 100%, 40%);">+           .name = "SACCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+          .desc = "Slow SDCCH/8 associated control channel (sub-channel 7)",</span><br><span style="color: hsl(120, 100%, 40%);">+          .chan_nr = RSL_CHAN_SDCCH8_ACCH + (7 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+             .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+              .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_6,          "SACCH/8(6)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x70,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_PDTCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+              .name = "PDTCH", /* 3GPP TS 05.02, sections 3.2.4, 3.3.2.4 */</span><br><span style="color: hsl(120, 100%, 40%);">+               .desc = "Packet data traffic & control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_OSMO_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              /* Rx and Tx, multiple coding schemes: CS-2..4 and MCS-1..9 (3GPP TS</span><br><span style="color: hsl(120, 100%, 40%);">+           * 05.03, chapter 5), regular interleaving as specified for xCCH.</span><br><span style="color: hsl(120, 100%, 40%);">+              * NOTE: the burst buffer is three times bigger because the</span><br><span style="color: hsl(120, 100%, 40%);">+            * payload of EDGE bursts is three times longer. */</span><br><span style="color: hsl(120, 100%, 40%);">+           .burst_buf_size = 3 * 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+           .flags = TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_pdtch_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+         .tx_fn = tx_pdtch_fn,</span><br><span>        },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_SACCH8_7,          "SACCH/8(7)",</span><br><span style="color: hsl(0, 100%, 40%);">-         0x78,                   TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(0, 100%, 40%);">-     },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_PDTCH,             "PDTCH",</span><br><span style="color: hsl(0, 100%, 40%);">-              RSL_CHAN_OSMO_PDCH,     TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               12 * GSM_BURST_PL_LEN,  TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_pdtch_fn,            tx_pdtch_fn,</span><br><span style="color: hsl(0, 100%, 40%);">-    },</span><br><span style="color: hsl(0, 100%, 40%);">-      {</span><br><span style="color: hsl(0, 100%, 40%);">-               TRXC_PTCCH,             "PTCCH",</span><br><span style="color: hsl(0, 100%, 40%);">-              RSL_CHAN_OSMO_PDCH,     TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRXC_PTCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+              .name = "PTCCH", /* 3GPP TS 05.02, section 3.3.4.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+               .desc = "Packet Timing advance control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+            .chan_nr = RSL_CHAN_OSMO_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+                .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .flags = TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+            .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+          .tx_fn = tx_data_fn,</span><br><span>         },</span><br><span>   [TRXC_SDCCH4_CBCH] = {</span><br><span style="color: hsl(0, 100%, 40%);">-          TRXC_SDCCH4_CBCH,       "SDCCH/4(CBCH)",</span><br><span style="color: hsl(0, 100%, 40%);">-              RSL_CHAN_OSMO_CBCH4,            TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">-               rx_data_fn,             NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+         .name = "SDCCH/4(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+         .desc = "Cell Broadcast channel on SDCCH/4",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_OSMO_CBCH4,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */</span><br><span style="color: hsl(120, 100%, 40%);">+           .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .rx_fn = rx_data_fn,</span><br><span>         },</span><br><span>   [TRXC_SDCCH8_CBCH] = {</span><br><span style="color: hsl(0, 100%, 40%);">-          TRXC_SDCCH8_CBCH,       "SDCCH/8(CBCH)",</span><br><span style="color: hsl(0, 100%, 40%);">-              RSL_CHAN_OSMO_CBCH8,    TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">-               4 * GSM_BURST_PL_LEN,   0x00,</span><br><span style="color: hsl(0, 100%, 40%);">-           rx_data_fn,             NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+         .name = "SDCCH/8(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+         .desc = "Cell Broadcast channel on SDCCH/8",</span><br><span style="color: hsl(120, 100%, 40%);">+                .chan_nr = RSL_CHAN_OSMO_CBCH8,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */</span><br><span style="color: hsl(120, 100%, 40%);">+           .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+               .rx_fn = rx_data_fn,</span><br><span>         },</span><br><span> };</span><br><span>diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h</span><br><span>index 72d9549..fcb78a7 100644</span><br><span>--- a/src/host/trxcon/sched_trx.h</span><br><span>+++ b/src/host/trxcon/sched_trx.h</span><br><span>@@ -101,10 +101,11 @@</span><br><span>    uint32_t fn, uint8_t bid);</span><br><span> </span><br><span> struct trx_lchan_desc {</span><br><span style="color: hsl(0, 100%, 40%);">-       /*! \brief TRX Channel Type */</span><br><span style="color: hsl(0, 100%, 40%);">-  enum trx_lchan_type chan;</span><br><span>    /*! \brief Human-readable name */</span><br><span>    const char *name;</span><br><span style="color: hsl(120, 100%, 40%);">+     /*! \brief Human-readable description */</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *desc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /*! \brief Channel Number (like in RSL) */</span><br><span>   uint8_t chan_nr;</span><br><span>     /*! \brief Link ID (like in RSL) */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14218">change 14218</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/14218"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I2fc61e1cdca4690a34e2861b9ee3b7c64ea64843 </div>
<div style="display:none"> Gerrit-Change-Number: 14218 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>