]> err.no Git - linux-2.6/blobdiff - drivers/net/wireless/ipw2200.h
Workaround kernel BUG_ON panic caused by unexpected duplicate packets.
[linux-2.6] / drivers / net / wireless / ipw2200.h
index 9dbd73a42094fb8b918c39ee3a731ef9d5dd3be1..9bf8aa427d8c03cfef2123e975abce795809d783 100644 (file)
@@ -699,8 +699,8 @@ struct ipw_rx_packet {
 } __attribute__ ((packed));
 
 #define IPW_RX_NOTIFICATION_SIZE sizeof(struct ipw_rx_header) + 12
-#define IPW_RX_FRAME_SIZE        sizeof(struct ipw_rx_header) + \
-                                 sizeof(struct ipw_rx_frame)
+#define IPW_RX_FRAME_SIZE        (unsigned int)(sizeof(struct ipw_rx_header) + \
+                                 sizeof(struct ipw_rx_frame))
 
 struct ipw_rx_mem_buffer {
        dma_addr_t dma_addr;
@@ -1029,6 +1029,7 @@ struct ipw_cmd {
 #define STATUS_SCAN_PENDING     (1<<20)
 #define STATUS_SCANNING         (1<<21)
 #define STATUS_SCAN_ABORTING    (1<<22)
+#define STATUS_SCAN_FORCED      (1<<23)
 
 #define STATUS_LED_LINK_ON      (1<<24)
 #define STATUS_LED_ACT_ON       (1<<25)
@@ -1074,6 +1075,15 @@ struct average {
 };
 
 #define MAX_SPEED_SCAN 100
+#define IPW_IBSS_MAC_HASH_SIZE 31
+
+struct ipw_ibss_seq {
+       u8 mac[ETH_ALEN];
+       u16 seq_num;
+       u16 frag_num;
+       unsigned long packet_time;
+       struct list_head list;
+};
 
 struct ipw_priv {
        /* ieee device used by generic ieee processing code */
@@ -1115,7 +1125,7 @@ struct ipw_priv {
        int rx_bufs_min;          /**< minimum number of bufs in Rx queue */
        int rx_pend_max;          /**< maximum pending buffers for one IRQ */
        u32 hcmd_seq;             /**< sequence number for hcmd */
-       u32 missed_beacon_threshold;
+       u32 disassociate_threshold;
        u32 roaming_threshold;
 
        struct ipw_associate assoc_request;
@@ -1156,6 +1166,8 @@ struct ipw_priv {
        u8 mac_addr[ETH_ALEN];
        u8 num_stations;
        u8 stations[MAX_STATIONS][ETH_ALEN];
+       u8 short_retry_limit;
+       u8 long_retry_limit;
 
        u32 notif_missed_beacons;
 
@@ -1176,8 +1188,14 @@ struct ipw_priv {
        u8 speed_scan[MAX_SPEED_SCAN];
        u8 speed_scan_pos;
 
+       u16 last_seq_num;
+       u16 last_frag_num;
+       unsigned long last_packet_time;
+       struct list_head ibss_mac_hash[IPW_IBSS_MAC_HASH_SIZE];
+
        /* eeprom */
        u8 eeprom[0x100];       /* 256 bytes of eeprom */
+       u8 country[4];
        int eeprom_delay;
 
        struct iw_statistics wstats;
@@ -1187,6 +1205,7 @@ struct ipw_priv {
        struct work_struct adhoc_check;
        struct work_struct associate;
        struct work_struct disassociate;
+       struct work_struct system_config;
        struct work_struct rx_replenish;
        struct work_struct request_scan;
        struct work_struct adapter_restart;