cfg80211: change bandwidth reporting to explicit field
For some reason, we made the bandwidth separate flags, which
is rather confusing - a single rate cannot have different
bandwidths at the same time.
Change this to no longer be flags but use a separate field
for the bandwidth ('bw') instead.
While at it, add support for 5 and 10 MHz rates - these are
reported as regular legacy rates with their real bitrate,
but tagged as 5/10 now to make it easier to distinguish them.
In the nl80211 API, the flags are preserved, but the code
now can also clearly only set a single one of the flags.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
97d910d0aa
commit
b51f3beecf
8 changed files with 125 additions and 50 deletions
|
|
@ -873,20 +873,35 @@ int cfg80211_check_station_change(struct wiphy *wiphy,
|
|||
*
|
||||
* @RATE_INFO_FLAGS_MCS: mcs field filled with HT MCS
|
||||
* @RATE_INFO_FLAGS_VHT_MCS: mcs field filled with VHT MCS
|
||||
* @RATE_INFO_FLAGS_40_MHZ_WIDTH: 40 MHz width transmission
|
||||
* @RATE_INFO_FLAGS_80_MHZ_WIDTH: 80 MHz width transmission
|
||||
* @RATE_INFO_FLAGS_160_MHZ_WIDTH: 160 MHz width transmission
|
||||
* @RATE_INFO_FLAGS_SHORT_GI: 400ns guard interval
|
||||
* @RATE_INFO_FLAGS_60G: 60GHz MCS
|
||||
*/
|
||||
enum rate_info_flags {
|
||||
RATE_INFO_FLAGS_MCS = BIT(0),
|
||||
RATE_INFO_FLAGS_VHT_MCS = BIT(1),
|
||||
RATE_INFO_FLAGS_40_MHZ_WIDTH = BIT(2),
|
||||
RATE_INFO_FLAGS_80_MHZ_WIDTH = BIT(3),
|
||||
RATE_INFO_FLAGS_160_MHZ_WIDTH = BIT(4),
|
||||
RATE_INFO_FLAGS_SHORT_GI = BIT(5),
|
||||
RATE_INFO_FLAGS_60G = BIT(6),
|
||||
RATE_INFO_FLAGS_SHORT_GI = BIT(2),
|
||||
RATE_INFO_FLAGS_60G = BIT(3),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum rate_info_bw - rate bandwidth information
|
||||
*
|
||||
* Used by the driver to indicate the rate bandwidth.
|
||||
*
|
||||
* @RATE_INFO_BW_5: 5 MHz bandwidth
|
||||
* @RATE_INFO_BW_10: 10 MHz bandwidth
|
||||
* @RATE_INFO_BW_20: 20 MHz bandwidth
|
||||
* @RATE_INFO_BW_40: 40 MHz bandwidth
|
||||
* @RATE_INFO_BW_80: 80 MHz bandwidth
|
||||
* @RATE_INFO_BW_160: 160 MHz bandwidth
|
||||
*/
|
||||
enum rate_info_bw {
|
||||
RATE_INFO_BW_5,
|
||||
RATE_INFO_BW_10,
|
||||
RATE_INFO_BW_20,
|
||||
RATE_INFO_BW_40,
|
||||
RATE_INFO_BW_80,
|
||||
RATE_INFO_BW_160,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -898,12 +913,14 @@ enum rate_info_flags {
|
|||
* @mcs: mcs index if struct describes a 802.11n bitrate
|
||||
* @legacy: bitrate in 100kbit/s for 802.11abg
|
||||
* @nss: number of streams (VHT only)
|
||||
* @bw: bandwidth (from &enum rate_info_bw)
|
||||
*/
|
||||
struct rate_info {
|
||||
u8 flags;
|
||||
u8 mcs;
|
||||
u16 legacy;
|
||||
u8 nss;
|
||||
u8 bw;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue