|
@@ -1426,20 +1426,18 @@ QDF_STATUS hdd_get_nss(struct hdd_adapter *adapter, uint8_t *nss)
|
|
|
|
|
|
/**
|
|
|
* hdd_get_sap_tx_nss() - get the sap tx nss
|
|
|
- * @adapter: Pointer to adapter
|
|
|
- * @hdd_ctx: Pointer to hdd context
|
|
|
- * @vdev: Pointer to vdev
|
|
|
+ * @link_info: Pointer of link_info
|
|
|
* @tx_nss: pointer to tx_nss
|
|
|
*
|
|
|
* get the sap tx nss
|
|
|
*
|
|
|
* Return: None
|
|
|
*/
|
|
|
-static QDF_STATUS hdd_get_sap_tx_nss(struct hdd_adapter *adapter,
|
|
|
- struct hdd_context *hdd_ctx,
|
|
|
- struct wlan_objmgr_vdev *vdev,
|
|
|
- uint8_t *tx_nss)
|
|
|
+static QDF_STATUS
|
|
|
+hdd_get_sap_tx_nss(struct wlan_hdd_link_info *link_info, uint8_t *tx_nss)
|
|
|
{
|
|
|
+ struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(link_info->adapter);
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
struct wlan_mlme_nss_chains *dynamic_cfg;
|
|
|
enum band_info operating_band;
|
|
|
mac_handle_t mac_handle;
|
|
@@ -1451,14 +1449,19 @@ static QDF_STATUS hdd_get_sap_tx_nss(struct hdd_adapter *adapter,
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
|
|
|
- operating_band =
|
|
|
- hdd_get_sap_operating_band_by_link_info(adapter->deflink);
|
|
|
+ operating_band = hdd_get_sap_operating_band_by_link_info(link_info);
|
|
|
if (operating_band == BAND_UNKNOWN)
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_ID);
|
|
|
+ if (!vdev)
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
sme_get_sap_vdev_type_nss(mac_handle, &vdev_nss, operating_band);
|
|
|
if (hdd_ctx->dynamic_nss_chains_support) {
|
|
|
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
|
|
if (!dynamic_cfg) {
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
hdd_debug("nss chain dynamic config NULL");
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
@@ -1477,37 +1480,41 @@ static QDF_STATUS hdd_get_sap_tx_nss(struct hdd_adapter *adapter,
|
|
|
*tx_nss = vdev_nss;
|
|
|
}
|
|
|
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* hdd_get_sta_tx_nss() - get the sta tx nss
|
|
|
- * @hdd_ctx: Pointer to hdd context
|
|
|
- * @adapter: Pointer to adapter
|
|
|
- * @vdev: Pointer to vdev
|
|
|
+ * @link_info: Pointer of link_info
|
|
|
* @tx_nss: pointer to tx_nss
|
|
|
*
|
|
|
* get the STA tx nss
|
|
|
*
|
|
|
* Return: None
|
|
|
*/
|
|
|
-static QDF_STATUS hdd_get_sta_tx_nss(struct hdd_adapter *adapter,
|
|
|
- struct hdd_context *hdd_ctx,
|
|
|
- struct wlan_objmgr_vdev *vdev,
|
|
|
- uint8_t *tx_nss)
|
|
|
+static QDF_STATUS
|
|
|
+hdd_get_sta_tx_nss(struct wlan_hdd_link_info *link_info, uint8_t *tx_nss)
|
|
|
{
|
|
|
+ struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(link_info->adapter);
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
struct wlan_mlme_nss_chains *dynamic_cfg;
|
|
|
enum band_info operating_band;
|
|
|
uint8_t proto_generic_nss;
|
|
|
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_ID);
|
|
|
+ if (!vdev)
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
proto_generic_nss = wlan_vdev_mlme_get_nss(vdev);
|
|
|
if (hdd_ctx->dynamic_nss_chains_support) {
|
|
|
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
|
|
if (!dynamic_cfg) {
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
hdd_debug("nss chain dynamic config NULL");
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
- operating_band = hdd_conn_get_connected_band(adapter->deflink);
|
|
|
+ operating_band = hdd_conn_get_connected_band(link_info);
|
|
|
switch (operating_band) {
|
|
|
case BAND_2G:
|
|
|
*tx_nss = dynamic_cfg->tx_nss[NSS_CHAINS_BAND_2GHZ];
|
|
@@ -1524,45 +1531,37 @@ static QDF_STATUS hdd_get_sta_tx_nss(struct hdd_adapter *adapter,
|
|
|
} else
|
|
|
*tx_nss = proto_generic_nss;
|
|
|
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
QDF_STATUS hdd_get_tx_nss(struct hdd_adapter *adapter, uint8_t *tx_nss)
|
|
|
{
|
|
|
- struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
|
|
- struct wlan_objmgr_vdev *vdev;
|
|
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
|
|
|
|
|
- vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink, WLAN_OSIF_ID);
|
|
|
- if (!vdev)
|
|
|
- return QDF_STATUS_E_INVAL;
|
|
|
-
|
|
|
if (adapter->device_mode == QDF_SAP_MODE ||
|
|
|
adapter->device_mode == QDF_P2P_GO_MODE)
|
|
|
- status = hdd_get_sap_tx_nss(adapter, hdd_ctx, vdev, tx_nss);
|
|
|
+ status = hdd_get_sap_tx_nss(adapter->deflink, tx_nss);
|
|
|
else
|
|
|
- status = hdd_get_sta_tx_nss(adapter, hdd_ctx, vdev, tx_nss);
|
|
|
- hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
+ status = hdd_get_sta_tx_nss(adapter->deflink, tx_nss);
|
|
|
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* hdd_get_sap_rx_nss() - get the sap rx nss
|
|
|
- * @adapter: Pointer to adapter
|
|
|
- * @hdd_ctx: Pointer to hdd context
|
|
|
- * @vdev: Pointer to vdev
|
|
|
+ * @link_info: Pointer to link_info
|
|
|
* @rx_nss: pointer to rx_nss
|
|
|
*
|
|
|
* get the sap tx nss
|
|
|
*
|
|
|
* Return: None
|
|
|
*/
|
|
|
-static QDF_STATUS hdd_get_sap_rx_nss(struct hdd_adapter *adapter,
|
|
|
- struct hdd_context *hdd_ctx,
|
|
|
- struct wlan_objmgr_vdev *vdev,
|
|
|
- uint8_t *rx_nss)
|
|
|
+static QDF_STATUS
|
|
|
+hdd_get_sap_rx_nss(struct wlan_hdd_link_info *link_info, uint8_t *rx_nss)
|
|
|
{
|
|
|
+ struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(link_info->adapter);
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
struct wlan_mlme_nss_chains *dynamic_cfg;
|
|
|
enum band_info operating_band;
|
|
|
mac_handle_t mac_handle;
|
|
@@ -1574,14 +1573,19 @@ static QDF_STATUS hdd_get_sap_rx_nss(struct hdd_adapter *adapter,
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
|
|
|
- operating_band =
|
|
|
- hdd_get_sap_operating_band_by_link_info(adapter->deflink);
|
|
|
+ operating_band = hdd_get_sap_operating_band_by_link_info(link_info);
|
|
|
if (operating_band == BAND_UNKNOWN)
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_ID);
|
|
|
+ if (!vdev)
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
sme_get_sap_vdev_type_nss(mac_handle, &vdev_nss, operating_band);
|
|
|
if (hdd_ctx->dynamic_nss_chains_support) {
|
|
|
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
|
|
if (!dynamic_cfg) {
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
hdd_debug("nss chain dynamic config NULL");
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
@@ -1600,14 +1604,13 @@ static QDF_STATUS hdd_get_sap_rx_nss(struct hdd_adapter *adapter,
|
|
|
*rx_nss = vdev_nss;
|
|
|
}
|
|
|
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* hdd_get_sta_rx_nss() - get the sta rx nss
|
|
|
- * @hdd_ctx: Pointer to hdd context
|
|
|
- * @adapter: Pointer to adapter
|
|
|
- * @vdev: Pointer to vdev
|
|
|
+ * @link_info: Pointer to link_info in adapter
|
|
|
* @rx_nss: pointer to rx_nss
|
|
|
*
|
|
|
* get the STA rx nss
|
|
@@ -1615,23 +1618,28 @@ static QDF_STATUS hdd_get_sap_rx_nss(struct hdd_adapter *adapter,
|
|
|
* Return: QDF_STATUS_SUCCESS if the RX NSS is returned, otherwise a suitable
|
|
|
* QDF_STATUS_E_* error code
|
|
|
*/
|
|
|
-static QDF_STATUS hdd_get_sta_rx_nss(struct hdd_adapter *adapter,
|
|
|
- struct hdd_context *hdd_ctx,
|
|
|
- struct wlan_objmgr_vdev *vdev,
|
|
|
- uint8_t *rx_nss)
|
|
|
+static QDF_STATUS
|
|
|
+hdd_get_sta_rx_nss(struct wlan_hdd_link_info *link_info, uint8_t *rx_nss)
|
|
|
{
|
|
|
+ struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(link_info->adapter);
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
struct wlan_mlme_nss_chains *dynamic_cfg;
|
|
|
enum band_info operating_band;
|
|
|
uint8_t proto_generic_nss;
|
|
|
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_OSIF_ID);
|
|
|
+ if (!vdev)
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+
|
|
|
proto_generic_nss = wlan_vdev_mlme_get_nss(vdev);
|
|
|
if (hdd_ctx->dynamic_nss_chains_support) {
|
|
|
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
|
|
if (!dynamic_cfg) {
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
hdd_debug("nss chain dynamic config NULL");
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
- operating_band = hdd_conn_get_connected_band(adapter->deflink);
|
|
|
+ operating_band = hdd_conn_get_connected_band(link_info);
|
|
|
switch (operating_band) {
|
|
|
case BAND_2G:
|
|
|
*rx_nss = dynamic_cfg->rx_nss[NSS_CHAINS_BAND_2GHZ];
|
|
@@ -1648,25 +1656,19 @@ static QDF_STATUS hdd_get_sta_rx_nss(struct hdd_adapter *adapter,
|
|
|
} else
|
|
|
*rx_nss = proto_generic_nss;
|
|
|
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
QDF_STATUS hdd_get_rx_nss(struct hdd_adapter *adapter, uint8_t *rx_nss)
|
|
|
{
|
|
|
- struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
|
|
- struct wlan_objmgr_vdev *vdev;
|
|
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
|
|
|
|
|
- vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink, WLAN_OSIF_ID);
|
|
|
- if (!vdev)
|
|
|
- return QDF_STATUS_E_INVAL;
|
|
|
-
|
|
|
if (adapter->device_mode == QDF_SAP_MODE ||
|
|
|
adapter->device_mode == QDF_P2P_GO_MODE)
|
|
|
- status = hdd_get_sap_rx_nss(adapter, hdd_ctx, vdev, rx_nss);
|
|
|
+ status = hdd_get_sap_rx_nss(adapter->deflink, rx_nss);
|
|
|
else
|
|
|
- status = hdd_get_sta_rx_nss(adapter, hdd_ctx, vdev, rx_nss);
|
|
|
- hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
+ status = hdd_get_sta_rx_nss(adapter->deflink, rx_nss);
|
|
|
|
|
|
return status;
|
|
|
}
|