#include <linux/netdevice.h>
  #include <linux/if_arp.h>
  #include <linux/etherdevice.h>
+ #include <linux/ethtool.h>
  #include <linux/wireless.h>
+ #include <net/iw_handler.h>
+ #include <net/ieee80211.h>
  
 +#include <net/ieee80211.h>
 +
  #include <asm/uaccess.h>
  #include <asm/io.h>
  #include <asm/system.h>
  /* Internal constants                                               */
  /********************************************************************/
  
+ /* 802.2 LLC/SNAP header used for Ethernet encapsulation over 802.11 */
+ static const u8 encaps_hdr[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00};
+ #define ENCAPS_OVERHEAD               (sizeof(encaps_hdr) + 2)
+ 
  #define ORINOCO_MIN_MTU               256
 -#define ORINOCO_MAX_MTU               (IEEE802_11_DATA_LEN - ENCAPS_OVERHEAD)
 +#define ORINOCO_MAX_MTU               (IEEE80211_DATA_LEN - ENCAPS_OVERHEAD)
  
  #define SYMBOL_MAX_VER_LEN    (14)
  #define USER_BAP              0
                /* At least on Symbol firmware with PCF we get quite a
                     lot of these legitimately - Poll frames with no
                     data. */
-               stats->rx_dropped++;
-               goto drop;
+               return;
        }
 -      if (length > IEEE802_11_DATA_LEN) {
 +      if (length > IEEE80211_DATA_LEN) {
                printk(KERN_WARNING "%s: Oversized frame received (%d bytes)\n",
                       dev->name, length);
                stats->rx_length_errors++;