media: cec-adap.c: stop trying LAs on CEC_TX_STATUS_TIMEOUT
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 6 May 2022 07:39:22 +0000 (09:39 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 13 May 2022 09:28:35 +0000 (11:28 +0200)
If, while trying to claim a free logical address, a POLL message
times out, then abort this process. A CEC_TX_STATUS_TIMEOUT
should be handled the same as a CEC_TX_STATUS_ABORTED.

This avoids a situation where transmits time out due to a
driver or hardware bug and it takes ages before the attempt
to find available free logical addresses finishes.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/cec/core/cec-adap.c

index b47280f..004121e 100644 (file)
@@ -1282,10 +1282,11 @@ static int cec_config_log_addr(struct cec_adapter *adap,
                        return err;
 
                /*
-                * The message was aborted due to a disconnect or
+                * The message was aborted or timed out due to a disconnect or
                 * unconfigure, just bail out.
                 */
-               if (msg.tx_status & CEC_TX_STATUS_ABORTED)
+               if (msg.tx_status &
+                   (CEC_TX_STATUS_ABORTED | CEC_TX_STATUS_TIMEOUT))
                        return -EINTR;
                if (msg.tx_status & CEC_TX_STATUS_OK)
                        return 0;