Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: sys/qwz: add 802.11n with 40Mhz width
To:
tech@openbsd.org
Date:
Tue, 26 May 2026 08:56:57 +0200

Download raw body.

Thread
On Mon, May 25, 2026 at 11:39:18PM +0200, Kirill A. Korinsky wrote:
> tech@,
> 
> here support of 40Mhz width for qwz at 802.11n, tested against Unifi
> with 2.4Ghz and 5Ghz, and AP reports RX and TX as 300 Mbps.
> 
> 30 seconds iperf shows ~140 Mbits/sec and with -R ~171 Mbits/sec.
> 
> I don't like +/- 10 for channel center, but better apporach is helper in
> net80211 which I plan to add as the next step with 11ac and 80Mhz width.
> 
> Ok?

This looks ok, but I don't understand why you are setting TX_MSC_SET_DEFINED
in HT capabilities with this diff.

As far as I understand TX_MCS_SET_DEFINED has to do with Tx/Rx rate sets.
When set, the supported rate sets for Tx and Rx are different, otherwise
Tx and Rx rate sets are equal.

Is this really necessary for 40MHz support, or an unrelated change?

> diff -u -p -r1.11 if_qwz_pci.c
> --- sys/dev/pci/if_qwz_pci.c	18 May 2026 13:47:32 -0000	1.11
> +++ sys/dev/pci/if_qwz_pci.c	25 May 2026 20:54:14 -0000
> @@ -969,13 +969,14 @@ qwz_pci_attach(struct device *parent, st
>  	ic->ic_sup_rates[IEEE80211_MODE_11B] = ieee80211_std_rateset_11b;
>  	ic->ic_sup_rates[IEEE80211_MODE_11G] = ieee80211_std_rateset_11g;
>  
> -	ic->ic_htcaps = IEEE80211_HTCAP_SGI20 | IEEE80211_HTCAP_AMSDU7935;
> -	ic->ic_htcaps |=
> +	ic->ic_htcaps = IEEE80211_HTCAP_SGI20 | IEEE80211_HTCAP_SGI40 |
> +	    IEEE80211_HTCAP_CBW20_40 | IEEE80211_HTCAP_AMSDU7935 |
>  	    (IEEE80211_HTCAP_SMPS_DIS << IEEE80211_HTCAP_SMPS_SHIFT);
>  	ic->ic_htxcaps = 0;
>  	ic->ic_txbfcaps = 0;
>  	ic->ic_aselcaps = 0;
>  	ic->ic_ampdu_params = (IEEE80211_AMPDU_PARAM_SS_NONE | 0x3 /* 64k */);
> +	ic->ic_tx_mcs_set = IEEE80211_TX_MCS_SET_DEFINED;