From: Alexander Stein Date: Mon, 16 Dec 2013 07:54:11 +0000 (+0100) Subject: sllin: signal timeout if there are less than configured characters X-Git-Url: http://rtime.felk.cvut.cz/gitweb/linux-lin.git/commitdiff_plain/12611a51fc163174a95c5d1df02edf7a85a17f04?hp=0bcbeebd5d817893bf301b2e3d9a4e87b86e224d 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 --- 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 {