|
@@ -4402,6 +4402,7 @@ sme_store_nss_chains_cfg_in_vdev(struct wlan_objmgr_vdev *vdev,
|
|
|
static void
|
|
|
sme_populate_user_config(struct wlan_mlme_nss_chains *dynamic_cfg,
|
|
|
struct wlan_mlme_nss_chains *user_cfg,
|
|
|
+ struct wlan_mlme_nss_chains *ini_cfg,
|
|
|
enum nss_chains_band_info band)
|
|
|
{
|
|
|
if (!user_cfg->num_rx_chains[band])
|
|
@@ -4420,17 +4421,23 @@ sme_populate_user_config(struct wlan_mlme_nss_chains *dynamic_cfg,
|
|
|
user_cfg->tx_nss[band] =
|
|
|
dynamic_cfg->tx_nss[band];
|
|
|
|
|
|
- if (!user_cfg->num_tx_chains_11a)
|
|
|
+ if (!user_cfg->num_tx_chains_11a) {
|
|
|
user_cfg->num_tx_chains_11a =
|
|
|
- dynamic_cfg->num_tx_chains_11a;
|
|
|
+ QDF_MIN(user_cfg->num_tx_chains[NSS_CHAINS_BAND_5GHZ],
|
|
|
+ ini_cfg->num_tx_chains_11a);
|
|
|
+ }
|
|
|
|
|
|
- if (!user_cfg->num_tx_chains_11b)
|
|
|
+ if (!user_cfg->num_tx_chains_11b) {
|
|
|
user_cfg->num_tx_chains_11b =
|
|
|
- dynamic_cfg->num_tx_chains_11b;
|
|
|
+ QDF_MIN(user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ ini_cfg->num_tx_chains_11b);
|
|
|
+ }
|
|
|
|
|
|
- if (!user_cfg->num_tx_chains_11g)
|
|
|
+ if (!user_cfg->num_tx_chains_11g) {
|
|
|
user_cfg->num_tx_chains_11g =
|
|
|
- dynamic_cfg->num_tx_chains_11g;
|
|
|
+ QDF_MIN(user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ ini_cfg->num_tx_chains_11g);
|
|
|
+ }
|
|
|
|
|
|
if (!user_cfg->disable_rx_mrc[band])
|
|
|
user_cfg->disable_rx_mrc[band] =
|
|
@@ -4543,7 +4550,7 @@ sme_validate_nss_chains_config(struct wlan_objmgr_vdev *vdev,
|
|
|
|
|
|
for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++) {
|
|
|
sme_populate_user_config(dynamic_cfg,
|
|
|
- user_cfg, band);
|
|
|
+ user_cfg, ini_cfg, band);
|
|
|
status = sme_validate_from_ini_config(user_cfg,
|
|
|
ini_cfg,
|
|
|
band);
|
|
@@ -4742,6 +4749,30 @@ sme_update_nss_in_mlme_cfg(mac_handle_t mac_handle,
|
|
|
vdev_op_mode, band);
|
|
|
}
|
|
|
|
|
|
+static void sme_dump_nss_cfg(struct wlan_mlme_nss_chains *user_cfg)
|
|
|
+{
|
|
|
+ sme_debug("num_tx_chains 2g %d 5g %d",
|
|
|
+ user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ user_cfg->num_tx_chains[NSS_CHAINS_BAND_5GHZ]);
|
|
|
+
|
|
|
+ sme_debug("num_rx_chains 2g %d 5g %d",
|
|
|
+ user_cfg->num_rx_chains[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ user_cfg->num_rx_chains[NSS_CHAINS_BAND_5GHZ]);
|
|
|
+
|
|
|
+ sme_debug("tx_nss 2g %d 5g %d",
|
|
|
+ user_cfg->tx_nss[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ user_cfg->tx_nss[NSS_CHAINS_BAND_5GHZ]);
|
|
|
+ sme_debug("rx_nss 2g %d 5g %d",
|
|
|
+ user_cfg->rx_nss[NSS_CHAINS_BAND_2GHZ],
|
|
|
+ user_cfg->rx_nss[NSS_CHAINS_BAND_5GHZ]);
|
|
|
+ sme_debug("num_tx_chains_11b %d",
|
|
|
+ user_cfg->num_tx_chains_11b);
|
|
|
+ sme_debug("num_tx_chains_11g %d",
|
|
|
+ user_cfg->num_tx_chains_11g);
|
|
|
+ sme_debug("num_tx_chains_11a %d",
|
|
|
+ user_cfg->num_tx_chains_11a);
|
|
|
+}
|
|
|
+
|
|
|
QDF_STATUS
|
|
|
sme_nss_chains_update(mac_handle_t mac_handle,
|
|
|
struct wlan_mlme_nss_chains *user_cfg,
|
|
@@ -4782,6 +4813,11 @@ sme_nss_chains_update(mac_handle_t mac_handle,
|
|
|
|
|
|
status = sme_validate_nss_chains_config(vdev, user_cfg,
|
|
|
dynamic_cfg);
|
|
|
+ sme_debug("dynamic_cfg");
|
|
|
+ sme_dump_nss_cfg(dynamic_cfg);
|
|
|
+ sme_debug("user_cfg");
|
|
|
+ sme_dump_nss_cfg(user_cfg);
|
|
|
+
|
|
|
if (QDF_IS_STATUS_ERROR(status))
|
|
|
goto release_lock;
|
|
|
|