media: cec: fix the Signal Free Time calculation
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 5 Oct 2018 12:00:21 +0000 (08:00 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 13 Nov 2018 19:08:53 +0000 (11:08 -0800)
commitb68d405a2e6a3e8236773b12739ef684fb43d0e9
treea12c42bae0bbf29a6e2bc1b9e97ab3cfdcdc4c66
parent94ec4487af9f08d10270bd2ad5d6802a2a42d74f
media: cec: fix the Signal Free Time calculation

commit 7d867a1b765e2b70815fec4964d7822a976ed349 upstream.

The calculation of the Signal Free Time in the framework was not
correct. If a message was received, then the next transmit should be
considered a New Initiator and use a shorter SFT value.

This was not done with the result that if both sides where continually
sending messages, they both could use the same SFT value and one side
could deny the other side access to the bus.

Note that this fix does not take the corner case into account where
a receive is in progress when you call adap_transmit.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: <stable@vger.kernel.org> # for v4.18 and up
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/cec/cec-adap.c
include/media/cec.h