qcacld-3.0: Fix assert for connect and roaming concurrency

In dual sta case, while vdev0 roaming,  vdev1 tried to connect and
stop vdev0 roam. in lim_process_assoc_rsp_frame,
lim_is_roam_synch_in_progress return false, hdr is parsed as invalid
addr, assert when access hdr->sa.

Change-Id: I917dc064dbca5600fe3586ec08103fa62a1348ee
CRs-Fixed: 3100427
Bu işleme şunda yer alıyor:
Jianmin Zhu
2021-12-27 14:16:57 +08:00
işlemeyi yapan: Madan Koyyalamudi
ebeveyn b82cc8dabf
işleme b93dab5a6c
2 değiştirilmiş dosya ile 6 ekleme ve 1 silme

Dosyayı Görüntüle

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -32,6 +33,7 @@
#include "wlan_vdev_mgr_utils_api.h" #include "wlan_vdev_mgr_utils_api.h"
#include "wni_api.h" #include "wni_api.h"
#include "wlan_mlme_vdev_mgr_interface.h" #include "wlan_mlme_vdev_mgr_interface.h"
#include "wlan_cm_api.h"
static void if_mgr_enable_roaming_on_vdev(struct wlan_objmgr_pdev *pdev, static void if_mgr_enable_roaming_on_vdev(struct wlan_objmgr_pdev *pdev,
void *object, void *arg) void *object, void *arg)
@@ -86,6 +88,7 @@ static void if_mgr_disable_roaming_on_vdev(struct wlan_objmgr_pdev *pdev,
if (curr_vdev_id != vdev_id && if (curr_vdev_id != vdev_id &&
wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE && wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE &&
!wlan_cm_is_vdev_roam_sync_inprogress(vdev) &&
vdev->vdev_mlme.mlme_state == WLAN_VDEV_S_UP) { vdev->vdev_mlme.mlme_state == WLAN_VDEV_S_UP) {
/* IFMGR Verification: Temporary call to sme_stop_roaming api, /* IFMGR Verification: Temporary call to sme_stop_roaming api,
* will be replaced by converged roaming api * will be replaced by converged roaming api

Dosyayı Görüntüle

@@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -34,6 +35,7 @@
#include "sir_debug.h" #include "sir_debug.h"
#include "lim_types.h" #include "lim_types.h"
#include "wlan_cm_api.h"
#define SIZE_OF_NOA_DESCRIPTOR 13 #define SIZE_OF_NOA_DESCRIPTOR 13
#define MAX_NOA_PERIOD_IN_MICROSECS 3000000 #define MAX_NOA_PERIOD_IN_MICROSECS 3000000
@@ -200,7 +202,7 @@ static inline QDF_STATUS lim_add_ft_sta_self(struct mac_context *mac,
static inline bool lim_is_roam_synch_in_progress(struct wlan_objmgr_psoc *psoc, static inline bool lim_is_roam_synch_in_progress(struct wlan_objmgr_psoc *psoc,
struct pe_session *pe_session) struct pe_session *pe_session)
{ {
return MLME_IS_ROAM_SYNCH_IN_PROGRESS(psoc, pe_session->vdev_id); return wlan_cm_is_vdev_roam_sync_inprogress(pe_session->vdev);
} }
#else #else
static inline bool lim_is_roam_synch_in_progress(struct wlan_objmgr_psoc *psoc, static inline bool lim_is_roam_synch_in_progress(struct wlan_objmgr_psoc *psoc,