aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp31
-rw-r--r--src/gprs_rlcmac.cpp33
-rw-r--r--src/gprs_rlcmac.h4
3 files changed, 29 insertions, 39 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 83c50297..af1a8194 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -340,8 +340,35 @@ void gprs_rlcmac_pdch::add_paging(struct gprs_rlcmac_paging *pag)
llist_add(&pag->list, &paging_list);
}
+/* received RLC/MAC block from L1 */
int gprs_rlcmac_pdch::rcv_block(uint8_t *data, uint8_t len, uint32_t fn, int8_t rssi)
{
- return gprs_rlcmac_rcv_block(trx->bts->bts_data(),
- trx->trx_no, ts_no, data, len, fn, rssi);
+ struct gprs_rlcmac_bts *bts = trx->bts->bts_data();
+ unsigned payload = data[0] >> 6;
+ uint8_t trx_no = trx->trx_no;
+ bitvec *block;
+ int rc = 0;
+
+ switch (payload) {
+ case GPRS_RLCMAC_DATA_BLOCK:
+ rc = gprs_rlcmac_rcv_data_block_acknowledged(bts, trx_no, ts_no, data,
+ len, rssi);
+ break;
+ case GPRS_RLCMAC_CONTROL_BLOCK:
+ block = bitvec_alloc(len);
+ if (!block)
+ return -ENOMEM;
+ bitvec_unpack(block, data);
+ rc = gprs_rlcmac_rcv_control_block(bts, block, trx_no, ts_no, fn);
+ bitvec_free(block);
+ break;
+ case GPRS_RLCMAC_CONTROL_BLOCK_OPT:
+ LOGP(DRLCMAC, LOGL_NOTICE, "GPRS_RLCMAC_CONTROL_BLOCK_OPT block payload is not supported.\n");
+ break;
+ default:
+ LOGP(DRLCMAC, LOGL_NOTICE, "Unknown RLCMAC block payload(%u).\n", payload);
+ rc = -EINVAL;
+ }
+
+ return rc;
}
diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp
index 4adcfbac..62e8ea7b 100644
--- a/src/gprs_rlcmac.cpp
+++ b/src/gprs_rlcmac.cpp
@@ -168,39 +168,6 @@ int tfi_find_free(struct gprs_rlcmac_bts *bts, enum gprs_rlcmac_tbf_direction di
return -1;
}
-/* received RLC/MAC block from L1 */
-int gprs_rlcmac_rcv_block(struct gprs_rlcmac_bts *bts,
- uint8_t trx, uint8_t ts, uint8_t *data, uint8_t len,
- uint32_t fn, int8_t rssi)
-{
- unsigned payload = data[0] >> 6;
- bitvec *block;
- int rc = 0;
-
- switch (payload) {
- case GPRS_RLCMAC_DATA_BLOCK:
- rc = gprs_rlcmac_rcv_data_block_acknowledged(bts, trx, ts, data,
- len, rssi);
- break;
- case GPRS_RLCMAC_CONTROL_BLOCK:
- block = bitvec_alloc(len);
- if (!block)
- return -ENOMEM;
- bitvec_unpack(block, data);
- rc = gprs_rlcmac_rcv_control_block(bts, block, trx, ts, fn);
- bitvec_free(block);
- break;
- case GPRS_RLCMAC_CONTROL_BLOCK_OPT:
- LOGP(DRLCMAC, LOGL_NOTICE, "GPRS_RLCMAC_CONTROL_BLOCK_OPT block payload is not supported.\n");
- break;
- default:
- LOGP(DRLCMAC, LOGL_NOTICE, "Unknown RLCMAC block payload(%u).\n", payload);
- rc = -EINVAL;
- }
-
- return rc;
-}
-
/* Send Uplink unit-data to SGSN. */
int gprs_rlcmac_tx_ul_ud(gprs_rlcmac_tbf *tbf)
{
diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h
index d06a4860..081271d8 100644
--- a/src/gprs_rlcmac.h
+++ b/src/gprs_rlcmac.h
@@ -92,10 +92,6 @@ enum gprs_rlcmac_block_type {
GPRS_RLCMAC_RESERVED = 0x3
};
-int gprs_rlcmac_rcv_block(struct gprs_rlcmac_bts *bts,
- uint8_t trx, uint8_t ts, uint8_t *data, uint8_t len,
- uint32_t fn, int8_t rssi);
-
int gprs_rlcmac_tx_ul_ud(gprs_rlcmac_tbf *tbf);
int gprs_rlcmac_poll_timeout(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf);