pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-abis/+/28071 )
Change subject: input/ipaccess: Avoid extra poll() call when e1i_ts tx queue becomes empty ...................................................................... input/ipaccess: Avoid extra poll() call when e1i_ts tx queue becomes empty Before this patch, the logic (both for delayed tx and immediate tx) always left the WRITE flag set, and relied on an extra call back from the main loop (poll()) to disable the flag until it found out there was nothing else to send. Instead, let's disable it immediatelly at the time we submit the last message in the queue. Change-Id: I0e5da5d1342f352d0e2bca9ee39c768bccb2c8d5 --- M src/input/ipaccess.c 1 file changed, 17 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/71/28071/1 diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c index ca48d21..07fd814 100644 --- a/src/input/ipaccess.c +++ b/src/input/ipaccess.c @@ -477,12 +477,24 @@ } } +static bool e1i_ts_has_pending_tx_msgs(struct e1inp_ts *e1i_ts) +{ + struct e1inp_sign_link *link; + llist_for_each_entry(link, &e1i_ts->sign.sign_links, list) { + if (!llist_empty(&link->tx_list)) { + return true; + } + } + return false; +} + static void timeout_ts1_write(void *data) { struct e1inp_ts *e1i_ts = (struct e1inp_ts *)data; /* trigger write of ts1, due to tx delay timer */ - ts_want_write(e1i_ts); + if (e1i_ts_has_pending_tx_msgs(e1i_ts)) + ts_want_write(e1i_ts); } static int __handle_ts1_write(struct osmo_fd *bfd, struct e1inp_line *line) @@ -535,9 +547,11 @@ /* set tx delay timer for next event */ osmo_timer_setup(&e1i_ts->sign.tx_timer, timeout_ts1_write, e1i_ts); osmo_timer_schedule(&e1i_ts->sign.tx_timer, 0, e1i_ts->sign.delay); - } - + } else { out: + if (!e1i_ts_has_pending_tx_msgs(e1i_ts)) + osmo_fd_write_disable(bfd); + } msgb_free(msg); return ret; err: -- To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/28071 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-abis Gerrit-Branch: master Gerrit-Change-Id: I0e5da5d1342f352d0e2bca9ee39c768bccb2c8d5 Gerrit-Change-Number: 28071 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-MessageType: newchange