diff mbox series

[08/12] cfg80211: S1G rate flags

Message ID 20220711010816.45927-9-kieran.frewen@morsemicro.com (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show
Series Additional support for 802.11ah (S1G) | expand

Commit Message

Kieran Frewen July 11, 2022, 1:08 a.m. UTC
Increase the size of S1G rate_info flags to support S1G. Add flags for new
S1G bandwidths and S1G MCS.

Signed-off-by: Kieran Frewen <kieran.frewen@morsemicro.com>
Signed-off-by: Bassem Dawood <bassem@morsemicro.com>
---
 include/net/cfg80211.h | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

Jeff Johnson July 12, 2022, 10:36 p.m. UTC | #1
On 7/10/2022 6:08 PM, Kieran Frewen wrote:
> Increase the size of S1G rate_info flags to support S1G. Add flags for new
> S1G bandwidths and S1G MCS.
> 
> Signed-off-by: Kieran Frewen <kieran.frewen@morsemicro.com>
> Signed-off-by: Bassem Dawood <bassem@morsemicro.com>
> ---
>   include/net/cfg80211.h | 14 +++++++++++++-
>   1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
> index 7859b8b11968..47f71fb5d07a 100644
> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -1608,6 +1608,7 @@ int cfg80211_check_station_change(struct wiphy *wiphy,
>    * @RATE_INFO_FLAGS_EDMG: 60GHz MCS in EDMG mode
>    * @RATE_INFO_FLAGS_EXTENDED_SC_DMG: 60GHz extended SC MCS
>    * @RATE_INFO_FLAGS_EHT_MCS: EHT MCS information
> + * @RATE_INFO_FLAGS_S1G_MCS: mcs field filled with S1G MCS

nit: s/mcs/MCS/

>    */
>   enum rate_info_flags {
>   	RATE_INFO_FLAGS_MCS			= BIT(0),
> @@ -1618,6 +1619,7 @@ enum rate_info_flags {
>   	RATE_INFO_FLAGS_EDMG			= BIT(5),
>   	RATE_INFO_FLAGS_EXTENDED_SC_DMG		= BIT(6),
>   	RATE_INFO_FLAGS_EHT_MCS			= BIT(7),
> +	RATE_INFO_FLAGS_S1G_MCS                 = BIT(8),
>   };
>   
>   /**
> @@ -1634,6 +1636,11 @@ enum rate_info_flags {
>    * @RATE_INFO_BW_HE_RU: bandwidth determined by HE RU allocation
>    * @RATE_INFO_BW_320: 320 MHz bandwidth
>    * @RATE_INFO_BW_EHT_RU: bandwidth determined by EHT RU allocation
> + * @RATE_INFO_BW_1: 1 MHz bandwidth
> + * @RATE_INFO_BW_2: 2 MHz bandwidth
> + * @RATE_INFO_BW_4: 4 MHz bandwidth
> + * @RATE_INFO_BW_8: 8 MHz bandwidth
> + * @RATE_INFO_BW_16: 16 MHz bandwidth
>    */
>   enum rate_info_bw {
>   	RATE_INFO_BW_20 = 0,
> @@ -1645,6 +1652,11 @@ enum rate_info_bw {
>   	RATE_INFO_BW_HE_RU,
>   	RATE_INFO_BW_320,
>   	RATE_INFO_BW_EHT_RU,
> +	RATE_INFO_BW_1,
> +	RATE_INFO_BW_2,
> +	RATE_INFO_BW_4,
> +	RATE_INFO_BW_8,
> +	RATE_INFO_BW_16,
>   };
>   
>   /**
> @@ -1667,7 +1679,7 @@ enum rate_info_bw {
>    *	only valid if bw is %RATE_INFO_BW_EHT_RU)
>    */
>   struct rate_info {
> -	u8 flags;
> +	u16 flags;
>   	u8 mcs;
>   	u16 legacy;
>   	u8 nss;

should we group legacy with flags so that the two u16s are adjacent?
note unfortunately we can't avoid padding
diff mbox series

Patch

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 7859b8b11968..47f71fb5d07a 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1608,6 +1608,7 @@  int cfg80211_check_station_change(struct wiphy *wiphy,
  * @RATE_INFO_FLAGS_EDMG: 60GHz MCS in EDMG mode
  * @RATE_INFO_FLAGS_EXTENDED_SC_DMG: 60GHz extended SC MCS
  * @RATE_INFO_FLAGS_EHT_MCS: EHT MCS information
+ * @RATE_INFO_FLAGS_S1G_MCS: mcs field filled with S1G MCS
  */
 enum rate_info_flags {
 	RATE_INFO_FLAGS_MCS			= BIT(0),
@@ -1618,6 +1619,7 @@  enum rate_info_flags {
 	RATE_INFO_FLAGS_EDMG			= BIT(5),
 	RATE_INFO_FLAGS_EXTENDED_SC_DMG		= BIT(6),
 	RATE_INFO_FLAGS_EHT_MCS			= BIT(7),
+	RATE_INFO_FLAGS_S1G_MCS                 = BIT(8),
 };
 
 /**
@@ -1634,6 +1636,11 @@  enum rate_info_flags {
  * @RATE_INFO_BW_HE_RU: bandwidth determined by HE RU allocation
  * @RATE_INFO_BW_320: 320 MHz bandwidth
  * @RATE_INFO_BW_EHT_RU: bandwidth determined by EHT RU allocation
+ * @RATE_INFO_BW_1: 1 MHz bandwidth
+ * @RATE_INFO_BW_2: 2 MHz bandwidth
+ * @RATE_INFO_BW_4: 4 MHz bandwidth
+ * @RATE_INFO_BW_8: 8 MHz bandwidth
+ * @RATE_INFO_BW_16: 16 MHz bandwidth
  */
 enum rate_info_bw {
 	RATE_INFO_BW_20 = 0,
@@ -1645,6 +1652,11 @@  enum rate_info_bw {
 	RATE_INFO_BW_HE_RU,
 	RATE_INFO_BW_320,
 	RATE_INFO_BW_EHT_RU,
+	RATE_INFO_BW_1,
+	RATE_INFO_BW_2,
+	RATE_INFO_BW_4,
+	RATE_INFO_BW_8,
+	RATE_INFO_BW_16,
 };
 
 /**
@@ -1667,7 +1679,7 @@  enum rate_info_bw {
  *	only valid if bw is %RATE_INFO_BW_EHT_RU)
  */
 struct rate_info {
-	u8 flags;
+	u16 flags;
 	u8 mcs;
 	u16 legacy;
 	u8 nss;