[PATCH] ipw2100: Fix dropping fragmented small packet problem
authorZhu Yi <yi.zhu@intel.com>
Wed, 20 Dec 2006 08:11:58 +0000 (16:11 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 3 Jan 2007 01:56:26 +0000 (20:56 -0500)
The rx_data.header struct is ieee80211_hdr_4addr. If a wireless frame uses
ieee80211_hdr_3addr header and is less than 6 bytes, it will be discarded.
This is not likely going to happen for normal packets (since there is TCP, IP
headers). But if fragmentation is used, there will be such small trailing
packets. And they will be lost for ever.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ipw2100.c

index 0e94fbbf7a941801eb1bbf2051323fe15f793eb4..b85857a848706fcde3c25d251fac7d280aea9201 100644 (file)
@@ -2664,7 +2664,7 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)
                                break;
                        }
 #endif
-                       if (stats.len < sizeof(u->rx_data.header))
+                       if (stats.len < sizeof(struct ieee80211_hdr_3addr))
                                break;
                        switch (WLAN_FC_GET_TYPE(u->rx_data.header.frame_ctl)) {
                        case IEEE80211_FTYPE_MGMT: