ath5k: drop warning on jumbo frames
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Mon, 10 May 2010 19:26:27 +0000 (15:26 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 11 May 2010 19:14:20 +0000 (15:14 -0400)
Jumbo frames are not supported, and if they are seen it is likely
a bogus frame so just silently discard them instead of warning on
them all time. Also, instead of dropping them immediately though
move the check *after* we check for all sort of frame errors. This
should enable us to discard these frames if the hardware picks
other bogus items first. Lets see if we still get those jumbo
counters increasing still with this.

Jumbo frames would happen if we tell hardware we can support
a small 802.11 chunks of DMA'd frame, hardware would split RX'd
frames into parts and we'd have to reconstruct them in software.
This is done with USB due to the bulk size but with ath5k we
already provide a good limit to hardware and this should not be
happening.

This is reported quite often and if it fills the logs then this
needs to be addressed and to avoid spurious reports.

Cc: stable@kernel.org
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index feb7b9e..febd036 100644 (file)
@@ -1931,12 +1931,6 @@ ath5k_tasklet_rx(unsigned long data)
 
                sc->stats.rx_all_count++;
 
-               if (unlikely(rs.rs_more)) {
-                       ATH5K_WARN(sc, "unsupported jumbo\n");
-                       sc->stats.rxerr_jumbo++;
-                       goto next;
-               }
-
                if (unlikely(rs.rs_status)) {
                        if (rs.rs_status & AR5K_RXERR_CRC)
                                sc->stats.rxerr_crc++;
@@ -1976,6 +1970,12 @@ ath5k_tasklet_rx(unsigned long data)
                                        sc->opmode != NL80211_IFTYPE_MONITOR)
                                goto next;
                }
+
+               if (unlikely(rs.rs_more)) {
+                       sc->stats.rxerr_jumbo++;
+                       goto next;
+
+               }
 accept:
                next_skb = ath5k_rx_skb_alloc(sc, &next_skb_addr);