Change the interface in osmo-pcu for 11 bit RACH

Submitted by Bhargava Abhyankar on March 21, 2016, 3:03 p.m.

Details

Message ID 1458572630-24117-1-git-send-email-Bhargava.Abhyankar@radisys.com
State Changes Requested
Series "Change the interface in osmo-pcu for 11 bit RACH"
Headers show

Commit Message

Bhargava Abhyankar March 21, 2016, 3:03 p.m.
Interface changes in osmo-pcu towards osmo-bts to
receive 11 bit RACH.
The interface version number is increased by 1.
---
 src/bts.cpp       | 2 +-
 src/bts.h         | 3 ++-
 src/pcu_l1_if.cpp | 2 +-
 src/pcuif_proto.h | 5 +++--
 4 files changed, 7 insertions(+), 5 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/bts.cpp b/src/bts.cpp
index 715fb51..9c0871d 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -459,7 +459,7 @@  int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn)
 	return 0;
 }
 
-int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta)
+int BTS::rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, uint8_t rach_type)
 {
 	struct gprs_rlcmac_ul_tbf *tbf = NULL;
 	uint8_t trx_no, ts_no = 0;
diff --git a/src/bts.h b/src/bts.h
index c975304..2a1f930 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -275,7 +275,8 @@  public:
 	int tfi_find_free(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, int8_t use_trx);
 
 	int rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn);
-	int rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta);
+	int rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta,
+					uint8_t rach_type = 0);
 
 	void trigger_dl_ass(gprs_rlcmac_dl_tbf *tbf, gprs_rlcmac_tbf *old_tbf);
 	void snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi);
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 19dda5c..7d7c914 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -313,7 +313,7 @@  static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind)
 	case PCU_IF_SAPI_RACH:
 		rc = BTS::main_bts()->rcv_rach(
 			rach_ind->ra, rach_ind->fn,
-			rach_ind->qta);
+			rach_ind->qta, rach_ind->rach_type);
 		break;
 	default:
 		LOGP(DL1IF, LOGL_ERROR, "Received PCU rach request with "
diff --git a/src/pcuif_proto.h b/src/pcuif_proto.h
index 9d740ac..877f507 100644
--- a/src/pcuif_proto.h
+++ b/src/pcuif_proto.h
@@ -1,7 +1,7 @@ 
 #ifndef _PCUIF_PROTO_H
 #define _PCUIF_PROTO_H
 
-#define PCU_IF_VERSION		0x05
+#define PCU_IF_VERSION		0x06
 
 /* msg_type */
 #define PCU_IF_MSG_DATA_REQ	0x00	/* send data to given channel */
@@ -64,10 +64,11 @@  struct gsm_pcu_if_rts_req {
 
 struct gsm_pcu_if_rach_ind {
 	uint8_t		sapi;
-	uint8_t		ra;
+	uint16_t	ra;
 	int16_t		qta;
 	uint32_t	fn;
 	uint16_t	arfcn;
+	uint8_t		rach_type;
 } __attribute__ ((packed));
 
 struct gsm_pcu_if_info_trx {

Comments

Harald Welte March 21, 2016, 8:17 p.m.
Hi Bhargava,

On Mon, Mar 21, 2016 at 08:33:50PM +0530, Bhargava Abhyankar wrote:
> Interface changes in osmo-pcu towards osmo-bts to
> receive 11 bit RACH.
> The interface version number is increased by 1.

your patch looks fine, thanks.

However, when we change the interface, we need to change it on both
sides, on osmo-pcu as well as on osmo-bts.  Please send the
corresponding change along for the osmo-bts side.  Thanks!

Regards,
	Harald
Jacob Erlbeck March 22, 2016, 8:58 a.m.
Hi,

what exactly is your definition of 'rach_type'? Could you please either
add a reference to the document where this notion is specified, or if
there is none, a specification of its value range.

Is the used TSC (TS1 or TS2 in case of EGPRS) is mapped to this value?
If not, this should IMHO also be added to have all relevant RACH
information included, since this is closely related to the 11 bit RACH
type which cannot be fully used for EGPRS without that information. See
44.060, 11.2.5a for details.

Jacob

On 21.03.2016 16:03, Bhargava Abhyankar wrote:
> Interface changes in osmo-pcu towards osmo-bts to
> receive 11 bit RACH.
> The interface version number is increased by 1.
> -	int rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta);
> +	int rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta,
> +					uint8_t rach_type = 0);


>  struct gsm_pcu_if_rach_ind {
>  	uint8_t		sapi;
> -	uint8_t		ra;
> +	uint16_t	ra;
>  	int16_t		qta;
>  	uint32_t	fn;
>  	uint16_t	arfcn;
> +	uint8_t		rach_type;
>  } __attribute__ ((packed));
Bhargava Abhyankar March 22, 2016, 1:05 p.m.
Hello Jacob,
Thanks for your inputs.

>what exactly is your definition of 'rach_type'? Could you please either add a reference to the document where this notion is >specified, or if there is none, a specification of its value range.
We propose to use following enum as 'rach_type'
enum {
                GPRS_8_BIT_RACH = 0,
                GPRS_11_BIT_RACH ,
                EGPRS_8_PSK_11_BIT_RACH ,
	EGPRS_NO_8_PSK_11_BIT_RACH
        };

This is not specified in standard, this is introduced as part of proposed interface changes between osmo-bts and osmo-pcu.
Osmo-bts should get the RACH information from L1 APIs and fill the appropriate 'rach_type' and send to osmo-pcu. 
Osmo-bts can distinguish between 8 bit RACH and 11 bit RACH using 'u8Size' parameter in PH-RA-IND premetive.

There is still open point on how osmo-bts distinguishes between types of 11 bit RACH based on received layer 1 message.
Let me know if you have any inputs.

Thanks
Bhargava Abhyankar