OK
On 2022/03/19 20:37, Stefan Sperling wrote:
> Both iwm and iwx are currently writing VHT capabilities into
> the "common" secion of the firmware's probe request frame template.
> This "common" section is used on both 2GHz and 5GHz bands.
>
> Announcing VHT capabilities on 2GHz makes no sense.
> Move them into the 5GHz-only section.
>
> ok?
>
> diff f6c92c11f983c9e9dd370657ab43ccf9feb56be5 /usr/src
> blob - e82db1f229ad0141f2bedfe4fa81cb46267f2588
> file + sys/dev/pci/if_iwm.c
> --- sys/dev/pci/if_iwm.c
> +++ sys/dev/pci/if_iwm.c
> @@ -7661,6 +7661,12 @@ iwm_fill_probe_req(struct iwm_softc *sc, struct iwm_sc
> frm = ieee80211_add_xrates(frm, rs);
> preq->band_data[1].len = htole16(frm - pos);
> remain -= frm - pos;
> + if (ic->ic_flags & IEEE80211_F_VHTON) {
> + if (remain < 14)
> + return ENOBUFS;
> + frm = ieee80211_add_vhtcaps(frm, ic);
> + remain -= frm - pos;
> + }
> }
>
> /* Send 11n IEs on both 2GHz and 5GHz bands. */
> @@ -7674,12 +7680,6 @@ iwm_fill_probe_req(struct iwm_softc *sc, struct iwm_sc
> remain -= frm - pos;
> }
>
> - if (ic->ic_flags & IEEE80211_F_VHTON) {
> - if (remain < 14)
> - return ENOBUFS;
> - frm = ieee80211_add_vhtcaps(frm, ic);
> - }
> -
> preq->common_data.len = htole16(frm - pos);
>
> return 0;
> blob - 6c1c1647fbcd6d6e71f2d6c08e178fc533650239
> file + sys/dev/pci/if_iwx.c
> --- sys/dev/pci/if_iwx.c
> +++ sys/dev/pci/if_iwx.c
> @@ -6200,6 +6200,12 @@ iwx_fill_probe_req(struct iwx_softc *sc, struct iwx_sc
> frm = ieee80211_add_xrates(frm, rs);
> preq->band_data[1].len = htole16(frm - pos);
> remain -= frm - pos;
> + if (ic->ic_flags & IEEE80211_F_VHTON) {
> + if (remain < 14)
> + return ENOBUFS;
> + frm = ieee80211_add_vhtcaps(frm, ic);
> + remain -= frm - pos;
> + }
> }
>
> /* Send 11n IEs on both 2GHz and 5GHz bands. */
> @@ -6213,12 +6219,6 @@ iwx_fill_probe_req(struct iwx_softc *sc, struct iwx_sc
> remain -= frm - pos;
> }
>
> - if (ic->ic_flags & IEEE80211_F_VHTON) {
> - if (remain < 14)
> - return ENOBUFS;
> - frm = ieee80211_add_vhtcaps(frm, ic);
> - }
> -
> preq->common_data.len = htole16(frm - pos);
>
> return 0;
>