Make Tx-done interrupt processing in iwx(4) more similar to iwlwifi.
When iwx(4) takes a frame off the queue we used the ring index reported
by firmware to figure out which frame can be taken off the ring.
This logic was inherited from iwn(4).
We have sometimes seen an index get skipped and had a workaround in place
where we took all pending frames up to this index off the ring.
Apart from the ring index the firmware reports another value which is its
starting sequence number (SSN). An SSN is usually associated with a Tx
aggregation queue that uses block ack. On non-aggregation queues the SSN
matches the ring index most of the time and hence seems redundant at first
sight. But the values are not always the same.
We now always use the SSN as the upper bound which matches the Linux driver.
This seems to fix fatal firmware errors during Tx commands seen by jcs@
which suggests that we were sometimes taking frames off the ring too early.