mac80211: set beamformer/beamformee number of antennas in VHT caps
authorFelix Fietkau <nbd@nbd.name>
Mon, 22 Nov 2021 12:04:03 +0000 (13:04 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 23 Nov 2021 17:30:04 +0000 (18:30 +0100)
Without this, beamforming is probably not working

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry-picked from commit e2c4998f6dca7d9b74a8b01762040ff2c5e38fd7)

package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh

index 4828951babfb94aa753e7382d06543ae8c3d279f..d69667bf8cd8cfb671745151bb0267b5b4b6ee67 100644 (file)
@@ -53,6 +53,8 @@ drv_mac80211_init_device_config() {
                he_spr_sr_control \
                he_twt_required
        config_add_int \
+               beamformer_antennas \
+               beamformee_antennas \
                vht_max_a_mpdu_len_exp \
                vht_max_mpdu \
                vht_link_adapt \
@@ -294,6 +296,8 @@ mac80211_hostapd_setup_base() {
                        mu_beamformee:1 \
                        vht_txop_ps:1 \
                        htc_vht:1 \
+                       beamformee_antennas:4 \
+                       beamformer_antennas:4 \
                        rx_antenna_pattern:1 \
                        tx_antenna_pattern:1 \
                        vht_max_a_mpdu_len_exp:7 \
@@ -334,6 +338,18 @@ mac80211_hostapd_setup_base() {
                        RX-STBC-123:0x700:0x300:1 \
                        RX-STBC-1234:0x700:0x400:1 \
 
+               [ "$(($vht_cap & 0x800))" -gt 0 -a "$su_beamformer" -gt 0 ] && {
+                       cap_ant="$(( ( ($vht_cap >> 16) & 3 ) + 1 ))"
+                       [ "$cap_ant" -gt "$beamformer_antennas" ] && cap_ant="$beamformer_antennas"
+                       [ "$cap_ant" -gt 1 ] && vht_capab="$vht_capab[SOUNDING-DIMENSION-$cap_ant]"
+               }
+
+               [ "$(($vht_cap & 0x1000))" -gt 0 -a "$su_beamformee" -gt 0 ] && {
+                       cap_ant="$(( ( ($vht_cap >> 13) & 3 ) + 1 ))"
+                       [ "$cap_ant" -gt "$beamformee_antennas" ] && cap_ant="$beamformee_antennas"
+                       [ "$cap_ant" -gt 1 ] && vht_capab="$vht_capab[BF-ANTENNA-$cap_ant]"
+               }
+
                # supported Channel widths
                vht160_hw=0
                [ "$(($vht_cap & 12))" -eq 4 -a 1 -le "$vht160" ] && \