diff options
author | Stefan Sperling <stsp@cvs.openbsd.org> | 2020-02-12 16:02:52 +0000 |
---|---|---|
committer | Stefan Sperling <stsp@cvs.openbsd.org> | 2020-02-12 16:02:52 +0000 |
commit | 42929787739b02239f2f550d2006e6cffd64c8ad (patch) | |
tree | 67f151a7982b8c4f3721a81df1fee59ddf578244 /sys/dev/pci/if_iwmvar.h | |
parent | 13d6fea92a19f7cd930f6b5a11cd720f6bf23a33 (diff) |
Implement a workaround for missing Tx completion interrupts in iwm(4).
iwm(4) releases resources whenever hardware signals Tx completion for a
frame at Tx queue index 'N'. It has been observed that we sometimes get
an interrupt for frame 'N - 2' followed by an interrupt for frame 'N',
with no interrupt being received for frame 'N - 1'.
Whenever this occurred a later decision to roam to another AP would fail
since AP node references for frames affected by missing interrupts were
never released. Another side-effect was an mbuf leak.
The problem was first observed at 36c3 and debugged there with bluhm@.
ok tobhe@
Diffstat (limited to 'sys/dev/pci/if_iwmvar.h')
-rw-r--r-- | sys/dev/pci/if_iwmvar.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/pci/if_iwmvar.h b/sys/dev/pci/if_iwmvar.h index 5206d9ac72a..aa586f131ed 100644 --- a/sys/dev/pci/if_iwmvar.h +++ b/sys/dev/pci/if_iwmvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_iwmvar.h,v 1.49 2019/12/18 09:52:15 stsp Exp $ */ +/* $OpenBSD: if_iwmvar.h,v 1.50 2020/02/12 16:02:51 stsp Exp $ */ /* * Copyright (c) 2014 genua mbh <info@genua.de> @@ -270,6 +270,7 @@ struct iwm_tx_ring { int qid; int queued; int cur; + int tail; }; #define IWM_RX_MQ_RING_COUNT 512 |