Commit 16573e7c authored by Jakub Kicinski's avatar Jakub Kicinski

Merge tag 'mac80211-next-for-net-next-2020-10-08' of...

Merge tag 'mac80211-next-for-net-next-2020-10-08' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next

Johannes Berg says:

====================
A handful of changes:
 * fixes for the recent S1G work
 * a docbook build time improvement
 * API to pass beacon rate to lower-level driver
====================
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents c77fb07f ba6ff70a
This diff is collapsed.
......@@ -15,25 +15,14 @@ appropriate trigger, which will then be triggered appropriately by
mac80211.
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_tx_led_name
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_rx_led_name
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_assoc_led_name
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_radio_led_name
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tpt_blink
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tpt_led_trigger_flags
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_create_tpt_led_trigger
:functions:
ieee80211_get_tx_led_name
ieee80211_get_rx_led_name
ieee80211_get_assoc_led_name
ieee80211_get_radio_led_name
ieee80211_tpt_blink
ieee80211_tpt_led_trigger_flags
ieee80211_create_tpt_led_trigger
Hardware crypto acceleration
============================
......@@ -42,22 +31,13 @@ Hardware crypto acceleration
:doc: Hardware crypto acceleration
.. kernel-doc:: include/net/mac80211.h
:functions: set_key_cmd
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_key_conf
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_key_flags
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_tkip_p1k
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_tkip_p1k_iv
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_tkip_p2k
:functions:
set_key_cmd
ieee80211_key_conf
ieee80211_key_flags
ieee80211_get_tkip_p1k
ieee80211_get_tkip_p1k_iv
ieee80211_get_tkip_p2k
Powersave support
=================
......@@ -99,28 +79,15 @@ support for powersaving clients
:doc: AP support for powersaving clients
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_get_buffered_bc
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_beacon_get
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta_eosp
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_frame_release_type
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta_ps_transition
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta_ps_transition_ni
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta_set_buffered
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta_block_awake
:functions:
ieee80211_get_buffered_bc
ieee80211_beacon_get
ieee80211_sta_eosp
ieee80211_frame_release_type
ieee80211_sta_ps_transition
ieee80211_sta_ps_transition_ni
ieee80211_sta_set_buffered
ieee80211_sta_block_awake
Supporting multiple virtual interfaces
======================================
......@@ -134,10 +101,9 @@ addresses here, note which configurations are supported by mac80211, add
notes about supporting hw crypto with it.
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_iterate_active_interfaces
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_iterate_active_interfaces_atomic
:functions:
ieee80211_iterate_active_interfaces
ieee80211_iterate_active_interfaces_atomic
Station handling
================
......@@ -145,16 +111,11 @@ Station handling
TODO
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_sta
.. kernel-doc:: include/net/mac80211.h
:functions: sta_notify_cmd
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_find_sta
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_find_sta_by_ifaddr
:functions:
ieee80211_sta
sta_notify_cmd
ieee80211_find_sta
ieee80211_find_sta_by_ifaddr
Hardware scan offload
=====================
......@@ -193,10 +154,9 @@ Spatial Multiplexing Powersave (SMPS)
:doc: Spatial multiplexing power save
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_request_smps
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_smps_mode
:functions:
ieee80211_request_smps
ieee80211_smps_mode
TBD
......@@ -209,22 +169,13 @@ Rate Control API
TBD
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_start_tx_ba_session
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_start_tx_ba_cb_irqsafe
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_stop_tx_ba_session
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_stop_tx_ba_cb_irqsafe
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rate_control_changed
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_rate_control
:functions:
ieee80211_start_tx_ba_session
ieee80211_start_tx_ba_cb_irqsafe
ieee80211_stop_tx_ba_session
ieee80211_stop_tx_ba_cb_irqsafe
ieee80211_rate_control_changed
ieee80211_tx_rate_control
TBD
......@@ -261,10 +212,9 @@ Programming information
-----------------------
.. kernel-doc:: net/mac80211/sta_info.h
:functions: sta_info
.. kernel-doc:: net/mac80211/sta_info.h
:functions: ieee80211_sta_info_flags
:functions:
sta_info
ieee80211_sta_info_flags
STA information lifetime rules
------------------------------
......@@ -276,13 +226,10 @@ Aggregation Functions
=====================
.. kernel-doc:: net/mac80211/sta_info.h
:functions: sta_ampdu_mlme
.. kernel-doc:: net/mac80211/sta_info.h
:functions: tid_ampdu_tx
.. kernel-doc:: net/mac80211/sta_info.h
:functions: tid_ampdu_rx
:functions:
sta_ampdu_mlme
tid_ampdu_tx
tid_ampdu_rx
Synchronisation Functions
=========================
......
......@@ -30,31 +30,16 @@ Finally, a discussion of hardware capabilities should be done with
references to other parts of the book.
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_hw
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_hw_flags
.. kernel-doc:: include/net/mac80211.h
:functions: SET_IEEE80211_DEV
.. kernel-doc:: include/net/mac80211.h
:functions: SET_IEEE80211_PERM_ADDR
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_ops
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_alloc_hw
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_register_hw
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_unregister_hw
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_free_hw
:functions:
ieee80211_hw
ieee80211_hw_flags
SET_IEEE80211_DEV
SET_IEEE80211_PERM_ADDR
ieee80211_ops
ieee80211_alloc_hw
ieee80211_register_hw
ieee80211_unregister_hw
ieee80211_free_hw
PHY configuration
=================
......@@ -65,10 +50,9 @@ This chapter should describe PHY handling including start/stop callbacks
and the various structures used.
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_conf
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_conf_flags
:functions:
ieee80211_conf
ieee80211_conf_flags
Virtual interfaces
==================
......@@ -123,79 +107,32 @@ functions/definitions
---------------------
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rx_status
.. kernel-doc:: include/net/mac80211.h
:functions: mac80211_rx_encoding_flags
.. kernel-doc:: include/net/mac80211.h
:functions: mac80211_rx_flags
.. kernel-doc:: include/net/mac80211.h
:functions: mac80211_tx_info_flags
.. kernel-doc:: include/net/mac80211.h
:functions: mac80211_tx_control_flags
.. kernel-doc:: include/net/mac80211.h
:functions: mac80211_rate_control_flags
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_rate
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_info
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_info_clear_status
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rx
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rx_ni
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rx_irqsafe
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_status
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_status_ni
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_tx_status_irqsafe
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rts_get
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_rts_duration
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_ctstoself_get
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_ctstoself_duration
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_generic_frame_duration
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_wake_queue
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_stop_queue
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_wake_queues
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_stop_queues
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_queue_stopped
:functions:
ieee80211_rx_status
mac80211_rx_encoding_flags
mac80211_rx_flags
mac80211_tx_info_flags
mac80211_tx_control_flags
mac80211_rate_control_flags
ieee80211_tx_rate
ieee80211_tx_info
ieee80211_tx_info_clear_status
ieee80211_rx
ieee80211_rx_ni
ieee80211_rx_irqsafe
ieee80211_tx_status
ieee80211_tx_status_ni
ieee80211_tx_status_irqsafe
ieee80211_rts_get
ieee80211_rts_duration
ieee80211_ctstoself_get
ieee80211_ctstoself_duration
ieee80211_generic_frame_duration
ieee80211_wake_queue
ieee80211_stop_queue
ieee80211_wake_queues
ieee80211_stop_queues
ieee80211_queue_stopped
Frame filtering
===============
......@@ -213,7 +150,6 @@ The mac80211 workqueue
:doc: mac80211 workqueue
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_queue_work
.. kernel-doc:: include/net/mac80211.h
:functions: ieee80211_queue_delayed_work
:functions:
ieee80211_queue_work
ieee80211_queue_delayed_work
......@@ -628,6 +628,8 @@ struct ieee80211_fils_discovery {
* @unsol_bcast_probe_resp_interval: Unsolicited broadcast probe response
* interval.
* @s1g: BSS is S1G BSS (affects Association Request format).
* @beacon_tx_rate: The configured beacon transmit rate that needs to be passed
* to driver when rate control is offloaded to firmware.
*/
struct ieee80211_bss_conf {
const u8 *bssid;
......@@ -698,6 +700,7 @@ struct ieee80211_bss_conf {
struct ieee80211_fils_discovery fils_discovery;
u32 unsol_bcast_probe_resp_interval;
bool s1g;
struct cfg80211_bitrate_mask beacon_tx_rate;
};
/**
......
......@@ -13,6 +13,7 @@ mac80211-y := \
ht.o agg-tx.o agg-rx.o \
vht.o \
he.o \
s1g.o \
ibss.o \
iface.o \
rate.o \
......
......@@ -709,7 +709,8 @@ void sta_set_rate_info_tx(struct sta_info *sta,
u16 brate;
sband = ieee80211_get_sband(sta->sdata);
if (sband) {
WARN_ON_ONCE(sband && !sband->bitrates);
if (sband && sband->bitrates) {
brate = sband->bitrates[rate->idx].bitrate;
rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
}
......@@ -1153,6 +1154,9 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
}
}
if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL))
sdata->vif.bss_conf.beacon_tx_rate = params->beacon_rate;
err = ieee80211_assign_beacon(sdata, &params->beacon, NULL);
if (err < 0)
goto error;
......
......@@ -1928,6 +1928,9 @@ void
ieee80211_he_op_ie_to_bss_conf(struct ieee80211_vif *vif,
const struct ieee80211_he_operation *he_op_ie_elem);
/* S1G */
void ieee80211_s1g_sta_rate_init(struct sta_info *sta);
/* Spectrum management */
void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,
struct ieee80211_mgmt *mgmt,
......
......@@ -5190,8 +5190,10 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
int shift = ieee80211_vif_get_shift(&sdata->vif);
/* TODO: S1G Basic Rate Set is expressed elsewhere */
if (cbss->channel->band == NL80211_BAND_S1GHZ)
if (cbss->channel->band == NL80211_BAND_S1GHZ) {
ieee80211_s1g_sta_rate_init(new_sta);
goto skip_rates;
}
ieee80211_get_rates(sband, bss->supp_rates,
bss->supp_rates_len,
......
......@@ -53,6 +53,7 @@ void rate_control_rate_init(struct sta_info *sta)
/* TODO: check for minstrel_s1g ? */
if (sband->band == NL80211_BAND_S1GHZ) {
ieee80211_s1g_sta_rate_init(sta);
rcu_read_unlock();
return;
}
......
// SPDX-License-Identifier: GPL-2.0
/*
* S1G handling
* Copyright(c) 2020 Adapt-IP
*/
#include <linux/ieee80211.h>
#include <net/mac80211.h>
#include "ieee80211_i.h"
void ieee80211_s1g_sta_rate_init(struct sta_info *sta)
{
/* avoid indicating legacy bitrates for S1G STAs */
sta->tx_stats.last_rate.flags |= IEEE80211_TX_RC_S1G_MCS;
sta->rx_stats.last_rate =
STA_STATS_FIELD(TYPE, STA_STATS_RATE_TYPE_S1G);
}
......@@ -2122,6 +2122,10 @@ static void sta_stats_decode_rate(struct ieee80211_local *local, u32 rate,
int rate_idx = STA_STATS_GET(LEGACY_IDX, rate);
sband = local->hw.wiphy->bands[band];
if (WARN_ON_ONCE(!sband->bitrates))
break;
brate = sband->bitrates[rate_idx].bitrate;
if (rinfo->bw == RATE_INFO_BW_5)
shift = 2;
......
......@@ -823,6 +823,7 @@ enum sta_stats_type {
STA_STATS_RATE_TYPE_HT,
STA_STATS_RATE_TYPE_VHT,
STA_STATS_RATE_TYPE_HE,
STA_STATS_RATE_TYPE_S1G,
};
#define STA_STATS_FIELD_HT_MCS GENMASK( 7, 0)
......
......@@ -207,7 +207,6 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef)
control_freq = chandef->chan->center_freq;
switch (chandef->width) {
case NL80211_CHAN_WIDTH_1:
case NL80211_CHAN_WIDTH_5:
case NL80211_CHAN_WIDTH_10:
case NL80211_CHAN_WIDTH_20:
......@@ -218,10 +217,14 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef)
if (chandef->center_freq2)
return false;
break;
case NL80211_CHAN_WIDTH_1:
case NL80211_CHAN_WIDTH_2:
case NL80211_CHAN_WIDTH_4:
case NL80211_CHAN_WIDTH_8:
case NL80211_CHAN_WIDTH_16:
if (chandef->chan->band != NL80211_BAND_S1GHZ)
return false;
control_freq = ieee80211_channel_to_khz(chandef->chan);
oper_freq = ieee80211_chandef_to_khz(chandef);
control_width = nl80211_chan_width_to_mhz(
......
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