aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ipw2200.h
diff options
context:
space:
mode:
authorJames Ketrenos <jketreno@linux.intel.com>2005-08-24 22:43:11 -0400
committerJames Ketrenos <jketreno@linux.intel.com>2005-11-07 18:49:53 -0500
commita613bffd3aac89bb0a8c9b7afa72af9b0ae30f0a (patch)
tree982d4f3de285993749138b0e6e2f2d778b120407 /drivers/net/wireless/ipw2200.h
parentea2b26e0a0264650e13acac8e66d315bb818897c (diff)
Catch ipw2200 up to equivelancy with v1.0.2
Removed unneeded parenthesis around numeric constant defines Added support for iwspy Put in fix for Ad-Hoc mode not passing through all packets (thanks to KKH) Put in fix for fragmentation not working for fragment sizes between 441-464 bytes (thanks to Mohamed Abbas) Fixed #592 problem of CONFIG_IEEE80211_WPA_MODULE not including WPA support into the driver -- fixed as a result of no longer limiting WPAs inclusion Fixed #594 problem with user rates mask causing lack of association if AP mandatory rate is masked out. We now add back in as a supported rate any mandatory rate. Fixed #597 kernel oops due to calling dev_kfree_skb on an skb multiple times. Added code to control LEDs that can be controlled through the wireless NIC (vs. non-wireless HW interfaces) -- this is currently disabled by default due to reports by some users of it hanging their laptop. Added some more debug messages around fragmentation logic Added locking around STATUS_HCMD_ACTIVE to prevent re-entry race conditions Moved ipw_adapter_restart to only execute on the priv->workqueue to keep keyboard errors from occuring during adapter restart Added CFG_BACKGROUND_SCAN to easily allow people to play with background scanning implementations Modified WPA logic to send WPA IE if one is set (vs. being based on wpa_enabled) Modified scan result logic to report WPA and RSN IEs if set (vs. being based on wpa_enabled) Fixed issues with endianess compatability between the host and wireless adapter (thanks to York Liu and Yi Zhu) Fixed problem with Ad-Hoc network creation causing a firmware error if a scan was actively running (thanks to Mohamed Abbas) Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Diffstat (limited to 'drivers/net/wireless/ipw2200.h')
-rw-r--r--drivers/net/wireless/ipw2200.h73
1 files changed, 48 insertions, 25 deletions
diff --git a/drivers/net/wireless/ipw2200.h b/drivers/net/wireless/ipw2200.h
index 068027963181..1b339cb7a522 100644
--- a/drivers/net/wireless/ipw2200.h
+++ b/drivers/net/wireless/ipw2200.h
@@ -403,9 +403,9 @@ struct clx2_tx_queue {
403#define RX_FREE_BUFFERS 32 403#define RX_FREE_BUFFERS 32
404#define RX_LOW_WATERMARK 8 404#define RX_LOW_WATERMARK 8
405 405
406#define SUP_RATE_11A_MAX_NUM_CHANNELS (8) 406#define SUP_RATE_11A_MAX_NUM_CHANNELS 8
407#define SUP_RATE_11B_MAX_NUM_CHANNELS (4) 407#define SUP_RATE_11B_MAX_NUM_CHANNELS 4
408#define SUP_RATE_11G_MAX_NUM_CHANNELS (12) 408#define SUP_RATE_11G_MAX_NUM_CHANNELS 12
409 409
410// Used for passing to driver number of successes and failures per rate 410// Used for passing to driver number of successes and failures per rate
411struct rate_histogram { 411struct rate_histogram {
@@ -890,6 +890,9 @@ struct ipw_cmd {
890#define STATUS_SCANNING (1<<21) 890#define STATUS_SCANNING (1<<21)
891#define STATUS_SCAN_ABORTING (1<<22) 891#define STATUS_SCAN_ABORTING (1<<22)
892 892
893#define STATUS_LED_LINK_ON (1<<24)
894#define STATUS_LED_ACT_ON (1<<25)
895
893#define STATUS_INDIRECT_BYTE (1<<28) /* sysfs entry configured for access */ 896#define STATUS_INDIRECT_BYTE (1<<28) /* sysfs entry configured for access */
894#define STATUS_INDIRECT_DWORD (1<<29) /* sysfs entry configured for access */ 897#define STATUS_INDIRECT_DWORD (1<<29) /* sysfs entry configured for access */
895#define STATUS_DIRECT_DWORD (1<<30) /* sysfs entry configured for access */ 898#define STATUS_DIRECT_DWORD (1<<30) /* sysfs entry configured for access */
@@ -905,6 +908,8 @@ struct ipw_cmd {
905#define CFG_ASSOCIATE (1<<6) 908#define CFG_ASSOCIATE (1<<6)
906#define CFG_FIXED_RATE (1<<7) 909#define CFG_FIXED_RATE (1<<7)
907#define CFG_ADHOC_CREATE (1<<8) 910#define CFG_ADHOC_CREATE (1<<8)
911#define CFG_NO_LED (1<<9)
912#define CFG_BACKGROUND_SCAN (1<<10)
908 913
909#define CAP_SHARED_KEY (1<<0) /* Off = OPEN */ 914#define CAP_SHARED_KEY (1<<0) /* Off = OPEN */
910#define CAP_PRIVACY_ON (1<<1) /* Off = No privacy */ 915#define CAP_PRIVACY_ON (1<<1) /* Off = No privacy */
@@ -1046,9 +1051,24 @@ struct ipw_priv {
1046 struct work_struct abort_scan; 1051 struct work_struct abort_scan;
1047 struct work_struct roam; 1052 struct work_struct roam;
1048 struct work_struct scan_check; 1053 struct work_struct scan_check;
1054 struct work_struct link_up;
1055 struct work_struct link_down;
1049 1056
1050 struct tasklet_struct irq_tasklet; 1057 struct tasklet_struct irq_tasklet;
1051 1058
1059 /* LED related variables and work_struct */
1060 u8 nic_type;
1061 u32 led_activity_on;
1062 u32 led_activity_off;
1063 u32 led_association_on;
1064 u32 led_association_off;
1065 u32 led_ofdm_on;
1066 u32 led_ofdm_off;
1067
1068 struct work_struct led_link_on;
1069 struct work_struct led_link_off;
1070 struct work_struct led_act_off;
1071
1052#define IPW_2200BG 1 1072#define IPW_2200BG 1
1053#define IPW_2915ABG 2 1073#define IPW_2915ABG 2
1054 u8 adapter; 1074 u8 adapter;
@@ -1126,6 +1146,8 @@ do { if (ipw_debug_level & (level)) \
1126#define IPW_DL_RF_KILL (1<<17) 1146#define IPW_DL_RF_KILL (1<<17)
1127#define IPW_DL_FW_ERRORS (1<<18) 1147#define IPW_DL_FW_ERRORS (1<<18)
1128 1148
1149#define IPW_DL_LED (1<<19)
1150
1129#define IPW_DL_ORD (1<<20) 1151#define IPW_DL_ORD (1<<20)
1130 1152
1131#define IPW_DL_FRAG (1<<21) 1153#define IPW_DL_FRAG (1<<21)
@@ -1151,6 +1173,7 @@ do { if (ipw_debug_level & (level)) \
1151#define IPW_DEBUG_TX(f, a...) IPW_DEBUG(IPW_DL_TX, f, ## a) 1173#define IPW_DEBUG_TX(f, a...) IPW_DEBUG(IPW_DL_TX, f, ## a)
1152#define IPW_DEBUG_ISR(f, a...) IPW_DEBUG(IPW_DL_ISR, f, ## a) 1174#define IPW_DEBUG_ISR(f, a...) IPW_DEBUG(IPW_DL_ISR, f, ## a)
1153#define IPW_DEBUG_MANAGEMENT(f, a...) IPW_DEBUG(IPW_DL_MANAGE, f, ## a) 1175#define IPW_DEBUG_MANAGEMENT(f, a...) IPW_DEBUG(IPW_DL_MANAGE, f, ## a)
1176#define IPW_DEBUG_LED(f, a...) IPW_DEBUG(IPW_DL_LED, f, ## a)
1154#define IPW_DEBUG_WEP(f, a...) IPW_DEBUG(IPW_DL_WEP, f, ## a) 1177#define IPW_DEBUG_WEP(f, a...) IPW_DEBUG(IPW_DL_WEP, f, ## a)
1155#define IPW_DEBUG_HC(f, a...) IPW_DEBUG(IPW_DL_HOST_COMMAND, f, ## a) 1178#define IPW_DEBUG_HC(f, a...) IPW_DEBUG(IPW_DL_HOST_COMMAND, f, ## a)
1156#define IPW_DEBUG_FRAG(f, a...) IPW_DEBUG(IPW_DL_FRAG, f, ## a) 1179#define IPW_DEBUG_FRAG(f, a...) IPW_DEBUG(IPW_DL_FRAG, f, ## a)
@@ -1268,25 +1291,25 @@ do { if (ipw_debug_level & (level)) \
1268#define CX2_DMA_I_DMA_CONTROL 0x003000A4 1291#define CX2_DMA_I_DMA_CONTROL 0x003000A4
1269#define CX2_DMA_I_CB_BASE 0x003000A0 1292#define CX2_DMA_I_CB_BASE 0x003000A0
1270 1293
1271#define CX2_TX_CMD_QUEUE_BD_BASE (0x00000200) 1294#define CX2_TX_CMD_QUEUE_BD_BASE 0x00000200
1272#define CX2_TX_CMD_QUEUE_BD_SIZE (0x00000204) 1295#define CX2_TX_CMD_QUEUE_BD_SIZE 0x00000204
1273#define CX2_TX_QUEUE_0_BD_BASE (0x00000208) 1296#define CX2_TX_QUEUE_0_BD_BASE 0x00000208
1274#define CX2_TX_QUEUE_0_BD_SIZE (0x0000020C) 1297#define CX2_TX_QUEUE_0_BD_SIZE (0x0000020C)
1275#define CX2_TX_QUEUE_1_BD_BASE (0x00000210) 1298#define CX2_TX_QUEUE_1_BD_BASE 0x00000210
1276#define CX2_TX_QUEUE_1_BD_SIZE (0x00000214) 1299#define CX2_TX_QUEUE_1_BD_SIZE 0x00000214
1277#define CX2_TX_QUEUE_2_BD_BASE (0x00000218) 1300#define CX2_TX_QUEUE_2_BD_BASE 0x00000218
1278#define CX2_TX_QUEUE_2_BD_SIZE (0x0000021C) 1301#define CX2_TX_QUEUE_2_BD_SIZE (0x0000021C)
1279#define CX2_TX_QUEUE_3_BD_BASE (0x00000220) 1302#define CX2_TX_QUEUE_3_BD_BASE 0x00000220
1280#define CX2_TX_QUEUE_3_BD_SIZE (0x00000224) 1303#define CX2_TX_QUEUE_3_BD_SIZE 0x00000224
1281#define CX2_RX_BD_BASE (0x00000240) 1304#define CX2_RX_BD_BASE 0x00000240
1282#define CX2_RX_BD_SIZE (0x00000244) 1305#define CX2_RX_BD_SIZE 0x00000244
1283#define CX2_RFDS_TABLE_LOWER (0x00000500) 1306#define CX2_RFDS_TABLE_LOWER 0x00000500
1284 1307
1285#define CX2_TX_CMD_QUEUE_READ_INDEX (0x00000280) 1308#define CX2_TX_CMD_QUEUE_READ_INDEX 0x00000280
1286#define CX2_TX_QUEUE_0_READ_INDEX (0x00000284) 1309#define CX2_TX_QUEUE_0_READ_INDEX 0x00000284
1287#define CX2_TX_QUEUE_1_READ_INDEX (0x00000288) 1310#define CX2_TX_QUEUE_1_READ_INDEX 0x00000288
1288#define CX2_TX_QUEUE_2_READ_INDEX (0x0000028C) 1311#define CX2_TX_QUEUE_2_READ_INDEX (0x0000028C)
1289#define CX2_TX_QUEUE_3_READ_INDEX (0x00000290) 1312#define CX2_TX_QUEUE_3_READ_INDEX 0x00000290
1290#define CX2_RX_READ_INDEX (0x000002A0) 1313#define CX2_RX_READ_INDEX (0x000002A0)
1291 1314
1292#define CX2_TX_CMD_QUEUE_WRITE_INDEX (0x00000F80) 1315#define CX2_TX_CMD_QUEUE_WRITE_INDEX (0x00000F80)
@@ -1333,15 +1356,15 @@ do { if (ipw_debug_level & (level)) \
1333#define EEPROM_HW_VERSION (GET_EEPROM_ADDR(0x72,LSB)) /* 2 bytes */ 1356#define EEPROM_HW_VERSION (GET_EEPROM_ADDR(0x72,LSB)) /* 2 bytes */
1334 1357
1335/* NIC type as found in the one byte EEPROM_NIC_TYPE offset*/ 1358/* NIC type as found in the one byte EEPROM_NIC_TYPE offset*/
1336#define EEPROM_NIC_TYPE_STANDARD 0 1359#define EEPROM_NIC_TYPE_0 0
1337#define EEPROM_NIC_TYPE_DELL 1 1360#define EEPROM_NIC_TYPE_1 1
1338#define EEPROM_NIC_TYPE_FUJITSU 2 1361#define EEPROM_NIC_TYPE_2 2
1339#define EEPROM_NIC_TYPE_IBM 3 1362#define EEPROM_NIC_TYPE_3 3
1340#define EEPROM_NIC_TYPE_HP 4 1363#define EEPROM_NIC_TYPE_4 4
1341 1364
1342#define FW_MEM_REG_LOWER_BOUND 0x00300000 1365#define FW_MEM_REG_LOWER_BOUND 0x00300000
1343#define FW_MEM_REG_EEPROM_ACCESS (FW_MEM_REG_LOWER_BOUND + 0x40) 1366#define FW_MEM_REG_EEPROM_ACCESS (FW_MEM_REG_LOWER_BOUND + 0x40)
1344 1367#define CX2_EVENT_REG (FW_MEM_REG_LOWER_BOUND + 0x04)
1345#define EEPROM_BIT_SK (1<<0) 1368#define EEPROM_BIT_SK (1<<0)
1346#define EEPROM_BIT_CS (1<<1) 1369#define EEPROM_BIT_CS (1<<1)
1347#define EEPROM_BIT_DI (1<<2) 1370#define EEPROM_BIT_DI (1<<2)