Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request Let's finally use the API we introduced in [1]. [1] I96df3352856933c9140177b2801a2c71f4134183 Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Related: OS#1548 --- M src/bts.cpp 1 file changed, 56 insertions(+), 3 deletions(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/bts.cpp b/src/bts.cpp index 2a74978..26cb258 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -685,9 +685,57 @@ * can only receive EGPRS mslot class through 11-bit EGPRS PACKET CHANNEL REQUEST. */ static int parse_egprs_pkt_ch_req(uint16_t ra11, struct chan_req_params *chan_req) { - /* EGPRS multislot class is only present in One Phase Access Request */ - if ((ra11 >> 10) == 0x00) /* .0xx xxx. */ - chan_req->egprs_mslot_class = ((ra11 & 0x3e0) >> 5) + 1; + EGPRS_PacketChannelRequest_t req; + int rc; + + rc = decode_egprs_pkt_ch_req(ra11, ); + if (rc) { + LOGP(DRLCMAC, LOGL_NOTICE, "Failed to decode " +"EGPRS Packet Channel Request: rc=%d\n", rc); + return rc; + } + + LOGP(DRLCMAC, LOGL_INFO, "Rx EGPRS Packet Channel Request: %s\n", +get_value_string(egprs_pkt_ch_req_type_names, req.Type)); + + switch (req.Type) { + case EGPRS_PKT_CHAN_REQ_ONE_PHASE: + chan_req->egprs_mslot_class = req.Content.MultislotClass + 1; + chan_req->priority = req.Content.Priority + 1; + break; + case EGPRS_PKT_CHAN_REQ_SHORT: + chan_req->priority = req.Content.Priority + 1; + if (req.Content.NumberOfBlocks == 0) + chan_req->single_block = true; + break; + case EGPRS_PKT_CHAN_REQ_ONE_PHASE_RED_LATENCY: + chan_req->priority = req.Content.Priority + 1; + break; + /* Two phase access => single block is needed */ + case EGPRS_PKT_CHAN_REQ_TWO_PHASE: + case EGPRS_PKT_CHAN_REQ_TWO_PHASE_IPA: + chan_req->priority = req.Content.Priority + 1; + chan_req->single_block = true; + break; + /* Signalling => single block is needed */ + case EGPRS_PKT_CHAN_REQ_SIGNALLING: + case EGPRS_PKT_CHAN_REQ_SIGNALLING_IPA: + chan_req->single_block = true; + break; + + /* Neither unacknowledged RLC mode, nor emergency calls are supported */ + case EGPRS_PKT_CHAN_REQ_ONE_PHASE_UNACK: + case EGPRS_PKT_CHAN_REQ_EMERGENCY_CALL: + case EGPRS_PKT_CHAN_REQ_DEDICATED_CHANNEL: + LOGP(DRLCMAC, LOGL_NOTICE, "%s is not supported, rejecting\n", +get_value_string(egprs_pkt_ch_req_type_names, req.Type)); + return -ENOTSUP; + + default: + LOGP(DRLCMAC, LOGL_ERROR, "Unknown EGPRS Packet Channel Request " +"type=0x%02x, probably a bug in CSN.1 codec\n", req.Type); + return -EINVAL; + } return 0; } @@ -774,6 +822,11 @@ chan_req.single_block = true; } + /* TODO: handle Radio Priority (see 3GPP TS 44.060, table 11.2.5a.5) */ + if (chan_req.priority > 0) + LOGP(DRLCMAC, LOGL_NOTICE, "EGPRS Packet Channel Request indicates " +"Radio Priority %u, however we ignore it\n", chan_req.priority); + /* Should we allocate a single block or an Uplink TBF? */ if (chan_req.single_block) { rc = sba()->alloc(_no, _no, _fn, ta); -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 8 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: laforge Gerrit-Reviewer: pespin Gerrit-MessageType: merged
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 7: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 7 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: laforge Gerrit-Reviewer: pespin Gerrit-Comment-Date: Tue, 02 Jun 2020 10:26:57 + Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
Hello pespin, laforge, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 to look at the new patch set (#7). Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request Let's finally use the API we introduced in [1]. [1] I96df3352856933c9140177b2801a2c71f4134183 Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Related: OS#1548 --- M src/bts.cpp 1 file changed, 56 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/87/18387/7 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 7 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy Gerrit-Reviewer: laforge Gerrit-Reviewer: pespin Gerrit-MessageType: newpatchset
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 6: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 6 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: laforge Gerrit-Reviewer: pespin Gerrit-Comment-Date: Thu, 28 May 2020 09:59:22 + Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 6: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 6 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-Comment-Date: Mon, 25 May 2020 08:55:30 + Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
Hello pespin, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 to look at the new patch set (#5). Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 --- M src/bts.cpp 1 file changed, 56 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/87/18387/5 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 5 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-MessageType: newpatchset
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
Hello pespin, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 to look at the new patch set (#4). Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 --- M src/bts.cpp 1 file changed, 67 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/87/18387/4 -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 4 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-MessageType: newpatchset
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 3: (1 comment) https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp@719 PS2, Line 719: /* TODO: IIUC, signalling needs only one block */ > Then please at least log something here. That's my question, what is this magic 'something' I should log? :P I'll update a new change assuming single block here as it seems logical to me. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-Comment-Date: Thu, 21 May 2020 19:03:41 + Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin Comment-In-Reply-To: fixeria Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 3: (1 comment) https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp@719 PS2, Line 719: /* TODO: IIUC, signalling needs only one block */ > These sub-types contain nothing else but RandBits, so what am I supposed to > do/log here? I am still […] Then please at least log something here. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-Comment-Date: Thu, 21 May 2020 17:25:08 + Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: fixeria Comment-In-Reply-To: pespin Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 3: (1 comment) Does it really deserve CR-1? https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp@719 PS2, Line 719: /* TODO: IIUC, signalling needs only one block */ > please log something here, and do something. […] These sub-types contain nothing else but RandBits, so what am I supposed to do/log here? I am still trying to find whether we should allocate only one block for them or not. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria Gerrit-Reviewer: pespin Gerrit-Comment-Date: Thu, 21 May 2020 16:32:00 + Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. Patch Set 2: Code-Review-1 (1 comment) https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp File src/bts.cpp: https://gerrit.osmocom.org/c/osmo-pcu/+/18387/2/src/bts.cpp@719 PS2, Line 719: /* TODO: IIUC, signalling needs only one block */ please log something here, and do something. You are returning fine but leaving the chan_req untouched. -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin Gerrit-Comment-Date: Thu, 21 May 2020 15:54:04 + Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
Change in osmo-pcu[master]: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18387 ) Change subject: BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request .. BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 --- M src/bts.cpp 1 file changed, 67 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/87/18387/1 diff --git a/src/bts.cpp b/src/bts.cpp index 934bdef..c305e22 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -671,9 +671,68 @@ * deprecated, no PACKET CHANNEL REQUEST exists, which means for GPRS we will * receive CCCH RACH which doesn't contain any mslot class. Hence in the end we * can only receive EGPRS mslot class through 11-bit EGPRS PACKET CHANNEL REQUEST. */ +static int parse_egprs_pkt_ch_req(uint16_t ra11, struct chan_req_params *chan_req) +{ + EGPRS_PacketChannelRequest_t req; + int rc; + + rc = decode_egprs_pkt_ch_req(ra11, ); + if (rc) { + LOGP(DRLCMAC, LOGL_NOTICE, "Failed to decode " +"EGPRS Packet Channel Request: rc=%d", rc); + return rc; + } + + LOGP(DRLCMAC, LOGL_INFO, "Rx EGPRS Packet Channel Request: %s\n", +get_value_string(egprs_pkt_ch_req_type_names, req.Type)); + + switch (req.Type) { + case EGPRS_PKT_CHAN_REQ_ONE_PHASE: + chan_req->egprs_mslot_class = req.Content.MultislotClass + 1; + chan_req->priority = req.Content.Priority + 1; + break; + case EGPRS_PKT_CHAN_REQ_SHORT: + chan_req->priority = req.Content.Priority + 1; + if (req.Content.NumberOfBlocks == 0) + chan_req->single_block = true; + break; + case EGPRS_PKT_CHAN_REQ_ONE_PHASE_RED_LATENCY: + chan_req->priority = req.Content.Priority + 1; + break; + /* Two phase access => single block is needed */ + case EGPRS_PKT_CHAN_REQ_TWO_PHASE: + case EGPRS_PKT_CHAN_REQ_TWO_PHASE_IPA: + chan_req->priority = req.Content.Priority + 1; + chan_req->single_block = true; + break; + + /* Neither unacknowledged RLC mode, nor emergency calls are supported */ + case EGPRS_PKT_CHAN_REQ_ONE_PHASE_UNACK: + case EGPRS_PKT_CHAN_REQ_EMERGENCY_CALL: + LOGP(DRLCMAC, LOGL_NOTICE, "%s is not supported, rejecting\n", +get_value_string(egprs_pkt_ch_req_type_names, req.Type)); + return -ENOTSUP; + + case EGPRS_PKT_CHAN_REQ_SIGNALLING: + case EGPRS_PKT_CHAN_REQ_SIGNALLING_IPA: + case EGPRS_PKT_CHAN_REQ_DEDICATED_CHANNEL: + /* TODO: IIUC, signalling needs only one block */ + break; + + default: + LOGP(DRLCMAC, LOGL_ERROR, "Unknown EGPRS Packet Channel Request " +"type=0x%02x, probably a bug in CSN.1 codec\n", req.Type); + return -EINVAL; + } + + return 0; +} + static int parse_rach_ind(const struct rach_ind_params *rip, struct chan_req_params *chan_req) { + int rc; + switch (rip->burst_type) { case GSM_L1_BURST_TYPE_NONE: LOGP(DRLCMAC, LOGL_ERROR, "RACH.ind contains no burst type, assuming TS0\n"); @@ -697,10 +756,9 @@ return -ENOTSUP; } - /* EGPRS multislot class is only present in One Phase Access Request */ - /* FIXME: properly parse EGPRS Packet Channel Request */ - if ((rip->ra >> 10) == 0x00) /* .0xx xxx. */ - chan_req->egprs_mslot_class = ((rip->ra & 0x3e0) >> 5) + 1; + rc = parse_egprs_pkt_ch_req(rip->ra, chan_req); + if (rc) + return rc; break; default: LOGP(DRLCMAC, LOGL_ERROR, "RACH.ind contains unknown burst type 0x%02x " @@ -766,6 +824,11 @@ chan_req.single_block = true; } + /* TODO: handle Radio Priority (see 3GPP TS 44.060, table 11.2.5a.5) */ + if (chan_req.priority > 0) + LOGP(DRLCMAC, LOGL_NOTICE, "EGPRS Packet Channel Request indicates " +"Radio Priority %u, however we ignore it\n", chan_req.priority); + /* Should we allocate a single block or an Uplink TBF? */ if (chan_req.single_block) { rc = sba()->alloc(_no, _no, _fn, ta); -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18387 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ia15761c33c8048d35c7f7bc93dbea781dd0894b7 Gerrit-Change-Number: 18387 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria