qcacld-3.0: Add mutex lock argument for the tdls function
The function wlan_hdd_tdls_indicate_teardown() calls wlan_hdd_tdls_set_peer_link_status() with need_mutex agrument as TRUE. This change passes mutex argument to the function wlan_hdd_tdls_indicate_teardown() that inturn passes to wlan_hdd_tdls_set_peer_link_status() for need_mutex argument. Change-Id: I96400c00470dba7ae5ba9ad26142c7c5aaf2feb7 CRs-Fixed: 1115911
This commit is contained in:
@@ -611,7 +611,7 @@ void wlan_hdd_tdls_timer_restart(hdd_adapter_t *pAdapter,
|
|||||||
uint32_t expirationTime);
|
uint32_t expirationTime);
|
||||||
void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
|
void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
|
||||||
hddTdlsPeer_t *curr_peer,
|
hddTdlsPeer_t *curr_peer,
|
||||||
uint16_t reason);
|
uint16_t reason, bool need_lock);
|
||||||
|
|
||||||
void wlan_hdd_tdls_implicit_send_discovery_request(tdlsCtx_t *hdd_tdls_ctx);
|
void wlan_hdd_tdls_implicit_send_discovery_request(tdlsCtx_t *hdd_tdls_ctx);
|
||||||
|
|
||||||
|
@@ -3866,7 +3866,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
wlan_hdd_tdls_find_peer(pAdapter,
|
wlan_hdd_tdls_find_peer(pAdapter,
|
||||||
pRoamInfo->peerMac.bytes, true);
|
pRoamInfo->peerMac.bytes, true);
|
||||||
wlan_hdd_tdls_indicate_teardown(pAdapter, curr_peer,
|
wlan_hdd_tdls_indicate_teardown(pAdapter, curr_peer,
|
||||||
pRoamInfo->reasonCode);
|
pRoamInfo->reasonCode, true);
|
||||||
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_BSS_DISCONNECT,
|
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
curr_peer->peerMac);
|
curr_peer->peerMac);
|
||||||
status = QDF_STATUS_SUCCESS;
|
status = QDF_STATUS_SUCCESS;
|
||||||
@@ -4040,7 +4040,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
|
|
||||||
wlan_hdd_tdls_indicate_teardown
|
wlan_hdd_tdls_indicate_teardown
|
||||||
(pHddTdlsCtx->pAdapter, curr_peer,
|
(pHddTdlsCtx->pAdapter, curr_peer,
|
||||||
reason);
|
reason, true);
|
||||||
hdd_send_wlan_tdls_teardown_event(
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
curr_peer->peerMac);
|
curr_peer->peerMac);
|
||||||
@@ -4087,7 +4087,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
|
|
||||||
wlan_hdd_tdls_indicate_teardown
|
wlan_hdd_tdls_indicate_teardown
|
||||||
(pHddTdlsCtx->pAdapter, curr_peer,
|
(pHddTdlsCtx->pAdapter, curr_peer,
|
||||||
reason);
|
reason, true);
|
||||||
hdd_send_wlan_tdls_teardown_event(
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
curr_peer->peerMac);
|
curr_peer->peerMac);
|
||||||
|
@@ -271,7 +271,8 @@ void wlan_hdd_tdls_disable_offchan_and_teardown_links(hdd_context_t *hddctx)
|
|||||||
wlan_hdd_tdls_indicate_teardown(
|
wlan_hdd_tdls_indicate_teardown(
|
||||||
curr_peer->pHddTdlsCtx->pAdapter,
|
curr_peer->pHddTdlsCtx->pAdapter,
|
||||||
curr_peer,
|
curr_peer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_CONCURRENCY,
|
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_CONCURRENCY,
|
||||||
curr_peer->peerMac);
|
curr_peer->peerMac);
|
||||||
}
|
}
|
||||||
@@ -2997,7 +2998,8 @@ int wlan_hdd_tdls_scan_callback(hdd_adapter_t *pAdapter, struct wiphy *wiphy,
|
|||||||
wlan_hdd_tdls_indicate_teardown
|
wlan_hdd_tdls_indicate_teardown
|
||||||
(connectedPeerList[i]->pHddTdlsCtx->
|
(connectedPeerList[i]->pHddTdlsCtx->
|
||||||
pAdapter, connectedPeerList[i],
|
pAdapter, connectedPeerList[i],
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
hdd_send_wlan_tdls_teardown_event
|
hdd_send_wlan_tdls_teardown_event
|
||||||
(eTDLS_TEARDOWN_SCAN,
|
(eTDLS_TEARDOWN_SCAN,
|
||||||
connectedPeerList[i]->peerMac);
|
connectedPeerList[i]->peerMac);
|
||||||
@@ -3101,11 +3103,13 @@ void wlan_hdd_tdls_timer_restart(hdd_adapter_t *pAdapter,
|
|||||||
* @pAdapter: HDD adapter
|
* @pAdapter: HDD adapter
|
||||||
* @curr_peer: peer tdls teardown happened
|
* @curr_peer: peer tdls teardown happened
|
||||||
* @reason: teardown reason
|
* @reason: teardown reason
|
||||||
|
* @need_lock: mutex lock for wlan_hdd_tdls_set_peer_link_status()
|
||||||
*
|
*
|
||||||
* Return: Void
|
* Return: Void
|
||||||
*/
|
*/
|
||||||
void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
|
void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
|
||||||
hddTdlsPeer_t *curr_peer, uint16_t reason)
|
hddTdlsPeer_t *curr_peer, uint16_t reason,
|
||||||
|
bool need_lock)
|
||||||
{
|
{
|
||||||
if ((NULL == pAdapter || WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic) ||
|
if ((NULL == pAdapter || WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic) ||
|
||||||
(NULL == curr_peer)) {
|
(NULL == curr_peer)) {
|
||||||
@@ -3121,7 +3125,7 @@ void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
|
|||||||
wlan_hdd_tdls_set_peer_link_status(curr_peer,
|
wlan_hdd_tdls_set_peer_link_status(curr_peer,
|
||||||
eTDLS_LINK_TEARING,
|
eTDLS_LINK_TEARING,
|
||||||
eTDLS_LINK_UNSPECIFIED,
|
eTDLS_LINK_UNSPECIFIED,
|
||||||
true);
|
need_lock);
|
||||||
hdd_info("Teardown reason %d", reason);
|
hdd_info("Teardown reason %d", reason);
|
||||||
cfg80211_tdls_oper_request(pAdapter->dev,
|
cfg80211_tdls_oper_request(pAdapter->dev,
|
||||||
curr_peer->peerMac,
|
curr_peer->peerMac,
|
||||||
@@ -4628,7 +4632,8 @@ int wlan_hdd_tdls_extctrl_deconfig_peer(hdd_adapter_t *pAdapter,
|
|||||||
}
|
}
|
||||||
|
|
||||||
wlan_hdd_tdls_indicate_teardown(pAdapter, pTdlsPeer,
|
wlan_hdd_tdls_indicate_teardown(pAdapter, pTdlsPeer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_EXT_CTRL,
|
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_EXT_CTRL,
|
||||||
pTdlsPeer->peerMac);
|
pTdlsPeer->peerMac);
|
||||||
if (0 != wlan_hdd_tdls_set_force_peer(pAdapter, peer, false)) {
|
if (0 != wlan_hdd_tdls_set_force_peer(pAdapter, peer, false)) {
|
||||||
@@ -5732,8 +5737,9 @@ static void wlan_hdd_tdls_idle_handler(void *user_data)
|
|||||||
hdd_info("trigger tdls link to "MAC_ADDRESS_STR
|
hdd_info("trigger tdls link to "MAC_ADDRESS_STR
|
||||||
" down", MAC_ADDR_ARRAY(curr_peer->peerMac));
|
" down", MAC_ADDR_ARRAY(curr_peer->peerMac));
|
||||||
wlan_hdd_tdls_indicate_teardown(curr_peer->pHddTdlsCtx->pAdapter,
|
wlan_hdd_tdls_indicate_teardown(curr_peer->pHddTdlsCtx->pAdapter,
|
||||||
curr_peer,
|
curr_peer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
error_idle_return:
|
error_idle_return:
|
||||||
return;
|
return;
|
||||||
@@ -5794,8 +5800,9 @@ static void tdls_ct_process_connected_link(hddTdlsPeer_t *curr_peer,
|
|||||||
/* unlock the mutex here, it may used in caller function */
|
/* unlock the mutex here, it may used in caller function */
|
||||||
mutex_unlock(&hdd_ctx->tdls_lock);
|
mutex_unlock(&hdd_ctx->tdls_lock);
|
||||||
wlan_hdd_tdls_indicate_teardown(hdd_tdls_ctx->pAdapter,
|
wlan_hdd_tdls_indicate_teardown(hdd_tdls_ctx->pAdapter,
|
||||||
curr_peer,
|
curr_peer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
mutex_lock(&hdd_ctx->tdls_lock);
|
mutex_lock(&hdd_ctx->tdls_lock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -6106,7 +6113,8 @@ static int wlan_hdd_tdls_teardown_links(hdd_context_t *hddctx,
|
|||||||
wlan_hdd_tdls_indicate_teardown(
|
wlan_hdd_tdls_indicate_teardown(
|
||||||
curr_peer->pHddTdlsCtx->pAdapter,
|
curr_peer->pHddTdlsCtx->pAdapter,
|
||||||
curr_peer,
|
curr_peer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
|
||||||
|
true);
|
||||||
mutex_lock(&hddctx->tdls_lock);
|
mutex_lock(&hddctx->tdls_lock);
|
||||||
hddctx->tdls_teardown_peers_cnt++;
|
hddctx->tdls_teardown_peers_cnt++;
|
||||||
mutex_unlock(&hddctx->tdls_lock);
|
mutex_unlock(&hddctx->tdls_lock);
|
||||||
|
Reference in New Issue
Block a user