Commit ea177305 authored by Dan Williams's avatar Dan Williams Committed by John W. Linville

ipw2200: queue direct scans

When another scan is in progress, a direct scan gets dropped on the
floor.  However, that direct scan is usually the scan that's really
needed by userspace, and gets stomped on by all the broadcast scans the
ipw2200 driver issues internally.  Make sure the direct scan happens
eventually, and as a bonus ensure that the passive scan worker is
cleaned up when appropriate.

The change of request_passive_scan form a struct work to struct
delayed_work is only to make the set_wx_scan() code a bit simpler, it's
still only used with a delay of 0 to match previous behavior.
Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 24b95685
This diff is collapsed.
...@@ -1037,6 +1037,7 @@ struct ipw_cmd { /* XXX */ ...@@ -1037,6 +1037,7 @@ struct ipw_cmd { /* XXX */
#define STATUS_DISASSOC_PENDING (1<<12) #define STATUS_DISASSOC_PENDING (1<<12)
#define STATUS_STATE_PENDING (1<<13) #define STATUS_STATE_PENDING (1<<13)
#define STATUS_DIRECT_SCAN_PENDING (1<<19)
#define STATUS_SCAN_PENDING (1<<20) #define STATUS_SCAN_PENDING (1<<20)
#define STATUS_SCANNING (1<<21) #define STATUS_SCANNING (1<<21)
#define STATUS_SCAN_ABORTING (1<<22) #define STATUS_SCAN_ABORTING (1<<22)
...@@ -1292,6 +1293,8 @@ struct ipw_priv { ...@@ -1292,6 +1293,8 @@ struct ipw_priv {
struct iw_public_data wireless_data; struct iw_public_data wireless_data;
int user_requested_scan; int user_requested_scan;
u8 direct_scan_ssid[IW_ESSID_MAX_SIZE];
u8 direct_scan_ssid_len;
struct workqueue_struct *workqueue; struct workqueue_struct *workqueue;
...@@ -1301,8 +1304,9 @@ struct ipw_priv { ...@@ -1301,8 +1304,9 @@ struct ipw_priv {
struct work_struct system_config; struct work_struct system_config;
struct work_struct rx_replenish; struct work_struct rx_replenish;
struct delayed_work request_scan; struct delayed_work request_scan;
struct delayed_work request_direct_scan;
struct delayed_work request_passive_scan;
struct delayed_work scan_event; struct delayed_work scan_event;
struct work_struct request_passive_scan;
struct work_struct adapter_restart; struct work_struct adapter_restart;
struct delayed_work rf_kill; struct delayed_work rf_kill;
struct work_struct up; struct work_struct up;
......
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