diff mbox series

[2/2] wifi: mac80211: add LDPC related flags in ieee80211_bss_conf

Message ID 4e5cff1c538cbd9ecca171e0e4d6fddd87c3dfa0.1675893838.git.ryder.lee@mediatek.com (mailing list archive)
State New, archived
Headers show
Series [1/2] wifi: mac80211: add EHT MU-MIMO related flags in ieee80211_bss_conf | expand

Commit Message

Ryder Lee Feb. 8, 2023, 10:09 p.m. UTC
This is utilized to pass LDPC configurations from user space (i.e. hostap) to driver.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
---
 include/net/mac80211.h |  6 ++++++
 net/mac80211/cfg.c     | 12 ++++++++++++
 2 files changed, 18 insertions(+)

Comments

Johannes Berg Feb. 15, 2023, 5:43 p.m. UTC | #1
On Thu, 2023-02-09 at 06:09 +0800, Ryder Lee wrote:
> This is utilized to pass LDPC configurations from user space (i.e. hostap) to driver.

again, hostapd

why do we need this?

> + * @ht_ldpc: in AP mode, indicates interface owns HT LDPC capability.
> + * @vht_ldpc: in AP mode, indicates interface owns VHT LDPC capability.
> + * @he_ldpc: in AP mode, indicates interface owns HE LDPC capability.

what do you mean by "owns" the capability? Has? Uses it?

> diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
> index 6bf1cdf254f6..a080010da8fb 100644
> --- a/net/mac80211/cfg.c
> +++ b/net/mac80211/cfg.c
> @@ -1252,7 +1252,16 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
>  	prev_beacon_int = link_conf->beacon_int;
>  	link_conf->beacon_int = params->beacon_interval;
>  
> +	if (params->ht_cap) {
> +		link_conf->ht_ldpc =
> +			params->ht_cap->cap_info &
> +				cpu_to_le16(IEEE80211_HT_CAP_LDPC_CODING);
> +	}

No need for braces.

johannes
Ryder Lee Feb. 17, 2023, 9:32 a.m. UTC | #2
On Wed, 2023-02-15 at 18:43 +0100, Johannes Berg wrote:
> On Thu, 2023-02-09 at 06:09 +0800, Ryder Lee wrote:
> > This is utilized to pass LDPC configurations from user space (i.e.
> > hostap) to driver.
> 
> again, hostapd
> 
> why do we need this?
> 

User can configure hostapd.conf "# LDPC coding capability: [LDPC] =
supported" to decide if an AP mode has LDPC caps. They are actaully
long-standing configurations of hostapd, but have never been propegated
to kernel. One of our use cases is for certification setup.
 
> > + * @ht_ldpc: in AP mode, indicates interface owns HT LDPC
> > capability.
> > + * @vht_ldpc: in AP mode, indicates interface owns VHT LDPC
> > capability.
> > + * @he_ldpc: in AP mode, indicates interface owns HE LDPC
> > capability.
> 
> what do you mean by "owns" the capability? Has? Uses it?

Copy-and-pasted from @mu_mimo_owner, but indeed, "has" is better. Will
fix.

> > diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
> > index 6bf1cdf254f6..a080010da8fb 100644
> > --- a/net/mac80211/cfg.c
> > +++ b/net/mac80211/cfg.c
> > @@ -1252,7 +1252,16 @@ static int ieee80211_start_ap(struct wiphy
> > *wiphy, struct net_device *dev,
> >  	prev_beacon_int = link_conf->beacon_int;
> >  	link_conf->beacon_int = params->beacon_interval;
> >  
> > +	if (params->ht_cap) {
> > +		link_conf->ht_ldpc =
> > +			params->ht_cap->cap_info &
> > +				cpu_to_le16(IEEE80211_HT_CAP_LDPC_CODIN
> > G);
> > +	}
> 
> No need for braces.
> 
OK.
Ryder
diff mbox series

Patch

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 943f2aec6042..76a12bec71d5 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -653,6 +653,9 @@  struct ieee80211_fils_discovery {
  *	write-protected by sdata_lock and local->mtx so holding either is fine
  *	for read access.
  * @color_change_color: the bss color that will be used after the change.
+ * @ht_ldpc: in AP mode, indicates interface owns HT LDPC capability.
+ * @vht_ldpc: in AP mode, indicates interface owns VHT LDPC capability.
+ * @he_ldpc: in AP mode, indicates interface owns HE LDPC capability.
  * @vht_su_beamformer: in AP mode, does this BSS support operation as an VHT SU
  *	beamformer
  * @vht_su_beamformee: in AP mode, does this BSS support operation as an VHT SU
@@ -750,6 +753,9 @@  struct ieee80211_bss_conf {
 	bool color_change_active;
 	u8 color_change_color;
 
+	bool ht_ldpc;
+	bool vht_ldpc;
+	bool he_ldpc;
 	bool vht_su_beamformer;
 	bool vht_su_beamformee;
 	bool vht_mu_beamformer;
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 6bf1cdf254f6..a080010da8fb 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -1252,7 +1252,16 @@  static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
 	prev_beacon_int = link_conf->beacon_int;
 	link_conf->beacon_int = params->beacon_interval;
 
+	if (params->ht_cap) {
+		link_conf->ht_ldpc =
+			params->ht_cap->cap_info &
+				cpu_to_le16(IEEE80211_HT_CAP_LDPC_CODING);
+	}
+
 	if (params->vht_cap) {
+		link_conf->vht_ldpc =
+			params->vht_cap->vht_cap_info &
+				cpu_to_le32(IEEE80211_VHT_CAP_RXLDPC);
 		link_conf->vht_su_beamformer =
 			params->vht_cap->vht_cap_info &
 				cpu_to_le32(IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE);
@@ -1282,6 +1291,9 @@  static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
 	}
 
 	if (params->he_cap) {
+		link_conf->he_ldpc =
+			params->he_cap->phy_cap_info[1] &
+				IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD;
 		link_conf->he_su_beamformer =
 			params->he_cap->phy_cap_info[3] &
 				IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER;