Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afbf30a2 authored by James Ketrenos's avatar James Ketrenos
Browse files

Catch ipw2200 up to equivelancy with v1.0.5



* Fixed #452 problem with setting retry limit (thanks to Hong Liu)
* Fixed #592 race condition during association causing firmware errors
* Fixed #602 problem with building in 64-bit environment
* Fixed #625 problem with SCAN_REQUEST_EXT sometimes failing
* Fixed #645 problem with bit rate not decreasing when moving laptop
  farther from AP
* Fixed #656 problem with 'iwconfig eth1 mode auto' and 'modprobe'
  locking the system
* Fixed #667 problem with "No space for Tx" for hwcrypto=1
* Fixed #685 kernel panic in rmmod caused by led work is still queued
* Fixed #695 problem with network doesn't reassociate after suspend/resume
* Fixed #701 problem with 'iwprvi sw_reset' not resetting the card from
  monitor mode
* Fixed #710 problem with monitor mode being used after a WEP key has
  been configured
* Fixed network->mode vs. priv->ieee->iw_mode checking (thanks to Ben Cahill)
* Fixed "Unknown management packet %d" warning
* Fixed setting channels multiple times in monitor mode causes scan stopped
* Fixed ipw_wx_sw_reset doesn't switch firmware if mode is changed.
* Add duplicate packet checking code (kill ping DUP! and TKIP replay warning)
* Fix hardware encryption (both WEP and AES) doesn't work with fragmentation.

Signed-off-by: default avatarJames Ketrenos <jketreno@linux.intel.com>
parent e4cc2899
Loading
Loading
Loading
Loading
+1101 −443

File changed.

Preview size limit exceeded, changes collapsed.

+22 −4
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ enum connection_manager_assoc_states {
#define HOST_NOTIFICATION_S36_MEASUREMENT_REFUSED       31

#define HOST_NOTIFICATION_STATUS_BEACON_MISSING         1
#define IPW_MB_DISASSOCIATE_THRESHOLD_DEFAULT           24
#define IPW_MB_DISASSOCIATE_THRESHOLD_DEFAULT           9
#define IPW_MB_ROAMING_THRESHOLD_DEFAULT                8
#define IPW_REAL_RATE_RX_PACKET_THRESHOLD               300

@@ -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;