pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/40161?usp=email )
Change subject: cosmetic: Improve ranap_msg passing ownership documentation ......................................................................
cosmetic: Improve ranap_msg passing ownership documentation
In general ranap_msg is made owned by OTC_SELECT, and under RAB Assignment where PFCP or MGCP is involved the msg ownership is temporarily stolen to the related FSM instance.
Change-Id: I556e01b26a71b43432c623adb7ea5af2114981e3 --- M include/osmocom/hnbgw/context_map.h M src/osmo-hnbgw/hnbgw_cn.c M src/osmo-hnbgw/hnbgw_ranap.c 3 files changed, 18 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/61/40161/1
diff --git a/include/osmocom/hnbgw/context_map.h b/include/osmocom/hnbgw/context_map.h index f9bd251..41b312d 100644 --- a/include/osmocom/hnbgw/context_map.h +++ b/include/osmocom/hnbgw/context_map.h @@ -29,13 +29,17 @@ * - The RANAP message shall be at msgb_l2(). */ enum map_rua_fsm_event { - /* Receiving a RUA Connect from HNB. */ + /* Receiving a RUA Connect from HNB. + * Parameter: struct msgb *ranap_msg */ MAP_RUA_EV_RX_CONNECT, - /* Receiving some data from HNB via RUA, to forward via SCCP to CN. */ + /* Receiving some data from HNB via RUA, to forward via SCCP to CN. + * Parameter: struct msgb *ranap_msg */ MAP_RUA_EV_RX_DIRECT_TRANSFER, - /* Receiving a RUA Disconnect from HNB. */ + /* Receiving a RUA Disconnect from HNB. + * Parameter: struct msgb *ranap_msg (can be NULL) */ MAP_RUA_EV_RX_DISCONNECT, - /* SCCP has received some data from CN to forward via RUA to HNB. */ + /* SCCP has received some data from CN to forward via RUA to HNB. + * Parameter: struct msgb *ranap_msg */ MAP_RUA_EV_TX_DIRECT_TRANSFER, /* The CN side is disconnected (e.g. received an SCCP Released), that means we are going gracefully disconnect * RUA, too. */ @@ -52,9 +56,11 @@ enum map_sccp_fsm_event { /* Receiving an SCCP CC from CN. */ MAP_SCCP_EV_RX_CONNECTION_CONFIRM, - /* Receiving some data from CN via SCCP, to forward via RUA to HNB. */ + /* Receiving some data from CN via SCCP, to forward via RUA to HNB. + * Parameter: struct msgb *ranap_msg */ MAP_SCCP_EV_RX_DATA_INDICATION, - /* RUA has received some data from HNB to forward via SCCP to CN. */ + /* RUA has received some data from HNB to forward via SCCP to CN. + * Parameter: struct msgb *ranap_msg */ MAP_SCCP_EV_TX_DATA_REQUEST, /* 3GPP TS 25.468 9.1.5: The RAN side received a RUA Disconnect. * - Under normal conditions (cause=Normal) the RUA Disconnect contains a RANAP Iu-ReleaseComplete. diff --git a/src/osmo-hnbgw/hnbgw_cn.c b/src/osmo-hnbgw/hnbgw_cn.c index 3659b36..686a0e5 100644 --- a/src/osmo-hnbgw/hnbgw_cn.c +++ b/src/osmo-hnbgw/hnbgw_cn.c @@ -258,7 +258,8 @@ } }
-/* Entry point for primitives coming up from SCCP User SAP */ +/* Entry point for primitives coming up from SCCP User SAP. + * Ownership of oph->msg is transferred to us. */ static int sccp_sap_up(struct osmo_prim_hdr *oph, void *ctx) { struct osmo_sccp_user *scu = ctx; diff --git a/src/osmo-hnbgw/hnbgw_ranap.c b/src/osmo-hnbgw/hnbgw_ranap.c index 692cf11..6dc1f06 100644 --- a/src/osmo-hnbgw/hnbgw_ranap.c +++ b/src/osmo-hnbgw/hnbgw_ranap.c @@ -252,7 +252,7 @@ }
/* Process a received RANAP PDU through SCCP DATA.ind coming from CN (MSC/SGSN) - * Takes ownership of ranap_msg? */ + * ranap_msg is owned by OTC_SELECT. */ int hnbgw_ranap_rx_data_ul(struct hnbgw_context_map *map, struct msgb *ranap_msg) { OSMO_ASSERT(map); @@ -270,7 +270,7 @@ * information, for RTP mapping via MGW, or GTP mapping via UPF. */ switch (message->procedureCode) { case RANAP_ProcedureCode_id_RAB_Assignment: - /* mgw_fsm_handle_rab_ass_resp() takes ownership of prim->oph and (ranap) message */ + /* mgw_fsm_handle_rab_ass_resp() may take ownership of "ranap_msg" (prim->oph) and "message" */ return mgw_fsm_handle_cs_rab_ass_resp(map, ranap_msg, message); } } else { @@ -279,7 +279,7 @@ /* map->is_ps == true and PFCP is enabled in osmo-hnbgw.cfg */ switch (message->procedureCode) { case RANAP_ProcedureCode_id_RAB_Assignment: - /* ps_rab_ass_fsm takes ownership of prim->oph and RANAP message */ + /* ps_rab_ass_fsm() may take ownership of "ranap_msg" (prim->oph) and "message" */ return hnbgw_gtpmap_rx_rab_ass_resp(map, ranap_msg, message); } } @@ -617,7 +617,7 @@ }
/* Process a received RANAP PDU through SCCP DATA.ind coming from CN (MSC/SGSN) - * Takes ownership of ranap_msg? */ + * ranap_msg is owned by OTC_SELECT. */ int hnbgw_ranap_rx_data_dl(struct hnbgw_context_map *map, struct msgb *ranap_msg) { OSMO_ASSERT(map);