lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

April 2023

  • 1 participants
  • 2252 discussions
[S] Change in libosmo-gprs[master]: sm: Handle PCO in rx PDP Ctx Accept
by pespin 14 Apr '23

14 Apr '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32317 ) Change subject: sm: Handle PCO in rx PDP Ctx Accept ...................................................................... sm: Handle PCO in rx PDP Ctx Accept Related: OS#5501 Change-Id: I15ff08cbefb463c8785a138406921563941e7e7d --- M src/sm/sm.c 1 file changed, 25 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/17/32317/1 diff --git a/src/sm/sm.c b/src/sm/sm.c index c57ef3f..0f39708 100644 --- a/src/sm/sm.c +++ b/src/sm/sm.c @@ -208,6 +208,10 @@ sm_prim_tx->smreg.ms_id = sme->ms->ms_id; sm_prim_tx->smreg.pdp_act_cnf.accepted = (cause != 0); sm_prim_tx->smreg.pdp_act_cnf.nsapi = sme->nsapi; + sm_prim_tx->smreg.pdp_act_cnf.pco_len = sme->pco_len; + if (sme->pco_len) + memcpy(sm_prim_tx->smreg.pdp_act_cnf.pco, &sme->pco, sme->pco_len); + if (sm_prim_tx->smreg.pdp_act_cnf.accepted) { sm_prim_tx->smreg.pdp_act_cnf.acc.pdp_addr_ietf_type = sme->pdp_addr_ietf_type; memcpy(&sm_prim_tx->smreg.pdp_act_cnf.acc.pdp_addr_v4, &sme->pdp_addr_v4, sizeof(sme->pdp_addr_v4)); @@ -319,6 +323,17 @@ if (rc < 0) goto rejected; } + + if (TLVP_PRESENT(&tp, GSM48_IE_GSM_PROTO_CONF_OPT)) { + if (TLVP_LEN(&tp, GSM48_IE_GSM_PROTO_CONF_OPT) > ARRAY_SIZE(sme->pco)) { + LOGSME(sme, LOGL_ERROR, + "Rx SM Activate PDP Context Accept: PCO size too big! %u\n", qos_len); + goto rejected; + } + sme->pco_len = TLVP_LEN(&tp, GSM48_IE_GSM_PROTO_CONF_OPT); + if (sme->pco_len) + memcpy(sme->pco, TLVP_VAL(&tp, GSM48_IE_GSM_PROTO_CONF_OPT), sme->pco_len); + } } rc = osmo_fsm_inst_dispatch(sme->ms_fsm.fi, GPRS_SM_MS_EV_RX_ACT_PDP_CTX_ACC, NULL); -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32317 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I15ff08cbefb463c8785a138406921563941e7e7d Gerrit-Change-Number: 32317 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in libosmo-gprs[master]: sm: Fix swapped endianness in struct gprs_sm_pdp_addr
by pespin 14 Apr '23

14 Apr '23
Attention is currently required from: pespin. Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32314 to look at the new patch set (#2). Change subject: sm: Fix swapped endianness in struct gprs_sm_pdp_addr ...................................................................... sm: Fix swapped endianness in struct gprs_sm_pdp_addr Change-Id: Icd72bbe6d297bc583097c68d3cf86a616fabd36d --- M include/osmocom/gprs/sm/sm_private.h M tests/sm/sm_prim_test.ok 2 files changed, 16 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/14/32314/2 -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32314 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Icd72bbe6d297bc583097c68d3cf86a616fabd36d Gerrit-Change-Number: 32314 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in osmocom-bb[master]: layer23: modem: sndcp: Apply API change in libosmo-gprs-sndcp
by pespin 14 Apr '23

14 Apr '23
Attention is currently required from: pespin. Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmocom-bb/+/32313 to look at the new patch set (#2). Change subject: layer23: modem: sndcp: Apply API change in libosmo-gprs-sndcp ...................................................................... layer23: modem: sndcp: Apply API change in libosmo-gprs-sndcp Depends: libosmo-gprs.git Change-Id Iebce37a50917b13c23de1528469d66c310ced7f2 Related: OS#5502 Change-Id: I4f559e4a882a85742c45609dec596f0485eafed0 --- M src/host/layer23/src/modem/sndcp.c 1 file changed, 12 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/13/32313/2 -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/32313 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I4f559e4a882a85742c45609dec596f0485eafed0 Gerrit-Change-Number: 32313 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[M] Change in libosmo-gprs[master]: gmm: Implement rx Attach Reject
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32289 ) Change subject: gmm: Implement rx Attach Reject ...................................................................... gmm: Implement rx Attach Reject Relaed: OS#5501 Depends: libosmogore.git Change-Id I2d36d76ee6fe8ed1a36e37a7d74fbbdc9c27c2c7 Change-Id: Id4ad73ea25a380db9692892422e76ba44084649c --- M include/osmocom/gprs/gmm/gmm_ms_fsm.h M include/osmocom/gprs/gmm/gmm_private.h M src/gmm/gmm.c M src/gmm/gmm_ms_fsm.c M src/gmm/gmm_pdu.c 5 files changed, 66 insertions(+), 7 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/gmm/gmm_ms_fsm.h b/include/osmocom/gprs/gmm/gmm_ms_fsm.h index 38399b3..16bd022 100644 --- a/include/osmocom/gprs/gmm/gmm_ms_fsm.h +++ b/include/osmocom/gprs/gmm/gmm_ms_fsm.h @@ -28,7 +28,7 @@ GPRS_GMM_MS_EV_ENABLE_GPRS_MODE, GPRS_GMM_MS_EV_DISABLE_GPRS_MODE, GPRS_GMM_MS_EV_ATTACH_REQUESTED, - GPRS_GMM_MS_EV_ATTACH_REJECTED, + GPRS_GMM_MS_EV_ATTACH_REJECTED, /* data: ptr to "uint8_t cause" */ GPRS_GMM_MS_EV_ATTACH_ACCEPTED, GPRS_GMM_MS_EV_DETACH_REQUESTED, /* also network initiated. */ GPRS_GMM_MS_EV_DETACH_REQUESTED_POWEROFF, diff --git a/include/osmocom/gprs/gmm/gmm_private.h b/include/osmocom/gprs/gmm/gmm_private.h index 2f6eb8c..473c670 100644 --- a/include/osmocom/gprs/gmm/gmm_private.h +++ b/include/osmocom/gprs/gmm/gmm_private.h @@ -65,6 +65,9 @@ uint8_t gea; /* GEA/0 = 0, GEA/1 = 1, ... */ uint8_t kc[16]; /* max 16 * 8 = 128 bits */ + + unsigned long t3302; + unsigned long t3346; }; /* gmm_prim.c: */ diff --git a/src/gmm/gmm.c b/src/gmm/gmm.c index f9e2645..e97b398 100644 --- a/src/gmm/gmm.c +++ b/src/gmm/gmm.c @@ -149,6 +149,11 @@ return NULL; } + /* Initialize timers to default values. They may be overwritten by the + * network later on: */ + gmme->t3302 = osmo_tdef_get(g_ctx->T_defs, 3302, OSMO_TDEF_S, -1); + gmme->t3346 = osmo_tdef_get(g_ctx->T_defs, 3346, OSMO_TDEF_S, -1); + llist_add(&gmme->list, &g_ctx->gmme_list); return gmme; @@ -444,6 +449,9 @@ gmme->old_ptmsi = gmme->ptmsi; gmme->ptmsi = mi.tmsi; } + + if (TLVP_PRES_LEN(&tp, GSM48_IE_GMM_TIMER_T3302, 1)) + gmme->t3302 = *TLVP_VAL(&tp, GSM48_IE_GMM_TIMER_T3302); } /* Submit LLGMM-ASSIGN-REQ as per TS 24.007 Annex C.1 */ @@ -468,11 +476,45 @@ return -EINVAL; /* TODO: what to do on error? */ } - +/* Rx GMM Attach Reject, 9.4.4 */ static int gprs_gmm_rx_att_rej(struct gprs_gmm_entity *gmme, struct gsm48_hdr *gh, unsigned int len) { - LOGGMME(gmme, LOGL_ERROR, "Rx GMM ATTACH REJECT not implemented!\n"); - return 0; /* TODO */ + uint8_t *arej = &gh->data[0]; + struct tlv_parsed tp; + uint8_t cause; + int rc; + + if (len < sizeof(*gh) + 1) { + LOGGMME(gmme, LOGL_ERROR, "Rx GMM ATTACH REJECT with wrong size %u\n", len); + goto rejected; + } + + cause = *arej; + arej++; + + LOGGMME(gmme, LOGL_DEBUG, "Rx GMM ATTACH REJECT cause='%s' (%u)\n", + get_value_string(gsm48_gmm_cause_names, cause), cause); + + if (len > sizeof(*gh) + 1) { + rc = gprs_gmm_tlv_parse(&tp, arej, len - (sizeof(*gh) + 1)); + if (rc < 0) { + LOGGMME(gmme, LOGL_ERROR, "Rx GMM ATTACH REJECT: failed to parse TLVs %d\n", rc); + goto rejected; + } + + if (TLVP_PRES_LEN(&tp, GSM48_IE_GMM_TIMER_T3302, 1)) + gmme->t3302 = *TLVP_VAL(&tp, GSM48_IE_GMM_TIMER_T3302); + + if (TLVP_PRES_LEN(&tp, GSM48_IE_GMM_TIMER_T3302, 1)) + gmme->t3346 = *TLVP_VAL(&tp, GSM48_IE_GMM_TIMER_T3346); + } + + rc = osmo_fsm_inst_dispatch(gmme->ms_fsm.fi, GPRS_GMM_MS_EV_ATTACH_REJECTED, &cause); + + return rc; + +rejected: + return -EINVAL; } /* Rx GMM Detach Accept (mobile originating detach), 9.4.6.2 */ diff --git a/src/gmm/gmm_ms_fsm.c b/src/gmm/gmm_ms_fsm.c index f59e92e..92bf6f2 100644 --- a/src/gmm/gmm_ms_fsm.c +++ b/src/gmm/gmm_ms_fsm.c @@ -111,10 +111,11 @@ reinit_attach_proc(ctx); break; case GPRS_GMM_MS_EV_ATTACH_REJECTED: + cause = *(uint8_t *)data; + /* fall-through */ case GPRS_GMM_MS_EV_LOW_LVL_FAIL: - /* TODO: in AttachReject, take cause from rx msg. */ - cause = (event == GPRS_GMM_MS_EV_LOW_LVL_FAIL) ? - GMM_CAUSE_MAC_FAIL : GMM_CAUSE_NET_FAIL; + if (event == GPRS_GMM_MS_EV_LOW_LVL_FAIL) + cause = GMM_CAUSE_MAC_FAIL; if (ctx->attach.explicit_att) { /* Submit GMMREG-ATTACH-REJ as per TS 24.007 Annex C.1 */ rc = gprs_gmm_submit_gmmreg_attach_cnf(ctx->gmme, false, cause); diff --git a/src/gmm/gmm_pdu.c b/src/gmm/gmm_pdu.c index b8bea9d..4123e24 100644 --- a/src/gmm/gmm_pdu.c +++ b/src/gmm/gmm_pdu.c @@ -138,12 +138,14 @@ [GSM48_IE_GMM_AUTH_RAND] = { TLV_TYPE_FIXED, 16 }, [GSM48_IE_GMM_AUTH_SRES] = { TLV_TYPE_FIXED, 4 }, [GSM48_IE_GMM_AUTH_RES_EXT] = { TLV_TYPE_TLV, 0 }, + [GSM48_IE_GMM_TIMER_T3302] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_AUTH_FAIL_PAR] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_IMEISV] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_DRX_PARAM] = { TLV_TYPE_FIXED, 2 }, [GSM48_IE_GMM_MS_NET_CAPA] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_PDP_CTX_STATUS] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_PS_LCS_CAPA] = { TLV_TYPE_TLV, 0 }, + [GSM48_IE_GMM_TIMER_T3346] = { TLV_TYPE_TLV, 0 }, [GSM48_IE_GMM_GMM_MBMS_CTX_ST] = { TLV_TYPE_TLV, 0 }, }, }; -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32289 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Id4ad73ea25a380db9692892422e76ba44084649c Gerrit-Change-Number: 32289 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in libosmo-gprs[master]: gmm: Implement T3310 (Tattach)
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32287 ) Change subject: gmm: Implement T3310 (Tattach) ...................................................................... gmm: Implement T3310 (Tattach) Related: OS#5501 Change-Id: I0ba24820f63c44b6dc7568e86fc36965a042d613 --- M include/osmocom/gprs/gmm/gmm_ms_fsm.h M src/gmm/gmm.c M src/gmm/gmm_ms_fsm.c 3 files changed, 93 insertions(+), 8 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/gmm/gmm_ms_fsm.h b/include/osmocom/gprs/gmm/gmm_ms_fsm.h index 3e6ac96..38399b3 100644 --- a/include/osmocom/gprs/gmm/gmm_ms_fsm.h +++ b/include/osmocom/gprs/gmm/gmm_ms_fsm.h @@ -55,6 +55,8 @@ /* Session Ids waiting for attach to happen during implicit_att: */ uint32_t sess_id[16]; uint8_t num_sess_id; + /* Retransmission of ATTACH REQUEST (T3310) */ + uint8_t req_attempts; } attach; /* Info about last initiated detach: */ diff --git a/src/gmm/gmm.c b/src/gmm/gmm.c index ed7b69f..f9e2645 100644 --- a/src/gmm/gmm.c +++ b/src/gmm/gmm.c @@ -59,11 +59,11 @@ /* TS 24.008 */ static struct osmo_tdef T_defs_gmm[] = { { .T=3302, .default_val=GSM0408_T3302_SECS, .desc = "" }, - { .T=3310, .default_val=GSM0408_T3310_SECS, .desc = "" }, + { .T=3310, .default_val=GSM0408_T3310_SECS, .desc = "Tattach" }, { .T=3311, .default_val=GSM0408_T3311_SECS, .desc = "" }, - { .T=3312, .default_val=GSM0408_T3312_SECS, .desc = "" }, - { .T=3314, .default_val=GSM0408_T3314_SECS, .desc="READY timer. Forced to STANDBY on expiry timer (s)" }, - { .T=3316, .default_val=GSM0408_T3316_SECS, .desc = "" }, + { .T=3312, .default_val=GSM0408_T3312_SECS, .desc = "Periodic RA Update timer (s)" }, + { .T=3314, .default_val=GSM0408_T3314_SECS, .desc = "READY timer. Forced to STANDBY on expiry timer (s)" }, + { .T=3316, .default_val=GSM0408_T3316_SECS, .desc = "AA-Ready timer (s)" }, { .T=3317, .default_val=GSM0408_T3317_SECS, .desc = "" }, { .T=3318, .default_val=GSM0408_T3318_SECS, .desc = "" }, { .T=3319, .default_val=GSM0408_T3319_SECS, .desc = "" }, diff --git a/src/gmm/gmm_ms_fsm.c b/src/gmm/gmm_ms_fsm.c index cdc2089..f59e92e 100644 --- a/src/gmm/gmm_ms_fsm.c +++ b/src/gmm/gmm_ms_fsm.c @@ -25,14 +25,40 @@ #include <osmocom/gprs/gmm/gmm_ms_fsm.h> #include <osmocom/gprs/gmm/gmm.h> #include <osmocom/gprs/gmm/gmm_private.h> +#include <osmocom/gsm/protocol/gsm_04_08_gprs.h> #define X(s) (1 << (s)) -static const struct osmo_tdef_state_timeout gmm_ms_fsm_timeouts[32] = {}; +static const struct osmo_tdef_state_timeout gmm_ms_fsm_timeouts[32] = { + [GPRS_GMM_MS_ST_NULL] = {}, + [GPRS_GMM_MS_ST_DEREGISTERED] = {}, + [GPRS_GMM_MS_ST_REGISTERED_INITIATED] = { .T = 3310 }, + [GPRS_GMM_MS_ST_REGISTERED] = {}, + [GPRS_GMM_MS_ST_DEREGISTERED_INITIATED] = {}, + [GPRS_GMM_MS_ST_RAU_INITIATED] = {}, + [GPRS_GMM_MS_ST_SR_INITIATED] = {}, + +}; #define gmm_ms_fsm_state_chg(fi, NEXT_STATE) \ osmo_tdef_fsm_inst_state_chg(fi, NEXT_STATE, gmm_ms_fsm_timeouts, g_ctx->T_defs, -1) + +static int reinit_attach_proc(struct gprs_gmm_ms_fsm_ctx *ctx) +{ + unsigned long val_sec; + + OSMO_ASSERT(ctx->fi->state == GPRS_GMM_MS_ST_REGISTERED_INITIATED); + + /* Rearm T3110 */ + OSMO_ASSERT(ctx->fi->T == 3110); + val_sec = osmo_tdef_get(g_ctx->T_defs, ctx->fi->T, OSMO_TDEF_S, -1); + osmo_timer_schedule(&ctx->fi->timer, val_sec, 0); + return gprs_gmm_tx_att_req(ctx->gmme, + ctx->attach.type, + ctx->attach.with_imsi); +} + static void st_gmm_ms_null(struct osmo_fsm_inst *fi, uint32_t event, void *data) { switch (event) { @@ -76,17 +102,36 @@ static void st_gmm_ms_registered_initiated(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gprs_gmm_ms_fsm_ctx *ctx = (struct gprs_gmm_ms_fsm_ctx *)fi->priv; + uint8_t cause; int rc; switch (event) { case GPRS_GMM_MS_EV_ATTACH_REQUESTED: /* Upper layers request us to retry attaching: */ - rc = gprs_gmm_tx_att_req(ctx->gmme, - ctx->attach.type, - ctx->attach.with_imsi); + reinit_attach_proc(ctx); break; case GPRS_GMM_MS_EV_ATTACH_REJECTED: case GPRS_GMM_MS_EV_LOW_LVL_FAIL: + /* TODO: in AttachReject, take cause from rx msg. */ + cause = (event == GPRS_GMM_MS_EV_LOW_LVL_FAIL) ? + GMM_CAUSE_MAC_FAIL : GMM_CAUSE_NET_FAIL; + if (ctx->attach.explicit_att) { + /* Submit GMMREG-ATTACH-REJ as per TS 24.007 Annex C.1 */ + rc = gprs_gmm_submit_gmmreg_attach_cnf(ctx->gmme, false, cause); + if (rc < 0) + return; + } + if (ctx->attach.implicit_att) { + /* Submit GMMSM-ESTABLISH-CNF as per TS 24.007 Annex C.3 */ + unsigned int i; + for (i = 0; i < ctx->attach.num_sess_id; i++) { + rc = gprs_gmm_submit_gmmsm_establish_cnf(ctx->gmme, + ctx->attach.sess_id[i], + false, cause); + if (rc < 0) + return; + } + } gmm_ms_fsm_state_chg(fi, GPRS_GMM_MS_ST_DEREGISTERED); break; case GPRS_GMM_MS_EV_ATTACH_ACCEPTED: @@ -115,6 +160,13 @@ } } +static void st_gmm_ms_registered_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct gprs_gmm_ms_fsm_ctx *ctx = (struct gprs_gmm_ms_fsm_ctx *)fi->priv; + + ctx->attach.req_attempts = 0; +} + static void st_gmm_ms_registered(struct osmo_fsm_inst *fi, uint32_t event, void *data) { switch (event) { @@ -234,6 +286,7 @@ X(GPRS_GMM_MS_ST_DEREGISTERED_INITIATED) | X(GPRS_GMM_MS_ST_DEREGISTERED), .name = "Registered", + .onenter = st_gmm_ms_registered_on_enter, .action = st_gmm_ms_registered, }, [GPRS_GMM_MS_ST_DEREGISTERED_INITIATED] = { @@ -291,6 +344,26 @@ int gmm_ms_fsm_timer_cb(struct osmo_fsm_inst *fi) { + struct gprs_gmm_ms_fsm_ctx *ctx = (struct gprs_gmm_ms_fsm_ctx *)fi->priv; + + switch (fi->T) { + case 3310: + /* TS 23.008 clause 4.7.3.1.5 c) */ + ctx->attach.req_attempts++; + LOGPFSML(ctx->fi, LOGL_INFO, "T3310 timeout attempts=%u\n", ctx->attach.req_attempts); + OSMO_ASSERT(fi->state == GPRS_GMM_MS_ST_REGISTERED_INITIATED); + if (ctx->attach.req_attempts == 4) { + /* "On the fifth expiry of timer T3310, the MS shall + * abort the GPRS attach procedure" */ + LOGPFSML(ctx->fi, LOGL_NOTICE, "GPRS attach procedure failure (T3310 timeout attempts=%u)\n", ctx->attach.req_attempts); + osmo_fsm_inst_dispatch(ctx->fi, GPRS_GMM_MS_EV_LOW_LVL_FAIL, NULL); + return 0; + } + reinit_attach_proc(ctx); + break; + default: + OSMO_ASSERT(0); + } return 0; } -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32287 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I0ba24820f63c44b6dc7568e86fc36965a042d613 Gerrit-Change-Number: 32287 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-gprs[master]: sm: Fix typo in LOGMS macro
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32294 ) Change subject: sm: Fix typo in LOGMS macro ...................................................................... sm: Fix typo in LOGMS macro Change-Id: I954fcd03ba2c24cebbd8e92c309e490afae14613 --- M include/osmocom/gprs/sm/sm_private.h 1 file changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/sm/sm_private.h b/include/osmocom/gprs/sm/sm_private.h index 58b4a61..e599759 100644 --- a/include/osmocom/gprs/sm/sm_private.h +++ b/include/osmocom/gprs/sm/sm_private.h @@ -168,7 +168,7 @@ int gprs_sm_rx(struct gprs_sm_entity *sme, struct gsm48_hdr *gh, unsigned int len); -#define LOGMS(snme, level, fmt, args...) \ +#define LOGMS(ms, level, fmt, args...) \ LOGSM(level, "MS(ID-%u) " fmt, \ ms->ms_id, \ ## args) -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32294 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I954fcd03ba2c24cebbd8e92c309e490afae14613 Gerrit-Change-Number: 32294 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-gprs[master]: sndcp: Fix potential null ptr access if SNE not found
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32308 ) Change subject: sndcp: Fix potential null ptr access if SNE not found ...................................................................... sndcp: Fix potential null ptr access if SNE not found Change-Id: Ie04ec971680ea2aaa905539fafc936af8f14e9f5 --- M src/sndcp/sndcp.c 1 file changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/sndcp/sndcp.c b/src/sndcp/sndcp.c index 1ff5893..ff38b1c 100644 --- a/src/sndcp/sndcp.c +++ b/src/sndcp/sndcp.c @@ -148,7 +148,7 @@ return NULL; sne = gprs_sndcp_snme_get_sne(snme, nsapi); - if (sne->llc_sapi != llc_sapi) + if (!sne || sne->llc_sapi != llc_sapi) return NULL; return sne; } -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32308 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Ie04ec971680ea2aaa905539fafc936af8f14e9f5 Gerrit-Change-Number: 32308 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-gprs[master]: tests/sndcp: Fix incorrect check comparing against wrong SAPI
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32309 ) Change subject: tests/sndcp: Fix incorrect check comparing against wrong SAPI ...................................................................... tests/sndcp: Fix incorrect check comparing against wrong SAPI Change-Id: I03e75d290efdd682e6d2705921c76708a3bffef5 --- M tests/sndcp/sndcp_prim_test.c 1 file changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/tests/sndcp/sndcp_prim_test.c b/tests/sndcp/sndcp_prim_test.c index e8c4a7e..b1f29ef 100644 --- a/tests/sndcp/sndcp_prim_test.c +++ b/tests/sndcp/sndcp_prim_test.c @@ -88,7 +88,7 @@ { const char *npdu_name = osmo_gprs_sndcp_prim_name(sndcp_prim); - if (sndcp_prim->oph.sap != OSMO_GPRS_SNDCP_SAP_SN) { + if (sndcp_prim->oph.sap != OSMO_GPRS_SNDCP_SAP_SNSM) { printf("%s(): Unexpected Rx %s\n", __func__, npdu_name); OSMO_ASSERT(0); } -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32309 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I03e75d290efdd682e6d2705921c76708a3bffef5 Gerrit-Change-Number: 32309 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-gprs[master]: sndcp: Allocate snme->comp.{data,proto} during snme alloc
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32310 ) Change subject: sndcp: Allocate snme->comp.{data,proto} during snme alloc ...................................................................... sndcp: Allocate snme->comp.{data,proto} during snme alloc This way we guarantee the llist object is always available even before an XID.req is received (which may not be the case in NET mode). Change-Id: Ib9540cc62a61ad7cb26ae90ec1500f1a022bada5 --- M src/sndcp/sndcp.c 1 file changed, 17 insertions(+), 2 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/sndcp/sndcp.c b/src/sndcp/sndcp.c index ff38b1c..6041ecd 100644 --- a/src/sndcp/sndcp.c +++ b/src/sndcp/sndcp.c @@ -53,6 +53,9 @@ return NULL; snme->tlli = tlli; + snme->comp.proto = gprs_sndcp_comp_alloc(snme); + snme->comp.data = gprs_sndcp_comp_alloc(snme); + llist_add(&snme->list, &g_sndcp_ctx->snme_list); return snme; @@ -698,8 +701,8 @@ * get rid of possible leftovers from a previous session */ gprs_sndcp_comp_free(sne->snme->comp.proto); gprs_sndcp_comp_free(sne->snme->comp.data); - sne->snme->comp.proto = gprs_sndcp_comp_alloc(sne); - sne->snme->comp.data = gprs_sndcp_comp_alloc(sne); + sne->snme->comp.proto = gprs_sndcp_comp_alloc(sne->snme); + sne->snme->comp.data = gprs_sndcp_comp_alloc(sne->snme); /* Generate compression parameter bytestream */ sne->l3xid_req_len = gprs_sndcp_sne_gen_sndcp_xid(sne, l3params, sizeof(l3params), sndcp_prim); -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32310 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: Ib9540cc62a61ad7cb26ae90ec1500f1a022bada5 Gerrit-Change-Number: 32310 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in libosmo-gprs[master]: llc: Implement some parts of LL-ESTABLISH.req/cnf
by pespin 14 Apr '23

14 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32311 ) Change subject: llc: Implement some parts of LL-ESTABLISH.req/cnf ...................................................................... llc: Implement some parts of LL-ESTABLISH.req/cnf As seen in TS 23.007 C.6. We still don't need/want to implement ABM (acknowledged mode), hence only the interface related parts are implemented, and transmit of SABM message is left for the future. Change-Id: I27aff368f4a70d30c23523946d72a751e100f298 --- M include/osmocom/gprs/llc/llc_prim.h M include/osmocom/gprs/llc/llc_private.h M src/llc/llc.c M src/llc/llc_ll.c M tests/llc/llc_prim_test.c M tests/llc/llc_prim_test.err 6 files changed, 84 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/include/osmocom/gprs/llc/llc_prim.h b/include/osmocom/gprs/llc/llc_prim.h index 66b8a2a..a2b53cb 100644 --- a/include/osmocom/gprs/llc/llc_prim.h +++ b/include/osmocom/gprs/llc/llc_prim.h @@ -284,6 +284,8 @@ struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_llgm_reset_req(uint32_t tlli); /* Alloc primitive for LL SAP: */ +struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_ll_establish_req(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, + uint8_t *l3_par, unsigned int l3_par_len); struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_ll_xid_req(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, uint8_t *l3_par, unsigned int l3_par_len); struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_ll_xid_resp(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, diff --git a/include/osmocom/gprs/llc/llc_private.h b/include/osmocom/gprs/llc/llc_private.h index 3f7ee15..994acd8 100644 --- a/include/osmocom/gprs/llc/llc_private.h +++ b/include/osmocom/gprs/llc/llc_private.h @@ -287,6 +287,8 @@ /* llc_ll.c */ int gprs_llc_prim_ll_upper_down(struct osmo_gprs_llc_prim *llc_prim); +struct osmo_gprs_llc_prim *gprs_llc_prim_alloc_ll_establish_cnf(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, + uint8_t *l3_par, unsigned int l3_par_len); struct osmo_gprs_llc_prim *gprs_llc_prim_alloc_ll_xid_ind(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, uint8_t *l3_par, unsigned int l3_par_len); struct osmo_gprs_llc_prim *gprs_llc_prim_alloc_ll_xid_cnf(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, @@ -312,6 +314,7 @@ int gprs_llc_lle_rx_unitdata_ind(struct gprs_llc_lle *lle, uint8_t *ll_pdu, size_t ll_pdu_len, struct gprs_llc_pdu_decoded *pdu_dec); void gprs_llc_llme_free(struct gprs_llc_llme *llme); +int gprs_llc_lle_tx_sabm(struct gprs_llc_lle *lle, uint8_t *l3par, unsigned int l3par_len); int gprs_llc_lle_tx_xid(const struct gprs_llc_lle *lle, uint8_t *xid_payload, unsigned int xid_payload_len, bool is_cmd); int gprs_llc_lle_tx_xid_req(struct gprs_llc_lle *lle, uint8_t *l3par, unsigned int l3par_len); int gprs_llc_lle_tx_xid_resp(struct gprs_llc_lle *lle, uint8_t *l3par, unsigned int l3par_len); diff --git a/src/llc/llc.c b/src/llc/llc.c index e9e8e3b..3831f8a 100644 --- a/src/llc/llc.c +++ b/src/llc/llc.c @@ -432,6 +432,13 @@ return rc; } +/* LL-ESTABLISH negotiation (See also: TS 101 351, Section 7.2.2.2) */ +int gprs_llc_lle_tx_sabm(struct gprs_llc_lle *lle, uint8_t *l3par, unsigned int l3par_len) +{ + LOGLLE(lle, LOGL_ERROR, "Tx SABM: ABM mode not supported yet!\n"); + return -ENOTSUP; +} + /* Set of LL-XID negotiation (See also: TS 101 351, Section 7.2.2.4) */ int gprs_llc_lle_tx_xid_req(struct gprs_llc_lle *lle, uint8_t *l3par, unsigned int l3par_len) { diff --git a/src/llc/llc_ll.c b/src/llc/llc_ll.c index 72ef889..43a0951 100644 --- a/src/llc/llc_ll.c +++ b/src/llc/llc_ll.c @@ -54,6 +54,30 @@ return gprs_llc_prim_alloc(OSMO_GPRS_LLC_SAP_LL, type, operation, l3_len); } +/* 7.2.2.2 LL-ESTABLISH.req (MS/SGSN) */ +struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_ll_establish_req(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, uint8_t *l3_par, unsigned int l3_par_len) +{ + struct osmo_gprs_llc_prim *llc_prim; + llc_prim = llc_prim_ll_alloc(OSMO_GPRS_LLC_LL_ESTABLISH, PRIM_OP_REQUEST, l3_par_len); + llc_prim->ll.tlli = tlli; + llc_prim->ll.sapi = ll_sapi; + llc_prim->ll.l3_pdu = l3_par; + llc_prim->ll.l3_pdu_len = l3_par_len; + return llc_prim; +} + +/* 7.2.2.2 LL-ESTABLISH.cnf (MS/SGSN) */ +struct osmo_gprs_llc_prim *gprs_llc_prim_alloc_ll_establish_cnf(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, uint8_t *l3_par, unsigned int l3_par_len) +{ + struct osmo_gprs_llc_prim *llc_prim; + llc_prim = llc_prim_ll_alloc(OSMO_GPRS_LLC_LL_ESTABLISH, PRIM_OP_CONFIRM, l3_par_len); + llc_prim->ll.tlli = tlli; + llc_prim->ll.sapi = ll_sapi; + llc_prim->ll.l3_pdu = l3_par; + llc_prim->ll.l3_pdu_len = l3_par_len; + return llc_prim; +} + /* 7.2.2.4 LL-XID.req (MS/SGSN) */ struct osmo_gprs_llc_prim *osmo_gprs_llc_prim_alloc_ll_xid_req(uint32_t tlli, enum osmo_gprs_llc_sapi ll_sapi, uint8_t *l3_par, unsigned int l3_par_len) { @@ -172,6 +196,28 @@ * Handling from upper layers: ********************************/ +/* 7.2.2.2 LL-ESTABLISH.req (MS/SGSN):*/ +static int llc_prim_handle_ll_establish_req(struct osmo_gprs_llc_prim *llc_prim) +{ + int rc = 0; + struct gprs_llc_lle *lle; + + lle = gprs_llc_find_lle_by_tlli_sapi(llc_prim->ll.tlli, llc_prim->ll.sapi); + if (!lle) { + LOGLLC(LOGL_NOTICE, "Rx %s: Unknown TLLI 0x%08x SAPI 0x%02x\n", + osmo_gprs_llc_prim_name(llc_prim), llc_prim->ll.tlli, + llc_prim->ll.sapi); + rc = -ENOKEY; + goto ret_free; + } + + rc = gprs_llc_lle_tx_sabm(lle, llc_prim->ll.l3_pdu, llc_prim->ll.l3_pdu_len); + +ret_free: + msgb_free(llc_prim->oph.msg); + return rc; +} + /* 7.2.2.4 LL-XID.req (MS/SGSN):*/ static int llc_prim_handle_ll_xid_req(struct osmo_gprs_llc_prim *llc_prim) { @@ -243,6 +289,11 @@ { int rc; switch (OSMO_PRIM_HDR(&llc_prim->oph)) { + case OSMO_PRIM(OSMO_GPRS_LLC_LL_ESTABLISH, PRIM_OP_REQUEST): + OSMO_ASSERT(g_llc_ctx->location == OSMO_GPRS_LLC_LOCATION_MS || + g_llc_ctx->location == OSMO_GPRS_LLC_LOCATION_SGSN); + rc = llc_prim_handle_ll_establish_req(llc_prim); + break; case OSMO_PRIM(OSMO_GPRS_LLC_LL_XID, PRIM_OP_REQUEST): OSMO_ASSERT(g_llc_ctx->location == OSMO_GPRS_LLC_LOCATION_MS || g_llc_ctx->location == OSMO_GPRS_LLC_LOCATION_SGSN); diff --git a/tests/llc/llc_prim_test.c b/tests/llc/llc_prim_test.c index 83a7556..54dabb6 100644 --- a/tests/llc/llc_prim_test.c +++ b/tests/llc/llc_prim_test.c @@ -231,6 +231,11 @@ OSMO_ASSERT(rc == 0); char xid_l3_pars[] = "xid-l3-dummy-buffer"; + llc_prim = osmo_gprs_llc_prim_alloc_ll_establish_req(tlli, OSMO_GPRS_LLC_SAPI_SNDCP3, (uint8_t *)xid_l3_pars, sizeof(xid_l3_pars)); + OSMO_ASSERT(llc_prim); + rc = osmo_gprs_llc_prim_upper_down(llc_prim); + OSMO_ASSERT(rc == -ENOTSUP); /* ABM mode not supported yet. */ + llc_prim = osmo_gprs_llc_prim_alloc_ll_xid_req(tlli, OSMO_GPRS_LLC_SAPI_SNDCP3, (uint8_t *)xid_l3_pars, sizeof(xid_l3_pars)); OSMO_ASSERT(llc_prim); rc = osmo_gprs_llc_prim_upper_down(llc_prim); diff --git a/tests/llc/llc_prim_test.err b/tests/llc/llc_prim_test.err index 667b423..444f3da 100644 --- a/tests/llc/llc_prim_test.err +++ b/tests/llc/llc_prim_test.err @@ -13,6 +13,8 @@ DLGLOBAL NOTICE LLME(e1c5d364/e1c5d364){ASSIGNED} LLGM Assign post (e1c5d364 => e1c5d364) DLGLOBAL INFO Rx from upper layers: LLGMM-RESET.request DLGLOBAL INFO LLME(e1c5d364/e1c5d364){ASSIGNED} LLGMM-RESET.request +DLGLOBAL INFO Rx from upper layers: LL-ESTABLISH.request +DLGLOBAL ERROR LLE(e1c5d364/e1c5d364,SNDCP3){UNASSIGNED} Tx SABM: ABM mode not supported yet! DLGLOBAL INFO Rx from upper layers: LL-XID.request DLGLOBAL NOTICE LLE(e1c5d364/e1c5d364,SNDCP3){UNASSIGNED} Sending XID type L3-Params (30 bytes) request to MS... DLGLOBAL INFO Rx from upper layers: LL-UNITDATA.request -- To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/32311 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-gprs Gerrit-Branch: master Gerrit-Change-Id: I27aff368f4a70d30c23523946d72a751e100f298 Gerrit-Change-Number: 32311 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • ...
  • 226
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.