From 12611a51fc163174a95c5d1df02edf7a85a17f04 Mon Sep 17 00:00:00 2001 From: Alexander Stein Date: Mon, 16 Dec 2013 08:54:11 +0100 Subject: [PATCH 1/1] sllin: signal timeout if there are less than configured characters We will hit the timeout if there is a larger length configured than actually received or none at all. Signal this to userspace. Signed-off-by: Alexander Stein --- sllin/sllin.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sllin/sllin.c b/sllin/sllin.c index 457788c..ffbdf01 100644 --- a/sllin/sllin.c +++ b/sllin/sllin.c @@ -949,7 +949,16 @@ static enum hrtimer_restart sllin_rx_timeout_handler(struct hrtimer *hrtimer) { struct sllin *sl = container_of(hrtimer, struct sllin, rx_timer); - if (sl->lin_master) { + /* + * Signal timeout when: + * master: We did not receive as much characters as expected + * slave: * we did not receive any data bytes at all + * * we know the length and didn't receive enough + */ + if ((sl->lin_master) || + (sl->rx_cnt <= SLLIN_BUFF_DATA) || + ((!sl->rx_len_unknown) && + (sl->rx_cnt < sl->rx_expect))) { sllin_report_error(sl, LIN_ERR_RX_TIMEOUT); set_bit(SLF_TMOUTEVENT, &sl->flags); } else { -- 2.39.2