aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-01-29 09:02:27 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-01-31 08:28:43 -0500
commit1672c0e31917f49d31d30d79067103432bc20cc7 (patch)
treecc5b6b0017129b5748cfa2bace537d43c991d66c /net/mac80211/ieee80211_i.h
parent3ff9a827c683353b9826ef57366b0f313acc21b0 (diff)
mac80211: start auth/assoc timeout on frame status
When sending authentication/association frames they might take a bit of time to go out because we may have to synchronise with the AP, in particular in the case where it's really a P2P GO. In this case the 200ms fixed timeout could potentially be too short if the beacon interval is relatively large. For drivers that report TX status we can do better. Instead of starting the timeout directly, start it only when the frame status arrives. Since then the frame was out on the air, we can wait shorter (the typical response time is supposed to be 30ms, wait 100ms.) Also, if the frame failed to be transmitted try again right away instead of waiting. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index e4ee16839c6d..c9c66dec170a 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -415,6 +415,10 @@ struct ieee80211_if_managed {
415 bool beacon_crc_valid; 415 bool beacon_crc_valid;
416 u32 beacon_crc; 416 u32 beacon_crc;
417 417
418 bool status_acked;
419 bool status_received;
420 __le16 status_fc;
421
418 enum { 422 enum {
419 IEEE80211_MFP_DISABLED, 423 IEEE80211_MFP_DISABLED,
420 IEEE80211_MFP_OPTIONAL, 424 IEEE80211_MFP_OPTIONAL,
@@ -1284,6 +1288,8 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
1284void ieee80211_sta_reset_beacon_monitor(struct ieee80211_sub_if_data *sdata); 1288void ieee80211_sta_reset_beacon_monitor(struct ieee80211_sub_if_data *sdata);
1285void ieee80211_sta_reset_conn_monitor(struct ieee80211_sub_if_data *sdata); 1289void ieee80211_sta_reset_conn_monitor(struct ieee80211_sub_if_data *sdata);
1286void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata); 1290void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata);
1291void ieee80211_mgd_conn_tx_status(struct ieee80211_sub_if_data *sdata,
1292 __le16 fc, bool acked);
1287 1293
1288/* IBSS code */ 1294/* IBSS code */
1289void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); 1295void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local);
@@ -1544,7 +1550,8 @@ static inline void ieee80211_add_pending_skbs(struct ieee80211_local *local,
1544void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, 1550void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1545 u16 transaction, u16 auth_alg, u16 status, 1551 u16 transaction, u16 auth_alg, u16 status,
1546 u8 *extra, size_t extra_len, const u8 *bssid, 1552 u8 *extra, size_t extra_len, const u8 *bssid,
1547 const u8 *da, const u8 *key, u8 key_len, u8 key_idx); 1553 const u8 *da, const u8 *key, u8 key_len, u8 key_idx,
1554 u32 tx_flags);
1548void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, 1555void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
1549 const u8 *bssid, u16 stype, u16 reason, 1556 const u8 *bssid, u16 stype, u16 reason,
1550 bool send_frame, u8 *frame_buf); 1557 bool send_frame, u8 *frame_buf);
@@ -1561,7 +1568,7 @@ struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
1561void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, 1568void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
1562 const u8 *ssid, size_t ssid_len, 1569 const u8 *ssid, size_t ssid_len,
1563 const u8 *ie, size_t ie_len, 1570 const u8 *ie, size_t ie_len,
1564 u32 ratemask, bool directed, bool no_cck, 1571 u32 ratemask, bool directed, u32 tx_flags,
1565 struct ieee80211_channel *channel, bool scan); 1572 struct ieee80211_channel *channel, bool scan);
1566 1573
1567void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, 1574void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata,