On 24 September 2014 16:35, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote: > On 09/24/2014 12:51 AM, Michal Kazior wrote: >> On 24 September 2014 02:26, <greearb@xxxxxxxxxxxxxxx> wrote: >> [...] >>> >>> +static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k >>> *ar, >>> + bool >>> use_cfg_chains) >>> { >>> struct ieee80211_sta_vht_cap vht_cap = {0}; >>> u16 mcs_map; >>> int i; >>> + int nrf = ar->num_rf_chains; >>> + >>> + if (use_cfg_chains && ar->cfg_tx_chainmask) >>> + nrf = get_nss_from_chainmask(ar->cfg_tx_chainmask); >> >> >> Is use_cfg_chains really necessary here? Is setting tx/rx chainmask to >> 0x0 make any sense at all? Shouldn't we deny it or make it fallback to >> the supported tx/rx chainmask values? > > It would cause the logic to flip back to the defaults, so seems mildly > useful. I'm not sure > upper layers would ever let it be < 1 though. 0 is a valid argument as far as upper layers are concerned and should be treated as "use all available antennas" (see `iw list` output before ever setting antenna, after setting to, e.g. 1 and then to 0). This implies current set_antenna() implementation is actually buggy (pdev param should involve using supp_tx/rx_chainmask). Your assumption in recent patches is also incorrect as antenna mask = 0 should imply max nss, not 1. Michał -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html