diff options
author | Stefan Sperling <stsp@cvs.openbsd.org> | 2021-09-24 19:02:17 +0000 |
---|---|---|
committer | Stefan Sperling <stsp@cvs.openbsd.org> | 2021-09-24 19:02:17 +0000 |
commit | f626569e284aa5656ca3bdc4ac2ac4054a5262db (patch) | |
tree | f9f8cdd4a98360815c5ee6a8598c23a82f75160e /sys/dev/pci/if_iwm.c | |
parent | f98659c33fd1ec0699580d461616621f002b45dd (diff) |
Reset the Tx timer when iwm(4) firmware sends a BA notification.
This prevents a bogus "device timeout" if firmware sends a IWM_BA_NOTIF
instead of IWM_TX_CMD in order to let us know that a frame has been sent
on a Tx aggregation queue. Such behaviour was observed on iwx(4), and there
is reason to believe that iwm(4) might also be affected by this issue.
Tested by Jean-Michel Bessot on 7265 via bugs@ where this change seems
to prevent random device timeouts.
Tested by myself on 8265 with no apparent behaviour change seen.
Diffstat (limited to 'sys/dev/pci/if_iwm.c')
-rw-r--r-- | sys/dev/pci/if_iwm.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/pci/if_iwm.c b/sys/dev/pci/if_iwm.c index 58d7c6dcc1f..cb75fbf0f19 100644 --- a/sys/dev/pci/if_iwm.c +++ b/sys/dev/pci/if_iwm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_iwm.c,v 1.367 2021/09/08 13:06:23 stsp Exp $ */ +/* $OpenBSD: if_iwm.c,v 1.368 2021/09/24 19:02:16 stsp Exp $ */ /* * Copyright (c) 2014, 2016 genua gmbh <info@genua.de> @@ -5720,6 +5720,8 @@ iwm_rx_compressed_ba(struct iwm_softc *sc, struct iwm_rx_packet *pkt, if (qid != IWM_FIRST_AGG_TX_QUEUE + ban->tid) return; + sc->sc_tx_timer = 0; + ba = &ni->ni_tx_ba[ban->tid]; if (ba->ba_state != IEEE80211_BA_AGREED) return; |