summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-01-13 00:23:42 +0100
committerHarald Welte <laforge@gnumonks.org>2017-01-15 20:46:27 +0100
commit0cdf4b0a6821a0e970194ed5b122d3d6270c9814 (patch)
tree729c950aff91beb602eea2c40c85fac6d89c9e68
parentc9ad46ac75d6cbd4336f405d6dc2dc6a2975c25e (diff)
Support Early Classmark Sending
If SI3 rest octets indicate early CM Sending is allowed, and the 'support' indicates we support it (which we now do by default), then send the classmark change message every time a LAPDm link layer is established.
-rw-r--r--src/host/layer23/src/mobile/gsm48_rr.c6
-rw-r--r--src/host/layer23/src/mobile/support.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/host/layer23/src/mobile/gsm48_rr.c b/src/host/layer23/src/mobile/gsm48_rr.c
index 9bef286..9b3f0f9 100644
--- a/src/host/layer23/src/mobile/gsm48_rr.c
+++ b/src/host/layer23/src/mobile/gsm48_rr.c
@@ -3297,6 +3297,8 @@ static int gsm48_rr_dl_est(struct osmocom_ms *ms)
static int gsm48_rr_estab_cnf(struct osmocom_ms *ms, struct msgb *msg)
{
struct gsm48_rrlayer *rr = &ms->rrlayer;
+ struct gsm_support *sup = &ms->support;
+ struct gsm322_cellsel *cs = &ms->cellsel;
uint8_t *mode;
struct msgb *nmsg;
@@ -3317,6 +3319,10 @@ static int gsm48_rr_estab_cnf(struct osmocom_ms *ms, struct msgb *msg)
/* 3.3.1.1.4 */
new_rr_state(rr, GSM48_RR_ST_DEDICATED);
+ /* early classmark sending */
+ if (cs->si->ecsm && sup->es_ind)
+ gsm48_rr_tx_cm_change(ms);
+
/* send confirm to upper layer */
nmsg = gsm48_rr_msgb_alloc(
(rr->rr_est_req) ? GSM48_RR_EST_CNF : GSM48_RR_EST_IND);
diff --git a/src/host/layer23/src/mobile/support.c b/src/host/layer23/src/mobile/support.c
index 063733a..e9361a3 100644
--- a/src/host/layer23/src/mobile/support.c
+++ b/src/host/layer23/src/mobile/support.c
@@ -33,7 +33,7 @@ void gsm_support_init(struct osmocom_ms *ms)
sup->ms = ms;
/* controlled early classmark sending */
- sup->es_ind = 0; /* no */
+ sup->es_ind = 1; /* yes */
/* revision level */
sup->rev_lev = 1; /* phase 2 mobile station */
/* support of VGCS */