aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/msc/transaction.h2
-rw-r--r--src/libmsc/gsm_04_08_cc.c3
-rw-r--r--src/libmsc/gsm_04_11.c2
-rw-r--r--src/libmsc/gsm_09_11.c3
-rw-r--r--src/libmsc/transaction.c13
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;
}