diff options
Diffstat (limited to 'include/net/mac80211.h')
| -rw-r--r-- | include/net/mac80211.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ac45c5b9d7e2..5be900d19660 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
| @@ -712,6 +712,28 @@ struct ieee80211_conf { | |||
| 712 | }; | 712 | }; |
| 713 | 713 | ||
| 714 | /** | 714 | /** |
| 715 | * struct ieee80211_channel_switch - holds the channel switch data | ||
| 716 | * | ||
| 717 | * The information provided in this structure is required for channel switch | ||
| 718 | * operation. | ||
| 719 | * | ||
| 720 | * @timestamp: value in microseconds of the 64-bit Time Synchronization | ||
| 721 | * Function (TSF) timer when the frame containing the channel switch | ||
| 722 | * announcement was received. This is simply the rx.mactime parameter | ||
| 723 | * the driver passed into mac80211. | ||
| 724 | * @block_tx: Indicates whether transmission must be blocked before the | ||
| 725 | * scheduled channel switch, as indicated by the AP. | ||
| 726 | * @channel: the new channel to switch to | ||
| 727 | * @count: the number of TBTT's until the channel switch event | ||
| 728 | */ | ||
| 729 | struct ieee80211_channel_switch { | ||
| 730 | u64 timestamp; | ||
| 731 | bool block_tx; | ||
| 732 | struct ieee80211_channel *channel; | ||
| 733 | u8 count; | ||
| 734 | }; | ||
| 735 | |||
| 736 | /** | ||
| 715 | * struct ieee80211_vif - per-interface data | 737 | * struct ieee80211_vif - per-interface data |
| 716 | * | 738 | * |
| 717 | * Data in this structure is continually present for driver | 739 | * Data in this structure is continually present for driver |
| @@ -1631,6 +1653,11 @@ enum ieee80211_ampdu_mlme_action { | |||
| 1631 | * @flush: Flush all pending frames from the hardware queue, making sure | 1653 | * @flush: Flush all pending frames from the hardware queue, making sure |
| 1632 | * that the hardware queues are empty. If the parameter @drop is set | 1654 | * that the hardware queues are empty. If the parameter @drop is set |
| 1633 | * to %true, pending frames may be dropped. The callback can sleep. | 1655 | * to %true, pending frames may be dropped. The callback can sleep. |
| 1656 | * | ||
| 1657 | * @channel_switch: Drivers that need (or want) to offload the channel | ||
| 1658 | * switch operation for CSAs received from the AP may implement this | ||
| 1659 | * callback. They must then call ieee80211_chswitch_done() to indicate | ||
| 1660 | * completion of the channel switch. | ||
| 1634 | */ | 1661 | */ |
| 1635 | struct ieee80211_ops { | 1662 | struct ieee80211_ops { |
| 1636 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); | 1663 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); |
| @@ -1694,6 +1721,8 @@ struct ieee80211_ops { | |||
| 1694 | int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len); | 1721 | int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len); |
| 1695 | #endif | 1722 | #endif |
| 1696 | void (*flush)(struct ieee80211_hw *hw, bool drop); | 1723 | void (*flush)(struct ieee80211_hw *hw, bool drop); |
| 1724 | void (*channel_switch)(struct ieee80211_hw *hw, | ||
| 1725 | struct ieee80211_channel_switch *ch_switch); | ||
| 1697 | }; | 1726 | }; |
| 1698 | 1727 | ||
| 1699 | /** | 1728 | /** |
| @@ -2444,6 +2473,16 @@ void ieee80211_cqm_rssi_notify(struct ieee80211_vif *vif, | |||
| 2444 | enum nl80211_cqm_rssi_threshold_event rssi_event, | 2473 | enum nl80211_cqm_rssi_threshold_event rssi_event, |
| 2445 | gfp_t gfp); | 2474 | gfp_t gfp); |
| 2446 | 2475 | ||
| 2476 | /** | ||
| 2477 | * ieee80211_chswitch_done - Complete channel switch process | ||
| 2478 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
| 2479 | * @success: make the channel switch successful or not | ||
| 2480 | * | ||
| 2481 | * Complete the channel switch post-process: set the new operational channel | ||
| 2482 | * and wake up the suspended queues. | ||
| 2483 | */ | ||
| 2484 | void ieee80211_chswitch_done(struct ieee80211_vif *vif, bool success); | ||
| 2485 | |||
| 2447 | /* Rate control API */ | 2486 | /* Rate control API */ |
| 2448 | 2487 | ||
| 2449 | /** | 2488 | /** |
