aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h50
1 files changed, 48 insertions, 2 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 9fdf982d1286..eaa4affd40cd 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -97,6 +97,20 @@ enum ieee80211_max_queues {
97}; 97};
98 98
99/** 99/**
100 * enum ieee80211_ac_numbers - AC numbers as used in mac80211
101 * @IEEE80211_AC_VO: voice
102 * @IEEE80211_AC_VI: video
103 * @IEEE80211_AC_BE: best effort
104 * @IEEE80211_AC_BK: background
105 */
106enum ieee80211_ac_numbers {
107 IEEE80211_AC_VO = 0,
108 IEEE80211_AC_VI = 1,
109 IEEE80211_AC_BE = 2,
110 IEEE80211_AC_BK = 3,
111};
112
113/**
100 * struct ieee80211_tx_queue_params - transmit queue configuration 114 * struct ieee80211_tx_queue_params - transmit queue configuration
101 * 115 *
102 * The information provided in this structure is required for QoS 116 * The information provided in this structure is required for QoS
@@ -205,6 +219,7 @@ enum ieee80211_bss_change {
205 * @basic_rates: bitmap of basic rates, each bit stands for an 219 * @basic_rates: bitmap of basic rates, each bit stands for an
206 * index into the rate table configured by the driver in 220 * index into the rate table configured by the driver in
207 * the current band. 221 * the current band.
222 * @mcast_rate: per-band multicast rate index + 1 (0: disabled)
208 * @bssid: The BSSID for this BSS 223 * @bssid: The BSSID for this BSS
209 * @enable_beacon: whether beaconing should be enabled or not 224 * @enable_beacon: whether beaconing should be enabled or not
210 * @channel_type: Channel type for this BSS -- the hardware might be 225 * @channel_type: Channel type for this BSS -- the hardware might be
@@ -244,6 +259,7 @@ struct ieee80211_bss_conf {
244 u16 assoc_capability; 259 u16 assoc_capability;
245 u64 timestamp; 260 u64 timestamp;
246 u32 basic_rates; 261 u32 basic_rates;
262 int mcast_rate[IEEE80211_NUM_BANDS];
247 u16 ht_operation_mode; 263 u16 ht_operation_mode;
248 s32 cqm_rssi_thold; 264 s32 cqm_rssi_thold;
249 u32 cqm_rssi_hyst; 265 u32 cqm_rssi_hyst;
@@ -1652,6 +1668,11 @@ enum ieee80211_ampdu_mlme_action {
1652 * and IV16) for the given key from hardware. 1668 * and IV16) for the given key from hardware.
1653 * The callback must be atomic. 1669 * The callback must be atomic.
1654 * 1670 *
1671 * @set_frag_threshold: Configuration of fragmentation threshold. Assign this
1672 * if the device does fragmentation by itself; if this callback is
1673 * implemented then the stack will not do fragmentation.
1674 * The callback can sleep.
1675 *
1655 * @set_rts_threshold: Configuration of RTS threshold (if device needs it) 1676 * @set_rts_threshold: Configuration of RTS threshold (if device needs it)
1656 * The callback can sleep. 1677 * The callback can sleep.
1657 * 1678 *
@@ -1724,6 +1745,13 @@ enum ieee80211_ampdu_mlme_action {
1724 * completion of the channel switch. 1745 * completion of the channel switch.
1725 * 1746 *
1726 * @napi_poll: Poll Rx queue for incoming data frames. 1747 * @napi_poll: Poll Rx queue for incoming data frames.
1748 *
1749 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device.
1750 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
1751 * reject TX/RX mask combinations they cannot support by returning -EINVAL
1752 * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
1753 *
1754 * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
1727 */ 1755 */
1728struct ieee80211_ops { 1756struct ieee80211_ops {
1729 int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); 1757 int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
@@ -1765,6 +1793,7 @@ struct ieee80211_ops {
1765 struct ieee80211_low_level_stats *stats); 1793 struct ieee80211_low_level_stats *stats);
1766 void (*get_tkip_seq)(struct ieee80211_hw *hw, u8 hw_key_idx, 1794 void (*get_tkip_seq)(struct ieee80211_hw *hw, u8 hw_key_idx,
1767 u32 *iv32, u16 *iv16); 1795 u32 *iv32, u16 *iv16);
1796 int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
1768 int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value); 1797 int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value);
1769 int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1798 int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1770 struct ieee80211_sta *sta); 1799 struct ieee80211_sta *sta);
@@ -1793,6 +1822,8 @@ struct ieee80211_ops {
1793 void (*channel_switch)(struct ieee80211_hw *hw, 1822 void (*channel_switch)(struct ieee80211_hw *hw,
1794 struct ieee80211_channel_switch *ch_switch); 1823 struct ieee80211_channel_switch *ch_switch);
1795 int (*napi_poll)(struct ieee80211_hw *hw, int budget); 1824 int (*napi_poll)(struct ieee80211_hw *hw, int budget);
1825 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
1826 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
1796}; 1827};
1797 1828
1798/** 1829/**
@@ -2501,6 +2532,21 @@ void ieee80211_sta_block_awake(struct ieee80211_hw *hw,
2501 struct ieee80211_sta *pubsta, bool block); 2532 struct ieee80211_sta *pubsta, bool block);
2502 2533
2503/** 2534/**
2535 * ieee80211_ap_probereq_get - retrieve a Probe Request template
2536 * @hw: pointer obtained from ieee80211_alloc_hw().
2537 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
2538 *
2539 * Creates a Probe Request template which can, for example, be uploaded to
2540 * hardware. The template is filled with bssid, ssid and supported rate
2541 * information. This function must only be called from within the
2542 * .bss_info_changed callback function and only in managed mode. The function
2543 * is only useful when the interface is associated, otherwise it will return
2544 * NULL.
2545 */
2546struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,
2547 struct ieee80211_vif *vif);
2548
2549/**
2504 * ieee80211_beacon_loss - inform hardware does not receive beacons 2550 * ieee80211_beacon_loss - inform hardware does not receive beacons
2505 * 2551 *
2506 * @vif: &struct ieee80211_vif pointer from the add_interface callback. 2552 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
@@ -2640,7 +2686,7 @@ enum rate_control_changed {
2640 * @rate_idx_mask: user-requested rate mask (not MCS for now) 2686 * @rate_idx_mask: user-requested rate mask (not MCS for now)
2641 * @skb: the skb that will be transmitted, the control information in it needs 2687 * @skb: the skb that will be transmitted, the control information in it needs
2642 * to be filled in 2688 * to be filled in
2643 * @ap: whether this frame is sent out in AP mode 2689 * @bss: whether this frame is sent out in AP or IBSS mode
2644 */ 2690 */
2645struct ieee80211_tx_rate_control { 2691struct ieee80211_tx_rate_control {
2646 struct ieee80211_hw *hw; 2692 struct ieee80211_hw *hw;
@@ -2651,7 +2697,7 @@ struct ieee80211_tx_rate_control {
2651 bool rts, short_preamble; 2697 bool rts, short_preamble;
2652 u8 max_rate_idx; 2698 u8 max_rate_idx;
2653 u32 rate_idx_mask; 2699 u32 rate_idx_mask;
2654 bool ap; 2700 bool bss;
2655}; 2701};
2656 2702
2657struct rate_control_ops { 2703struct rate_control_ops {