qcacld-3.0: Define wma_is_vdev_in_beaconning_mode

Define wma_is_vdev_in_beaconning_mode to remove in function ifdefs.
Remove conditional compilation arround wma_is_vdev_in_ibss_mode calls.

Change-Id: I4b047d05088b5cbe51fa49818634fdd3a78e6b68
CRs-Fixed: 935297
This commit is contained in:
Houston Hoffman 2015-10-06 12:01:08 -07:00 • committed by Akash Patel
commit 79b4af2999
4 changed files with 71 additions and 40 deletions

View file

@ -463,8 +463,38 @@ bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, uint8_t vdev_id);
#ifdef QCA_IBSS_SUPPORT
bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
#else
/**
* wma_is_vdev_in_ibss_mode(): dummy function
* @wma: wma handle
* @vdev_id: vdev id
*
* Return false since no vdev can be in ibss mode without ibss support
*/
static inline
bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
{
return false;
}
#endif
/**
* wma_is_vdev_in_beaconning_mode() - check if vdev is in a beaconning mode
* @wma: wma handle
* @vdev_id: vdev id
*
* Helper function to know whether given vdev id
* is in a beaconning mode or not.
*
* Return: True if vdev needs to beacon.
*/
static inline
bool wma_is_vdev_in_beaconning_mode(tp_wma_handle wma, uint8_t vdev_id)
{
return wma_is_vdev_in_ap_mode(wma, vdev_id) ||
wma_is_vdev_in_ibss_mode(wma, vdev_id);
}
/**
* wma_find_bssid_by_vdev_id() - Get the BSS ID corresponding to the vdev ID
* @wma - wma handle

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -153,7 +153,6 @@ bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id)
}
#endif /* QCA_IBSS_SUPPORT */
/**
* wma_find_vdev_by_bssid() - Get the corresponding vdev_id from BSSID
* @wma - wma handle
@ -1078,13 +1077,11 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
wmi_unified_peer_flush_tids_send(wma->wmi_handle, bssid,
peer_tid_bitmap, vdev_id);
#if defined(QCA_IBSS_SUPPORT)
if ((peer) && (wma_is_vdev_in_ibss_mode(wma, vdev_id))) {
WMA_LOGD("%s: bssid %pM peer->mac_addr %pM", __func__,
bssid, peer->mac_addr.raw);
peer_addr = peer->mac_addr.raw;
}
#endif /* QCA_IBSS_SUPPORT */
wmi_unified_peer_delete_send(wma->wmi_handle, peer_addr, vdev_id);
#undef PEER_ALL_TID_BITMASK
@ -1179,7 +1176,6 @@ CDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
WMA_LOGE("%s: Created peer with peer_addr %pM vdev_id %d, peer_count - %d",
__func__, peer_addr, vdev_id, wma->interfaces[vdev_id].peer_count);
#ifdef QCA_IBSS_SUPPORT
/* for each remote ibss peer, clear its keys */
if (wma_is_vdev_in_ibss_mode(wma, vdev_id) &&
!cdf_mem_compare(peer_addr, vdev->mac_addr.raw,
@ -1196,7 +1192,6 @@ CDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
wma_set_stakey(wma, &key_info);
}
#endif /* QCA_IBSS_SUPPORT */
return CDF_STATUS_SUCCESS;
err:
@ -1289,7 +1284,22 @@ static void wma_delete_all_ibss_peers(tp_wma_handle wma, A_UINT32 vdev_id)
wma_remove_peer(wma, wma->interfaces[vdev_id].bssid, vdev_id, peer,
false);
}
#else
/**
* wma_delete_all_ibss_peers(): dummy function for when ibss is not supported
* @wma: wma handle
* @vdev_id: vdev id
*
* This function send peer delete command to fw for all
* peers in peer_list and remove ref count for peer id
* peer will actually remove from list after receving
* unmap event from firmware.
*
* Return: none
*/
static void wma_delete_all_ibss_peers(tp_wma_handle wma, A_UINT32 vdev_id)
{
}
#endif /* QCA_IBSS_SUPPORT */
/**
@ -1405,6 +1415,20 @@ static void wma_recreate_ibss_vdev_and_bss_peer(tp_wma_handle wma,
WMA_LOGA("IBSS BSS peer created with mac %pM",
vdev->mac_addr.raw);
}
#else
/**
* wma_recreate_ibss_vdev_and_bss_peer() - dummy function
* @wma: wma handle
* @vdev_id: vdev id
*
* Dummy for when IBSS not supported
*
* Return: none
*/
static void wma_recreate_ibss_vdev_and_bss_peer(tp_wma_handle wma,
uint8_t vdev_id)
{
}
#endif /* QCA_IBSS_SUPPORT */
/**
@ -1568,11 +1592,9 @@ int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
status = -EINVAL;
goto free_req_msg;
}
#ifdef QCA_IBSS_SUPPORT
if (wma_is_vdev_in_ibss_mode(wma, resp_event->vdev_id))
wma_delete_all_ibss_peers(wma, resp_event->vdev_id);
else
#endif /* QCA_IBSS_SUPPORT */
{
if (wma_is_vdev_in_ap_mode(wma, resp_event->vdev_id)) {
wma_delete_all_ap_remote_peers(wma,
@ -1619,12 +1641,12 @@ int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
cdf_mem_free(bcn);
wma->interfaces[resp_event->vdev_id].beacon = NULL;
}
#ifdef QCA_IBSS_SUPPORT
/* recreate ibss vdev and bss peer for scan purpose */
if (wma_is_vdev_in_ibss_mode(wma, resp_event->vdev_id))
wma_recreate_ibss_vdev_and_bss_peer(wma,
resp_event->vdev_id);
#endif /* QCA_IBSS_SUPPORT */
/* Timeout status means its WMA generated DEL BSS REQ when ADD
* BSS REQ was timed out to stop the VDEV in this case no need
* to send response to UMAC
@ -2472,11 +2494,9 @@ void wma_vdev_resp_timer(void *data)
cdf_mc_timer_stop(&tgt_req->event_timeout);
goto free_tgt_req;
}
#ifdef QCA_IBSS_SUPPORT
if (wma_is_vdev_in_ibss_mode(wma, tgt_req->vdev_id))
wma_delete_all_ibss_peers(wma, tgt_req->vdev_id);
else
#endif /* QCA_IBSS_SUPPORT */
{
if (wma_is_vdev_in_ap_mode(wma, tgt_req->vdev_id)) {
wma_delete_all_ap_remote_peers(wma,
@ -2522,12 +2542,12 @@ void wma_vdev_resp_timer(void *data)
cdf_mem_free(bcn);
wma->interfaces[tgt_req->vdev_id].beacon = NULL;
}
#ifdef QCA_IBSS_SUPPORT
/* recreate ibss vdev and bss peer for scan purpose */
if (wma_is_vdev_in_ibss_mode(wma, tgt_req->vdev_id))
wma_recreate_ibss_vdev_and_bss_peer(wma,
tgt_req->vdev_id);
#endif /* QCA_IBSS_SUPPORT */
params->status = CDF_STATUS_E_TIMEOUT;
WMA_LOGA("%s: WMA_DELETE_BSS_REQ timedout", __func__);
wma_send_msg(wma, WMA_DELETE_BSS_RSP, (void *)params, 0);
@ -4221,19 +4241,16 @@ void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta)
if (wma_is_vdev_in_ap_mode(wma, add_sta->smesessionId))
oper_mode = BSS_OPERATIONAL_MODE_AP;
#ifdef QCA_IBSS_SUPPORT
else if (wma_is_vdev_in_ibss_mode(wma, add_sta->smesessionId))
oper_mode = BSS_OPERATIONAL_MODE_IBSS;
#endif
switch (oper_mode) {
case BSS_OPERATIONAL_MODE_STA:
wma_add_sta_req_sta_mode(wma, add_sta);
break;
#ifdef QCA_IBSS_SUPPORT
case BSS_OPERATIONAL_MODE_IBSS: /* IBSS should share the same code as AP mode */
#endif
/* IBSS should share the same code as AP mode */
case BSS_OPERATIONAL_MODE_IBSS:
case BSS_OPERATIONAL_MODE_AP:
hif_vote_link_up();
wma_add_sta_req_ap_mode(wma, add_sta);
@ -4263,21 +4280,17 @@ void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta)
if (wma_is_vdev_in_ap_mode(wma, smesession_id))
oper_mode = BSS_OPERATIONAL_MODE_AP;
#ifdef QCA_IBSS_SUPPORT
if (wma_is_vdev_in_ibss_mode(wma, smesession_id)) {
oper_mode = BSS_OPERATIONAL_MODE_IBSS;
WMA_LOGD("%s: to delete sta for IBSS mode", __func__);
}
#endif
switch (oper_mode) {
case BSS_OPERATIONAL_MODE_STA:
wma_delete_sta_req_sta_mode(wma, del_sta);
break;
#ifdef QCA_IBSS_SUPPORT
case BSS_OPERATIONAL_MODE_IBSS: /* IBSS shares AP code */
#endif
case BSS_OPERATIONAL_MODE_AP:
hif_vote_link_down();
wma_delete_sta_req_ap_mode(wma, del_sta);
@ -4353,15 +4366,13 @@ void wma_delete_bss(tp_wma_handle wma, tpDeleteBssParams params)
WMA_LOGE("%s:Unable to get TXRX context", __func__);
goto out;
}
#ifdef QCA_IBSS_SUPPORT
if (wma_is_vdev_in_ibss_mode(wma, params->smesessionId))
/* in rome ibss case, self mac is used to create the bss peer */
peer = ol_txrx_find_peer_by_addr(pdev,
wma->interfaces[params->smesessionId].addr,
&peer_id);
else
#endif
peer = ol_txrx_find_peer_by_addr(pdev, params->bssid, &peer_id);
peer = ol_txrx_find_peer_by_addr(pdev, params->bssid, &peer_id);
if (!peer) {
WMA_LOGP("%s: Failed to find peer %pM", __func__,

View file

@ -3391,12 +3391,7 @@ void wma_register_wow_default_patterns(WMA_HANDLE handle, uint8_t vdev_id)
iface = &wma->interfaces[vdev_id];
if (iface->ptrn_match_enable) {
if (wma_is_vdev_in_ap_mode(wma, vdev_id)
#ifdef QCA_IBSS_SUPPORT
||
wma_is_vdev_in_ibss_mode(wma, vdev_id)
#endif
) {
if (wma_is_vdev_in_beaconning_mode(wma, vdev_id)) {
/* Configure SAP/GO/IBSS mode default wow patterns */
WMA_LOGI("Config SAP specific default wow patterns vdev_id %d",
vdev_id);
@ -3985,10 +3980,7 @@ CDF_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info)
* 4) Is Extscan in progress in any one of vdev ?
*/
for (i = 0; i < wma->max_bssid; i++) {
if ((wma_is_vdev_in_ap_mode(wma, i)
#ifdef QCA_IBSS_SUPPORT
|| wma_is_vdev_in_ibss_mode(wma, i)
#endif /* QCA_IBSS_SUPPORT */
if ((wma_is_vdev_in_beaconning_mode(wma, i)
) && wma->interfaces[i].vdev_up &&
WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap,
WMI_SERVICE_BEACON_OFFLOAD)) {

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -954,9 +954,7 @@ int32_t wmi_unified_send_peer_assoc(tp_wma_handle wma,
* be the new peer address
*/
if ((wma_is_vdev_in_ap_mode(wma, params->smesessionId))
#ifdef QCA_IBSS_SUPPORT
|| (wma_is_vdev_in_ibss_mode(wma, params->smesessionId))
#endif /* QCA_IBSS_SUPPORT */
#ifdef FEATURE_WLAN_TDLS
|| (STA_ENTRY_TDLS_PEER == params->staType)
#endif /* FEATURE_WLAN_TDLS */