On 2013-04-08 12:24 AM, Adrian Chadd wrote: > Hm! > > On 7 April 2013 15:04, Felix Fietkau <nbd@xxxxxxxxxxx> wrote: >> As the comment in ath_get_next_rx_buf indicates, if a descriptor with >> the done bit set follows one with the done bit cleared, both descriptors >> should be discarded, however the driver is not doing that yet. >> >> To fix this, use the rs->rs_more flag as an indicator that the following >> frame should be discarded. This also helps with the split buffer case: >> if the first part of the frame is discarded, the following parts need to >> be discarded as well, since they contain no valid header or usable data. > > Have you seen this happen? > > I've added code to this in FreeBSD (based on the reference driver and > ath9k doing it) and I've never, ever seen it trigger. > > I went digging through the EV database and I found a bug (long since > fixed) where the code was adjusting the skb size and then pushing it > back onto the RX queue with an incorrect size. If it allocated a 2kiB > SKU and then reset the size to 4KiB, hilarity would ensue. > > This is why I'm asking. If it happens in the real world, fine. :-) I didn't see the done bit related corruption, but I fixed the code so that I could reuse it for the patch after it (which is based on real world observations). - Felix -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html