Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
This commit is contained in:
commit
7eb2450a51
27 changed files with 402 additions and 258 deletions
|
|
@ -151,6 +151,7 @@ enum ieee80211_channel_flags {
|
|||
* @dfs_state: current state of this channel. Only relevant if radar is required
|
||||
* on this channel.
|
||||
* @dfs_state_entered: timestamp (jiffies) when the dfs state was entered.
|
||||
* @dfs_cac_ms: DFS CAC time in milliseconds, this is valid for DFS channels.
|
||||
*/
|
||||
struct ieee80211_channel {
|
||||
enum ieee80211_band band;
|
||||
|
|
@ -165,6 +166,7 @@ struct ieee80211_channel {
|
|||
int orig_mag, orig_mpwr;
|
||||
enum nl80211_dfs_state dfs_state;
|
||||
unsigned long dfs_state_entered;
|
||||
unsigned int dfs_cac_ms;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -2503,7 +2505,8 @@ struct cfg80211_ops {
|
|||
|
||||
int (*start_radar_detection)(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_chan_def *chandef);
|
||||
struct cfg80211_chan_def *chandef,
|
||||
u32 cac_time_ms);
|
||||
int (*update_ft_ies)(struct wiphy *wiphy, struct net_device *dev,
|
||||
struct cfg80211_update_ft_ies_params *ftie);
|
||||
int (*crit_proto_start)(struct wiphy *wiphy,
|
||||
|
|
@ -3180,6 +3183,7 @@ struct cfg80211_cached_keys;
|
|||
* @p2p_started: true if this is a P2P Device that has been started
|
||||
* @cac_started: true if DFS channel availability check has been started
|
||||
* @cac_start_time: timestamp (jiffies) when the dfs state was entered.
|
||||
* @cac_time_ms: CAC time in ms
|
||||
* @ps: powersave mode is enabled
|
||||
* @ps_timeout: dynamic powersave timeout
|
||||
* @ap_unexpected_nlportid: (private) netlink port ID of application
|
||||
|
|
@ -3235,6 +3239,7 @@ struct wireless_dev {
|
|||
|
||||
bool cac_started;
|
||||
unsigned long cac_start_time;
|
||||
unsigned int cac_time_ms;
|
||||
|
||||
#ifdef CONFIG_CFG80211_WEXT
|
||||
/* wext data */
|
||||
|
|
@ -3667,7 +3672,7 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|||
* cfg80211_inform_bss_width_frame - inform cfg80211 of a received BSS frame
|
||||
*
|
||||
* @wiphy: the wiphy reporting the BSS
|
||||
* @channel: The channel the frame was received on
|
||||
* @rx_channel: The channel the frame was received on
|
||||
* @scan_width: width of the control channel
|
||||
* @mgmt: the management frame (probe response or beacon)
|
||||
* @len: length of the management frame
|
||||
|
|
@ -3682,18 +3687,18 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|||
*/
|
||||
struct cfg80211_bss * __must_check
|
||||
cfg80211_inform_bss_width_frame(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_channel *rx_channel,
|
||||
enum nl80211_bss_scan_width scan_width,
|
||||
struct ieee80211_mgmt *mgmt, size_t len,
|
||||
s32 signal, gfp_t gfp);
|
||||
|
||||
static inline struct cfg80211_bss * __must_check
|
||||
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_channel *rx_channel,
|
||||
struct ieee80211_mgmt *mgmt, size_t len,
|
||||
s32 signal, gfp_t gfp)
|
||||
{
|
||||
return cfg80211_inform_bss_width_frame(wiphy, channel,
|
||||
return cfg80211_inform_bss_width_frame(wiphy, rx_channel,
|
||||
NL80211_BSS_CHAN_WIDTH_20,
|
||||
mgmt, len, signal, gfp);
|
||||
}
|
||||
|
|
@ -3702,7 +3707,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|||
* cfg80211_inform_bss - inform cfg80211 of a new BSS
|
||||
*
|
||||
* @wiphy: the wiphy reporting the BSS
|
||||
* @channel: The channel the frame was received on
|
||||
* @rx_channel: The channel the frame was received on
|
||||
* @scan_width: width of the control channel
|
||||
* @bssid: the BSSID of the BSS
|
||||
* @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
|
||||
|
|
@ -3721,7 +3726,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|||
*/
|
||||
struct cfg80211_bss * __must_check
|
||||
cfg80211_inform_bss_width(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_channel *rx_channel,
|
||||
enum nl80211_bss_scan_width scan_width,
|
||||
const u8 *bssid, u64 tsf, u16 capability,
|
||||
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||
|
|
@ -3729,12 +3734,12 @@ cfg80211_inform_bss_width(struct wiphy *wiphy,
|
|||
|
||||
static inline struct cfg80211_bss * __must_check
|
||||
cfg80211_inform_bss(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_channel *rx_channel,
|
||||
const u8 *bssid, u64 tsf, u16 capability,
|
||||
u16 beacon_interval, const u8 *ie, size_t ielen,
|
||||
s32 signal, gfp_t gfp)
|
||||
{
|
||||
return cfg80211_inform_bss_width(wiphy, channel,
|
||||
return cfg80211_inform_bss_width(wiphy, rx_channel,
|
||||
NL80211_BSS_CHAN_WIDTH_20,
|
||||
bssid, tsf, capability,
|
||||
beacon_interval, ie, ielen, signal,
|
||||
|
|
|
|||
|
|
@ -697,11 +697,11 @@ struct ieee80211_tx_info {
|
|||
} control;
|
||||
struct {
|
||||
struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
|
||||
int ack_signal;
|
||||
s32 ack_signal;
|
||||
u8 ampdu_ack_len;
|
||||
u8 ampdu_len;
|
||||
u8 antenna;
|
||||
/* 21 bytes free */
|
||||
void *status_driver_data[21 / sizeof(void *)];
|
||||
} status;
|
||||
struct {
|
||||
struct ieee80211_tx_rate driver_rates[
|
||||
|
|
@ -877,11 +877,13 @@ enum mac80211_rx_flags {
|
|||
* @RX_VHT_FLAG_80MHZ: 80 MHz was used
|
||||
* @RX_VHT_FLAG_80P80MHZ: 80+80 MHz was used
|
||||
* @RX_VHT_FLAG_160MHZ: 160 MHz was used
|
||||
* @RX_VHT_FLAG_BF: packet was beamformed
|
||||
*/
|
||||
enum mac80211_rx_vht_flags {
|
||||
RX_VHT_FLAG_80MHZ = BIT(0),
|
||||
RX_VHT_FLAG_80P80MHZ = BIT(1),
|
||||
RX_VHT_FLAG_160MHZ = BIT(2),
|
||||
RX_VHT_FLAG_BF = BIT(3),
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ struct ieee80211_reg_rule {
|
|||
struct ieee80211_freq_range freq_range;
|
||||
struct ieee80211_power_rule power_rule;
|
||||
u32 flags;
|
||||
u32 dfs_cac_ms;
|
||||
};
|
||||
|
||||
struct ieee80211_regdomain {
|
||||
|
|
@ -172,14 +173,18 @@ struct ieee80211_regdomain {
|
|||
#define DBM_TO_MBM(gain) ((gain) * 100)
|
||||
#define MBM_TO_DBM(gain) ((gain) / 100)
|
||||
|
||||
#define REG_RULE(start, end, bw, gain, eirp, reg_flags) \
|
||||
{ \
|
||||
.freq_range.start_freq_khz = MHZ_TO_KHZ(start), \
|
||||
.freq_range.end_freq_khz = MHZ_TO_KHZ(end), \
|
||||
.freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \
|
||||
.power_rule.max_antenna_gain = DBI_TO_MBI(gain),\
|
||||
.power_rule.max_eirp = DBM_TO_MBM(eirp), \
|
||||
.flags = reg_flags, \
|
||||
#define REG_RULE_EXT(start, end, bw, gain, eirp, dfs_cac, reg_flags) \
|
||||
{ \
|
||||
.freq_range.start_freq_khz = MHZ_TO_KHZ(start), \
|
||||
.freq_range.end_freq_khz = MHZ_TO_KHZ(end), \
|
||||
.freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \
|
||||
.power_rule.max_antenna_gain = DBI_TO_MBI(gain), \
|
||||
.power_rule.max_eirp = DBM_TO_MBM(eirp), \
|
||||
.flags = reg_flags, \
|
||||
.dfs_cac_ms = dfs_cac, \
|
||||
}
|
||||
|
||||
#define REG_RULE(start, end, bw, gain, eirp, reg_flags) \
|
||||
REG_RULE_EXT(start, end, bw, gain, eirp, 0, reg_flags)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue