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;