diff options
-rw-r--r-- | include/mtp_data.h | 2 | ||||
-rw-r--r-- | src/links.c | 2 | ||||
-rw-r--r-- | src/mtp_layer3.c | 21 |
3 files changed, 17 insertions, 8 deletions
diff --git a/include/mtp_data.h b/include/mtp_data.h index 66b96c8..f519a55 100644 --- a/include/mtp_data.h +++ b/include/mtp_data.h @@ -90,7 +90,7 @@ void mtp_link_set_add_link(struct mtp_link_set *set, struct link_data *link); void mtp_link_set_init(void); /* to be implemented for MSU sending */ -void mtp_link_set_submit(struct link_data *link, struct msgb *msg); +void mtp_link_submit(struct link_data *link, struct msgb *msg); void mtp_link_set_forward_sccp(struct mtp_link_set *link, struct msgb *msg, int sls); void mtp_link_restart(struct link_data *link); void mtp_link_set_sccp_down(struct mtp_link_set *link); diff --git a/src/links.c b/src/links.c index 023a7f4..016542d 100644 --- a/src/links.c +++ b/src/links.c @@ -71,7 +71,7 @@ void mtp_link_set_sccp_down(struct mtp_link_set *link) { } -void mtp_link_set_submit(struct link_data *link, struct msgb *msg) +void mtp_link_submit(struct link_data *link, struct msgb *msg) { link->write(link, msg); } diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c index 2e83b34..281ec65 100644 --- a/src/mtp_layer3.c +++ b/src/mtp_layer3.c @@ -37,6 +37,15 @@ static void *tall_mtp_ctx = NULL; static int mtp_int_submit(struct mtp_link_set *link, int pc, int sls, int type, const uint8_t *data, unsigned int length); +static int mtp_link_set_submit(struct mtp_link_set *set, + int sls, struct msgb *msg) +{ + rate_ctr_inc(&set->ctrg->ctr[MTP_LSET_TOTA_OUT_MSG]); + mtp_link_submit(set->slc[sls], msg); + + return 0; +} + static struct msgb *mtp_msg_alloc(struct mtp_link_set *link) { struct mtp_level_3_hdr *hdr; @@ -204,7 +213,7 @@ static void mtp_send_sltm(struct mtp_link_set *link) return; } - mtp_link_set_submit(link->slc[0], msg); + mtp_link_set_submit(link, 0, msg); } static void mtp_sltm_t1_timeout(void *_link) @@ -329,13 +338,13 @@ static int mtp_link_sign_msg(struct mtp_link_set *link, struct mtp_level_3_hdr * msg = mtp_tfp_alloc(link, 0); if (!msg) return -1; - mtp_link_set_submit(link->slc[0], msg); + mtp_link_set_submit(link, 0, msg); msg = mtp_tra_alloc(link); if (!msg) return -1; - mtp_link_set_submit(link->slc[0], msg); + mtp_link_set_submit(link, 0, msg); link->sccp_up = 1; link->was_up = 1; LOGP(DINP, LOGL_INFO, "SCCP traffic allowed. %p\n", link); @@ -387,7 +396,7 @@ static int mtp_link_regular_msg(struct mtp_link_set *link, struct mtp_level_3_hd out = mtp_create_slta(link, mng, l3_len); if (!out) return -1; - mtp_link_set_submit(link->slc[0], out); + mtp_link_set_submit(link, 0, out); return 0; break; case MTP_TST_MSG_SLTA: @@ -473,7 +482,7 @@ static int mtp_link_sccp_data(struct mtp_link_set *link, struct mtp_level_3_hdr if (!out) return -1; - mtp_link_set_submit(link->slc[MTP_LINK_SLS(hdr->addr)], out); + mtp_link_set_submit(link, MTP_LINK_SLS(hdr->addr), out); return 0; } @@ -568,7 +577,7 @@ static int mtp_int_submit(struct mtp_link_set *link, int pc, int sls, int type, put_ptr = msgb_put(msg, length); memcpy(put_ptr, data, length); - mtp_link_set_submit(link->slc[sls % 16], msg); + mtp_link_set_submit(link, sls % 16, msg); return 0; } |