Commit 01632fa4 authored by David Kilroy's avatar David Kilroy Committed by John W. Linville

orinoco: Use extended Agere scans available on 9.x series firmwares

This provides more information than the standard Agere scan, including
the WPA IE.
Signed-off-by: default avatarDavid Kilroy <kilroyd@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 3056c404
...@@ -303,6 +303,40 @@ union hermes_scan_info { ...@@ -303,6 +303,40 @@ union hermes_scan_info {
struct symbol_scan_apinfo s; struct symbol_scan_apinfo s;
}; };
/* Extended scan struct for HERMES_INQ_CHANNELINFO.
* wl_lkm calls this an ACS scan (Automatic Channel Select).
* Keep out of union hermes_scan_info because it is much bigger than
* the older scan structures. */
struct agere_ext_scan_info {
__le16 reserved0;
u8 noise;
u8 level;
u8 rx_flow;
u8 rate;
__le16 reserved1[2];
__le16 frame_control;
__le16 dur_id;
u8 addr1[ETH_ALEN];
u8 addr2[ETH_ALEN];
u8 bssid[ETH_ALEN];
__le16 sequence;
u8 addr4[ETH_ALEN];
__le16 data_length;
/* Next 3 fields do not get filled in. */
u8 daddr[ETH_ALEN];
u8 saddr[ETH_ALEN];
__le16 len_type;
__le64 timestamp;
__le16 beacon_interval;
__le16 capabilities;
u8 data[316];
} __attribute__ ((packed));
#define HERMES_LINKSTATUS_NOT_CONNECTED (0x0000) #define HERMES_LINKSTATUS_NOT_CONNECTED (0x0000)
#define HERMES_LINKSTATUS_CONNECTED (0x0001) #define HERMES_LINKSTATUS_CONNECTED (0x0001)
#define HERMES_LINKSTATUS_DISCONNECTED (0x0002) #define HERMES_LINKSTATUS_DISCONNECTED (0x0002)
......
...@@ -85,6 +85,7 @@ ...@@ -85,6 +85,7 @@
#define HERMES_RID_CNFSCANSSID_AGERE 0xFCB2 #define HERMES_RID_CNFSCANSSID_AGERE 0xFCB2
#define HERMES_RID_CNFBASICRATES 0xFCB3 #define HERMES_RID_CNFBASICRATES 0xFCB3
#define HERMES_RID_CNFSUPPORTEDRATES 0xFCB4 #define HERMES_RID_CNFSUPPORTEDRATES 0xFCB4
#define HERMES_RID_CNFSCANCHANNELS2GHZ 0xFCC2
#define HERMES_RID_CNFTICKTIME 0xFCE0 #define HERMES_RID_CNFTICKTIME 0xFCE0
#define HERMES_RID_CNFSCANREQUEST 0xFCE1 #define HERMES_RID_CNFSCANREQUEST 0xFCE1
#define HERMES_RID_CNFJOINREQUEST 0xFCE2 #define HERMES_RID_CNFJOINREQUEST 0xFCE2
......
This diff is collapsed.
...@@ -42,6 +42,12 @@ struct bss_element { ...@@ -42,6 +42,12 @@ struct bss_element {
struct list_head list; struct list_head list;
}; };
struct xbss_element {
struct agere_ext_scan_info bss;
unsigned long last_scanned;
struct list_head list;
};
struct orinoco_private { struct orinoco_private {
void *card; /* Pointer to card dependent structure */ void *card; /* Pointer to card dependent structure */
struct device *dev; struct device *dev;
...@@ -86,6 +92,7 @@ struct orinoco_private { ...@@ -86,6 +92,7 @@ struct orinoco_private {
unsigned int has_sensitivity:1; unsigned int has_sensitivity:1;
unsigned int has_hostscan:1; unsigned int has_hostscan:1;
unsigned int has_alt_txcntl:1; unsigned int has_alt_txcntl:1;
unsigned int has_ext_scan:1;
unsigned int do_fw_download:1; unsigned int do_fw_download:1;
unsigned int broken_disableport:1; unsigned int broken_disableport:1;
unsigned int broken_monitor:1; unsigned int broken_monitor:1;
...@@ -117,7 +124,7 @@ struct orinoco_private { ...@@ -117,7 +124,7 @@ struct orinoco_private {
/* Scanning support */ /* Scanning support */
struct list_head bss_list; struct list_head bss_list;
struct list_head bss_free_list; struct list_head bss_free_list;
struct bss_element *bss_data; void *bss_xbss_data;
int scan_inprogress; /* Scan pending... */ int scan_inprogress; /* Scan pending... */
u32 scan_mode; /* Type of scan done */ u32 scan_mode; /* Type of scan done */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment