|
|
|
@ -69,19 +69,19 @@ int tx_pdtch_fn(struct trx_instance *trx, struct trx_ts *ts, |
|
|
|
|
struct trx_lchan_state *lchan, |
|
|
|
|
struct sched_burst_req *br); |
|
|
|
|
|
|
|
|
|
const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
[TRXC_IDLE] = { |
|
|
|
|
const struct trx_lchan_desc trx_lchan_desc[_L1SCHED_CHAN_MAX] = { |
|
|
|
|
[L1SCHED_IDLE] = { |
|
|
|
|
.name = "IDLE", |
|
|
|
|
.desc = "Idle channel", |
|
|
|
|
/* The MS needs to perform neighbour measurements during
|
|
|
|
|
* IDLE slots, however this is not implemented (yet). */ |
|
|
|
|
}, |
|
|
|
|
[TRXC_FCCH] = { |
|
|
|
|
[L1SCHED_FCCH] = { |
|
|
|
|
.name = "FCCH", /* 3GPP TS 05.02, section 3.3.2.1 */ |
|
|
|
|
.desc = "Frequency correction channel", |
|
|
|
|
/* Handled by transceiver, nothing to do. */ |
|
|
|
|
}, |
|
|
|
|
[TRXC_SCH] = { |
|
|
|
|
[L1SCHED_SCH] = { |
|
|
|
|
.name = "SCH", /* 3GPP TS 05.02, section 3.3.2.2 */ |
|
|
|
|
.desc = "Synchronization channel", |
|
|
|
|
|
|
|
|
@ -90,7 +90,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.flags = TRX_CH_FLAG_AUTO, |
|
|
|
|
.rx_fn = rx_sch_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_BCCH] = { |
|
|
|
|
[L1SCHED_BCCH] = { |
|
|
|
|
.name = "BCCH", /* 3GPP TS 05.02, section 3.3.2.3 */ |
|
|
|
|
.desc = "Broadcast control channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_BCCH, |
|
|
|
@ -103,7 +103,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.flags = TRX_CH_FLAG_AUTO, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_RACH] = { |
|
|
|
|
[L1SCHED_RACH] = { |
|
|
|
|
.name = "RACH", /* 3GPP TS 05.02, section 3.3.3.1 */ |
|
|
|
|
.desc = "Random access channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_RACH, |
|
|
|
@ -113,7 +113,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.flags = TRX_CH_FLAG_AUTO, |
|
|
|
|
.tx_fn = tx_rach_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_CCCH] = { |
|
|
|
|
[L1SCHED_CCCH] = { |
|
|
|
|
.name = "CCCH", /* 3GPP TS 05.02, section 3.3.3.1 */ |
|
|
|
|
.desc = "Common control channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_CCCH, |
|
|
|
@ -126,7 +126,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.flags = TRX_CH_FLAG_AUTO, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_TCHF] = { |
|
|
|
|
[L1SCHED_TCHF] = { |
|
|
|
|
.name = "TCH/F", /* 3GPP TS 05.02, section 3.2 */ |
|
|
|
|
.desc = "Full Rate traffic channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_F, |
|
|
|
@ -149,7 +149,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.rx_fn = rx_tchf_fn, |
|
|
|
|
.tx_fn = tx_tchf_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_TCHH_0] = { |
|
|
|
|
[L1SCHED_TCHH_0] = { |
|
|
|
|
.name = "TCH/H(0)", /* 3GPP TS 05.02, section 3.2 */ |
|
|
|
|
.desc = "Half Rate traffic channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_H, |
|
|
|
@ -178,7 +178,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.rx_fn = rx_tchh_fn, |
|
|
|
|
.tx_fn = tx_tchh_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_TCHH_1] = { |
|
|
|
|
[L1SCHED_TCHH_1] = { |
|
|
|
|
.name = "TCH/H(1)", /* 3GPP TS 05.02, section 3.2 */ |
|
|
|
|
.desc = "Half Rate traffic channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_H, |
|
|
|
@ -186,13 +186,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_TCHH_0, see above. */ |
|
|
|
|
/* Same as for L1SCHED_TCHH_0, see above. */ |
|
|
|
|
.burst_buf_size = 6 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_tchh_fn, |
|
|
|
|
.tx_fn = tx_tchh_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH4_0] = { |
|
|
|
|
[L1SCHED_SDCCH4_0] = { |
|
|
|
|
.name = "SDCCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4, |
|
|
|
@ -200,13 +200,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 0, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH4_1] = { |
|
|
|
|
[L1SCHED_SDCCH4_1] = { |
|
|
|
|
.name = "SDCCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4, |
|
|
|
@ -214,13 +214,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH4_2] = { |
|
|
|
|
[L1SCHED_SDCCH4_2] = { |
|
|
|
|
.name = "SDCCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 2)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4, |
|
|
|
@ -228,13 +228,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH4_3] = { |
|
|
|
|
[L1SCHED_SDCCH4_3] = { |
|
|
|
|
.name = "SDCCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 3)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4, |
|
|
|
@ -242,13 +242,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 3, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_0] = { |
|
|
|
|
[L1SCHED_SDCCH8_0] = { |
|
|
|
|
.name = "SDCCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -256,13 +256,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 0, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_1] = { |
|
|
|
|
[L1SCHED_SDCCH8_1] = { |
|
|
|
|
.name = "SDCCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -270,13 +270,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_2] = { |
|
|
|
|
[L1SCHED_SDCCH8_2] = { |
|
|
|
|
.name = "SDCCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 2)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -284,13 +284,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_3] = { |
|
|
|
|
[L1SCHED_SDCCH8_3] = { |
|
|
|
|
.name = "SDCCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 3)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -298,13 +298,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 3, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_4] = { |
|
|
|
|
[L1SCHED_SDCCH8_4] = { |
|
|
|
|
.name = "SDCCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 4)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -312,13 +312,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 4, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_5] = { |
|
|
|
|
[L1SCHED_SDCCH8_5] = { |
|
|
|
|
.name = "SDCCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 5)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -326,13 +326,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 5, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_6] = { |
|
|
|
|
[L1SCHED_SDCCH8_6] = { |
|
|
|
|
.name = "SDCCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 6)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -340,13 +340,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 6, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_7] = { |
|
|
|
|
[L1SCHED_SDCCH8_7] = { |
|
|
|
|
.name = "SDCCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Stand-alone dedicated control channel (sub-channel 7)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8, |
|
|
|
@ -354,26 +354,26 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_DEDIC, |
|
|
|
|
.ss_nr = 7, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCHTF] = { |
|
|
|
|
[L1SCHED_SACCHTF] = { |
|
|
|
|
.name = "SACCH/TF", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow TCH/F associated control channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_F | GSMTAP_CHANNEL_ACCH, |
|
|
|
|
.chan_nr = RSL_CHAN_Bm_ACCHs, |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCHTH_0] = { |
|
|
|
|
[L1SCHED_SACCHTH_0] = { |
|
|
|
|
.name = "SACCH/TH(0)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow TCH/H associated control channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_H | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -381,13 +381,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 0, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCHTH_1] = { |
|
|
|
|
[L1SCHED_SACCHTH_1] = { |
|
|
|
|
.name = "SACCH/TH(1)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow TCH/H associated control channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_TCH_H | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -395,13 +395,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH4_0] = { |
|
|
|
|
[L1SCHED_SACCH4_0] = { |
|
|
|
|
.name = "SACCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/4 associated control channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -409,13 +409,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 0, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH4_1] = { |
|
|
|
|
[L1SCHED_SACCH4_1] = { |
|
|
|
|
.name = "SACCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/4 associated control channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -423,13 +423,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH4_2] = { |
|
|
|
|
[L1SCHED_SACCH4_2] = { |
|
|
|
|
.name = "SACCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/4 associated control channel (sub-channel 2)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -437,13 +437,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH4_3] = { |
|
|
|
|
[L1SCHED_SACCH4_3] = { |
|
|
|
|
.name = "SACCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/4 associated control channel (sub-channel 3)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH4 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -451,13 +451,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 3, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH4_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_0] = { |
|
|
|
|
[L1SCHED_SACCH8_0] = { |
|
|
|
|
.name = "SACCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 0)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -465,13 +465,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 0, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_1] = { |
|
|
|
|
[L1SCHED_SACCH8_1] = { |
|
|
|
|
.name = "SACCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 1)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -479,13 +479,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 1, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_2] = { |
|
|
|
|
[L1SCHED_SACCH8_2] = { |
|
|
|
|
.name = "SACCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 2)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -493,13 +493,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_3] = { |
|
|
|
|
[L1SCHED_SACCH8_3] = { |
|
|
|
|
.name = "SACCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 3)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -507,13 +507,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 3, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_4] = { |
|
|
|
|
[L1SCHED_SACCH8_4] = { |
|
|
|
|
.name = "SACCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 4)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -521,13 +521,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 4, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_5] = { |
|
|
|
|
[L1SCHED_SACCH8_5] = { |
|
|
|
|
.name = "SACCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 5)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -535,13 +535,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 5, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_6] = { |
|
|
|
|
[L1SCHED_SACCH8_6] = { |
|
|
|
|
.name = "SACCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 6)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -549,13 +549,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 6, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SACCH8_7] = { |
|
|
|
|
[L1SCHED_SACCH8_7] = { |
|
|
|
|
.name = "SACCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */ |
|
|
|
|
.desc = "Slow SDCCH/8 associated control channel (sub-channel 7)", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_SDCCH8 | GSMTAP_CHANNEL_ACCH, |
|
|
|
@ -563,13 +563,13 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.link_id = TRX_CH_LID_SACCH, |
|
|
|
|
.ss_nr = 7, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH and L1SCHED_SDCCH8_* (xCCH), see above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_CBTX, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
.tx_fn = tx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_PDTCH] = { |
|
|
|
|
[L1SCHED_PDTCH] = { |
|
|
|
|
.name = "PDTCH", /* 3GPP TS 05.02, sections 3.2.4, 3.3.2.4 */ |
|
|
|
|
.desc = "Packet data traffic & control channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_PDTCH, |
|
|
|
@ -584,7 +584,7 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.rx_fn = rx_pdtch_fn, |
|
|
|
|
.tx_fn = tx_pdtch_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_PTCCH] = { |
|
|
|
|
[L1SCHED_PTCCH] = { |
|
|
|
|
.name = "PTCCH", /* 3GPP TS 05.02, section 3.3.4.2 */ |
|
|
|
|
.desc = "Packet Timing advance control channel", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_PTCCH, |
|
|
|
@ -601,26 +601,26 @@ const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = { |
|
|
|
|
.rx_fn = rx_pdtch_fn, |
|
|
|
|
.tx_fn = tx_rach_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH4_CBCH] = { |
|
|
|
|
[L1SCHED_SDCCH4_CBCH] = { |
|
|
|
|
.name = "SDCCH/4(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */ |
|
|
|
|
.desc = "Cell Broadcast channel on SDCCH/4", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_CBCH51, |
|
|
|
|
.chan_nr = RSL_CHAN_OSMO_CBCH4, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), but Rx only. See above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.flags = TRX_CH_FLAG_AUTO, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
}, |
|
|
|
|
[TRXC_SDCCH8_CBCH] = { |
|
|
|
|
[L1SCHED_SDCCH8_CBCH] = { |
|
|
|
|
.name = "SDCCH/8(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */ |
|
|
|
|
.desc = "Cell Broadcast channel on SDCCH/8", |
|
|
|
|
.gsmtap_chan_type = GSMTAP_CHANNEL_CBCH52, |
|
|
|
|
.chan_nr = RSL_CHAN_OSMO_CBCH8, |
|
|
|
|
.ss_nr = 2, |
|
|
|
|
|
|
|
|
|
/* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */ |
|
|
|
|
/* Same as for L1SCHED_BCCH (xCCH), but Rx only. See above. */ |
|
|
|
|
.burst_buf_size = 4 * GSM_BURST_PL_LEN, |
|
|
|
|
.rx_fn = rx_data_fn, |
|
|
|
|
}, |
|
|
|
|