diff options
-rw-r--r-- | include/osmocom/msc/transaction.h | 2 | ||||
-rw-r--r-- | src/libmsc/gsm_04_08_cc.c | 3 | ||||
-rw-r--r-- | src/libmsc/gsm_04_11.c | 2 | ||||
-rw-r--r-- | src/libmsc/gsm_09_11.c | 3 | ||||
-rw-r--r-- | src/libmsc/transaction.c | 13 |
5 files changed, 9 insertions, 14 deletions
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h index 36e9bc1ed..c5c740c50 100644 --- a/include/osmocom/msc/transaction.h +++ b/include/osmocom/msc/transaction.h @@ -111,7 +111,7 @@ struct gsm_trans *trans_alloc(struct gsm_network *net, void trans_free(struct gsm_trans *trans); int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr *vsub, - uint8_t protocol, uint8_t ti_flag); + uint8_t protocol); struct gsm_trans *trans_has_conn(const struct ran_conn *conn); void trans_conn_closed(const struct ran_conn *conn); diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c index 93e136c16..b84fd03ca 100644 --- a/src/libmsc/gsm_04_08_cc.c +++ b/src/libmsc/gsm_04_08_cc.c @@ -630,8 +630,7 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg) } /* Get free transaction_id */ - trans_id = trans_assign_trans_id(trans->net, trans->vsub, - GSM48_PDISC_CC, 0); + trans_id = trans_assign_trans_id(trans->net, trans->vsub, GSM48_PDISC_CC); if (trans_id < 0) { /* no free transaction ID */ rc = mncc_release_ind(trans->net, trans, trans->callref, diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index e63d1b6ea..ccb26107f 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -1064,7 +1064,7 @@ static struct gsm_trans *gsm411_alloc_mt_trans(struct gsm_network *net, LOGP(DLSMS, LOGL_INFO, "Going to send a MT SMS\n"); /* Generate a new transaction ID */ - tid = trans_assign_trans_id(net, vsub, GSM48_PDISC_SMS, 0); + tid = trans_assign_trans_id(net, vsub, GSM48_PDISC_SMS); if (tid == -1) { LOGP(DLSMS, LOGL_ERROR, "No available transaction IDs\n"); return NULL; diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c index dca315d7f..08721d47c 100644 --- a/src/libmsc/gsm_09_11.c +++ b/src/libmsc/gsm_09_11.c @@ -306,8 +306,7 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net, osmo_counter_inc(net->active_nc_ss); /* Assign transaction ID */ - tid = trans_assign_trans_id(trans->net, - trans->vsub, GSM48_PDISC_NC_SS, 0); + tid = trans_assign_trans_id(trans->net, trans->vsub, GSM48_PDISC_NC_SS); if (tid < 0) { LOGP(DMM, LOGL_ERROR, "No free transaction ID\n"); /* TODO: inform HLR about this */ diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 7c91c9225..237191d09 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -179,22 +179,19 @@ void trans_free(struct gsm_trans *trans) } /*! allocate an unused transaction ID for the given subscriber - * in the given protocol using the ti_flag specified + * in the given protocol using TI flag = 0 (allocated by us). + * See GSM 04.07, section 11.2.3.1.3 "Transaction identifier". * \param[in] net GSM network * \param[in] subscr Subscriber for which to find ID * \param[in] protocol Protocol for whihc to find ID - * \param[in] ti_flag FIXME */ int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr *vsub, - uint8_t protocol, uint8_t ti_flag) + uint8_t protocol) { struct gsm_trans *trans; unsigned int used_tid_bitmask = 0; int i, j, h; - if (ti_flag) - ti_flag = 0x8; - /* generate bitmask of already-used TIDs for this (subscr,proto) */ llist_for_each_entry(trans, &net->trans_list, entry) { if (trans->vsub != vsub || @@ -206,10 +203,10 @@ int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr /* find a new one, trying to go in a 'circular' pattern */ for (h = 6; h > 0; h--) - if (used_tid_bitmask & (1 << (h | ti_flag))) + if (used_tid_bitmask & (1 << h)) break; for (i = 0; i < 7; i++) { - j = ((h + i) % 7) | ti_flag; + j = (h + i) % 7; if ((used_tid_bitmask & (1 << j)) == 0) return j; } |