qcacld-3.0: For host-invoked roaming to same AP, don't to send null frm

During host invoked roaming, set WMI_ROAM_INVOKE_FLAG_NO_NULL_FRAME_TO_AP
flag so that FW will not send NULL data frame while doing transition to
same bssid.

CRs-Fixed: 2046964
Change-Id: I043c3d2431e4da5af36fb710bd36a520550abbd3
This commit is contained in:
Krunal Soni 2017-06-01 14:36:17 -07:00 • committed by snandini
commit 332f4afc05
4 changed files with 17 additions and 3 deletions

View file

@ -802,10 +802,16 @@ void hdd_wma_send_fastreassoc_cmd(struct hdd_adapter *adapter,
const tSirMacAddr bssid, int channel)
{
hdd_wext_state_t *wext_state = WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
struct hdd_station_ctx *hdd_sta_ctx =
WLAN_HDD_GET_STATION_CTX_PTR(adapter);
tCsrRoamProfile *profile = &wext_state->roamProfile;
tSirMacAddr connected_bssid;
qdf_mem_copy(connected_bssid, hdd_sta_ctx->conn_info.bssId.bytes,
ETH_ALEN);
sme_fast_reassoc(WLAN_HDD_GET_HAL_CTX(adapter),
profile, bssid, channel, adapter->sessionId);
profile, bssid, channel, adapter->sessionId,
connected_bssid);
}
#endif

View file

@ -1488,12 +1488,13 @@ QDF_STATUS sme_get_beacon_frm(tHalHandle hal, tCsrRoamProfile *profile,
* @bssid: bssid to look for in scan cache
* @channel: channel on which reassoc should be send
* @vdev_id: vdev id
* @connected_bssid: bssid of currently connected profile
*
* Return: QDF_STATUS
*/
QDF_STATUS sme_fast_reassoc(tHalHandle hal, tCsrRoamProfile *profile,
const tSirMacAddr bssid, int channel,
uint8_t vdev_id);
uint8_t vdev_id, const tSirMacAddr connected_bssid);
/**
* sme_congestion_register_callback(): registers congestion callback

View file

@ -15663,7 +15663,7 @@ free_scan_flter:
QDF_STATUS sme_fast_reassoc(tHalHandle hal, tCsrRoamProfile *profile,
const tSirMacAddr bssid, int channel,
uint8_t vdev_id)
uint8_t vdev_id, const tSirMacAddr connected_bssid)
{
QDF_STATUS status;
struct wma_roam_invoke_cmd *fastreassoc;
@ -15674,6 +15674,11 @@ QDF_STATUS sme_fast_reassoc(tHalHandle hal, tCsrRoamProfile *profile,
sme_err("qdf_mem_malloc failed for fastreassoc");
return QDF_STATUS_E_NOMEM;
}
/* if both are same then set the flag */
if (!qdf_mem_cmp(connected_bssid, bssid, ETH_ALEN)) {
fastreassoc->is_same_bssid = true;
sme_debug("bssid same, bssid[%pM]", bssid);
}
fastreassoc->vdev_id = vdev_id;
fastreassoc->bssid[0] = bssid[0];
fastreassoc->bssid[1] = bssid[1];

View file

@ -2108,6 +2108,7 @@ typedef struct wma_unit_test_cmd {
* @channel: channel
* @frame_len: frame length, includs mac header, fixed params and ies
* @frame_buf: buffer contaning probe response or beacon
* @is_same_bssid: flag to indicate if roaming is requested for same bssid
*/
struct wma_roam_invoke_cmd {
uint32_t vdev_id;
@ -2115,6 +2116,7 @@ struct wma_roam_invoke_cmd {
uint32_t channel;
uint32_t frame_len;
uint8_t *frame_buf;
uint8_t is_same_bssid;
};
/**