|
@@ -1612,23 +1612,19 @@ static void hdd_clear_roam_profile_ie(struct hdd_adapter *adapter)
|
|
|
hdd_exit();
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * hdd_roam_deregister_sta() - deregister station
|
|
|
- * @adapter: pointer to adapter
|
|
|
- * @sta_id: station identifier
|
|
|
- *
|
|
|
- * Return: QDF_STATUS enumeration
|
|
|
- */
|
|
|
-QDF_STATUS hdd_roam_deregister_sta(struct hdd_adapter *adapter, uint8_t sta_id)
|
|
|
+QDF_STATUS hdd_roam_deregister_sta(struct hdd_adapter *adapter,
|
|
|
+ struct qdf_mac_addr mac_addr)
|
|
|
{
|
|
|
QDF_STATUS qdf_status;
|
|
|
|
|
|
qdf_status = cdp_clear_peer(cds_get_context(QDF_MODULE_ID_SOC),
|
|
|
(struct cdp_pdev *)cds_get_context(QDF_MODULE_ID_TXRX),
|
|
|
- sta_id);
|
|
|
+ mac_addr);
|
|
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
|
|
- hdd_err("cdp_clear_peer() failed for sta_id %d. Status(%d) [0x%08X]",
|
|
|
- sta_id, qdf_status, qdf_status);
|
|
|
+ hdd_err("cdp_clear_peer() failed for sta mac: "
|
|
|
+ QDF_MAC_ADDR_STR ". Status(%d) [0x%08X]",
|
|
|
+ QDF_MAC_ADDR_ARRAY(mac_addr.bytes),
|
|
|
+ qdf_status, qdf_status);
|
|
|
}
|
|
|
|
|
|
return qdf_status;
|
|
@@ -1832,7 +1828,8 @@ static QDF_STATUS hdd_dis_connect_handler(struct hdd_adapter *adapter,
|
|
|
uint8_t i;
|
|
|
|
|
|
sta_id = sta_ctx->broadcast_sta_id;
|
|
|
- vstatus = hdd_roam_deregister_sta(adapter, sta_id);
|
|
|
+ vstatus = hdd_roam_deregister_sta(adapter,
|
|
|
+ sta_ctx->conn_info.bssid);
|
|
|
if (!QDF_IS_STATUS_SUCCESS(vstatus)) {
|
|
|
hdd_err("hdd_roam_deregister_sta() failed for staID %d Status: %d [0x%x]",
|
|
|
sta_id, status, status);
|
|
@@ -1849,7 +1846,9 @@ static QDF_STATUS hdd_dis_connect_handler(struct hdd_adapter *adapter,
|
|
|
continue;
|
|
|
sta_id = sta_ctx->conn_info.sta_id[i];
|
|
|
hdd_debug("Deregister StaID %d", sta_id);
|
|
|
- vstatus = hdd_roam_deregister_sta(adapter, sta_id);
|
|
|
+ vstatus = hdd_roam_deregister_sta(
|
|
|
+ adapter,
|
|
|
+ sta_ctx->conn_info.peer_macaddr[i]);
|
|
|
if (!QDF_IS_STATUS_SUCCESS(vstatus)) {
|
|
|
hdd_err("hdd_roam_deregister_sta() failed to for staID %d Status: %d [0x%x]",
|
|
|
sta_id, status, status);
|
|
@@ -4023,7 +4022,7 @@ roam_roam_connect_status_update_handler(struct hdd_adapter *adapter,
|
|
|
QDF_MAC_ADDR_ARRAY(sta_ctx->conn_info.bssid.bytes),
|
|
|
roam_info->staId);
|
|
|
|
|
|
- hdd_roam_deregister_sta(adapter, roam_info->staId);
|
|
|
+ hdd_roam_deregister_sta(adapter, roam_info->peerMac);
|
|
|
|
|
|
if (roam_info->staId < HDD_MAX_ADAPTERS)
|
|
|
hdd_ctx->sta_to_adapter[roam_info->staId] = NULL;
|
|
@@ -4115,32 +4114,17 @@ QDF_STATUS hdd_roam_register_tdlssta(struct hdd_adapter *adapter,
|
|
|
return qdf_status;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * hdd_roam_deregister_tdlssta() - deregister new TDLS station
|
|
|
- * @adapter: pointer to adapter
|
|
|
- * @sta_id: station identifier
|
|
|
- *
|
|
|
- * Return: QDF_STATUS enumeration
|
|
|
- */
|
|
|
QDF_STATUS hdd_roam_deregister_tdlssta(struct hdd_adapter *adapter,
|
|
|
- uint8_t sta_id)
|
|
|
+ struct qdf_mac_addr *peer_mac)
|
|
|
{
|
|
|
QDF_STATUS qdf_status;
|
|
|
|
|
|
qdf_status = cdp_clear_peer(cds_get_context(QDF_MODULE_ID_SOC),
|
|
|
(struct cdp_pdev *)cds_get_context(QDF_MODULE_ID_TXRX),
|
|
|
- sta_id);
|
|
|
+ *peer_mac);
|
|
|
|
|
|
return qdf_status;
|
|
|
}
|
|
|
-
|
|
|
-#else
|
|
|
-
|
|
|
-inline QDF_STATUS hdd_roam_deregister_tdlssta(struct hdd_adapter *adapter,
|
|
|
- uint8_t sta_id)
|
|
|
-{
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
-}
|
|
|
#endif
|
|
|
|
|
|
#ifdef WLAN_FEATURE_11W
|
|
@@ -4768,8 +4752,9 @@ hdd_sme_roam_callback(void *context, struct csr_roam_info *roam_info,
|
|
|
wlan_hdd_netif_queue_control(adapter,
|
|
|
WLAN_STOP_ALL_NETIF_QUEUE,
|
|
|
WLAN_CONTROL_PATH);
|
|
|
- status = hdd_roam_deregister_sta(adapter,
|
|
|
- sta_ctx->conn_info.sta_id[0]);
|
|
|
+ status = hdd_roam_deregister_sta(
|
|
|
+ adapter,
|
|
|
+ sta_ctx->conn_info.peer_macaddr[0]);
|
|
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
|
|
qdf_ret_status = QDF_STATUS_E_FAILURE;
|
|
|
sta_ctx->ft_carrier_on = true;
|