diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-01-13 00:23:42 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-01-15 20:46:27 +0100 |
commit | 0cdf4b0a6821a0e970194ed5b122d3d6270c9814 (patch) | |
tree | 729c950aff91beb602eea2c40c85fac6d89c9e68 /src/host/layer23 | |
parent | c9ad46ac75d6cbd4336f405d6dc2dc6a2975c25e (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.
Diffstat (limited to 'src/host/layer23')
-rw-r--r-- | src/host/layer23/src/mobile/gsm48_rr.c | 6 | ||||
-rw-r--r-- | src/host/layer23/src/mobile/support.c | 2 |
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 9bef2868..9b3f0f9f 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 063733a7..e9361a35 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 */ |