These rates are treated the same as 160 MHz in the spec, so it makes no sense to distinguish them. As no driver uses them yet, this is also not a problem, just remove them. In the userspace API the field remains reserved to preserve API and ABI.
Unified · Split
| @@ -875,7 +875,6 @@ int cfg80211_check_station_change(struct wiphy *wiphy, · 874 unmodified lines | |||
| 875 | * @RATE_INFO_FLAGS_VHT_MCS: mcs field filled with VHT MCS | 875 | * @RATE_INFO_FLAGS_VHT_MCS: mcs field filled with VHT MCS |
| 876 | * @RATE_INFO_FLAGS_40_MHZ_WIDTH: 40 MHz width transmission | 876 | * @RATE_INFO_FLAGS_40_MHZ_WIDTH: 40 MHz width transmission |
| 877 | * @RATE_INFO_FLAGS_80_MHZ_WIDTH: 80 MHz width transmission | 877 | * @RATE_INFO_FLAGS_80_MHZ_WIDTH: 80 MHz width transmission |
| 878 | * @RATE_INFO_FLAGS_80P80_MHZ_WIDTH: 80+80 MHz width transmission | ||
| 879 | * @RATE_INFO_FLAGS_160_MHZ_WIDTH: 160 MHz width transmission | 878 | * @RATE_INFO_FLAGS_160_MHZ_WIDTH: 160 MHz width transmission |
| 880 | * @RATE_INFO_FLAGS_SHORT_GI: 400ns guard interval | 879 | * @RATE_INFO_FLAGS_SHORT_GI: 400ns guard interval |
| 881 | * @RATE_INFO_FLAGS_60G: 60GHz MCS | 880 | * @RATE_INFO_FLAGS_60G: 60GHz MCS |
| @@ -885,10 +884,9 @@ enum rate_info_flags { · 3 unmodified lines | |||
| 885 | RATE_INFO_FLAGS_VHT_MCS = BIT(1), | 884 | RATE_INFO_FLAGS_VHT_MCS = BIT(1), |
| 886 | RATE_INFO_FLAGS_40_MHZ_WIDTH = BIT(2), | 885 | RATE_INFO_FLAGS_40_MHZ_WIDTH = BIT(2), |
| 887 | RATE_INFO_FLAGS_80_MHZ_WIDTH = BIT(3), | 886 | RATE_INFO_FLAGS_80_MHZ_WIDTH = BIT(3), |
| 888 | RATE_INFO_FLAGS_80P80_MHZ_WIDTH = BIT(4), | 887 | RATE_INFO_FLAGS_160_MHZ_WIDTH = BIT(4), |
| 889 | RATE_INFO_FLAGS_160_MHZ_WIDTH = BIT(5), | 888 | RATE_INFO_FLAGS_SHORT_GI = BIT(5), |
| 890 | RATE_INFO_FLAGS_SHORT_GI = BIT(6), | 889 | RATE_INFO_FLAGS_60G = BIT(6), |
| 891 | RATE_INFO_FLAGS_60G = BIT(7), | ||
| 892 | }; | 890 | }; |
| 893 | 891 | ||
| 894 | /** | 892 | /** |
| @@ -2278,7 +2278,8 @@ struct nl80211_sta_flag_update { · 2277 unmodified lines | |||
| 2278 | * @NL80211_RATE_INFO_VHT_MCS: MCS index for VHT (u8) | 2278 | * @NL80211_RATE_INFO_VHT_MCS: MCS index for VHT (u8) |
| 2279 | * @NL80211_RATE_INFO_VHT_NSS: number of streams in VHT (u8) | 2279 | * @NL80211_RATE_INFO_VHT_NSS: number of streams in VHT (u8) |
| 2280 | * @NL80211_RATE_INFO_80_MHZ_WIDTH: 80 MHz VHT rate | 2280 | * @NL80211_RATE_INFO_80_MHZ_WIDTH: 80 MHz VHT rate |
| 2281 | * @NL80211_RATE_INFO_80P80_MHZ_WIDTH: 80+80 MHz VHT rate | 2281 | * @NL80211_RATE_INFO_80P80_MHZ_WIDTH: unused - 80+80 is treated the |
| 2282 | * same as 160 for purposes of the bitrates | ||
| 2282 | * @NL80211_RATE_INFO_160_MHZ_WIDTH: 160 MHz VHT rate | 2283 | * @NL80211_RATE_INFO_160_MHZ_WIDTH: 160 MHz VHT rate |
| 2283 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use | 2284 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use |
| 2284 | */ | 2285 | */ |
| @@ -3614,9 +3614,6 @@ static bool nl80211_put_sta_rate(struct sk_buff *msg, struct rate_info *info, · 3613 unmodified lines | |||
| 3614 | if (info->flags & RATE_INFO_FLAGS_80_MHZ_WIDTH && | 3614 | if (info->flags & RATE_INFO_FLAGS_80_MHZ_WIDTH && |
| 3615 | nla_put_flag(msg, NL80211_RATE_INFO_80_MHZ_WIDTH)) | 3615 | nla_put_flag(msg, NL80211_RATE_INFO_80_MHZ_WIDTH)) |
| 3616 | return false; | 3616 | return false; |
| 3617 | if (info->flags & RATE_INFO_FLAGS_80P80_MHZ_WIDTH && | ||
| 3618 | nla_put_flag(msg, NL80211_RATE_INFO_80P80_MHZ_WIDTH)) | ||
| 3619 | return false; | ||
| 3620 | if (info->flags & RATE_INFO_FLAGS_160_MHZ_WIDTH && | 3617 | if (info->flags & RATE_INFO_FLAGS_160_MHZ_WIDTH && |
| 3621 | nla_put_flag(msg, NL80211_RATE_INFO_160_MHZ_WIDTH)) | 3618 | nla_put_flag(msg, NL80211_RATE_INFO_160_MHZ_WIDTH)) |
| 3622 | return false; | 3619 | return false; |
| @@ -1073,8 +1073,7 @@ static u32 cfg80211_calculate_bitrate_vht(struct rate_info *rate) · 1072 unmodified lines | |||
| 1073 | if (WARN_ON_ONCE(rate->mcs > 9)) | 1073 | if (WARN_ON_ONCE(rate->mcs > 9)) |
| 1074 | return 0; | 1074 | return 0; |
| 1075 | 1075 | ||
| 1076 | idx = rate->flags & (RATE_INFO_FLAGS_160_MHZ_WIDTH | | 1076 | idx = rate->flags & RATE_INFO_FLAGS_160_MHZ_WIDTH ? 3 : |
| 1077 | RATE_INFO_FLAGS_80P80_MHZ_WIDTH) ? 3 : | ||
| 1078 | rate->flags & RATE_INFO_FLAGS_80_MHZ_WIDTH ? 2 : | 1077 | rate->flags & RATE_INFO_FLAGS_80_MHZ_WIDTH ? 2 : |
| 1079 | rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH ? 1 : 0; | 1078 | rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH ? 1 : 0; |
| 1080 | 1079 | ||