
When the SSR and interface down happen in parallel, the driver rejects the interface down since the recovery is in progress. Kernel ignores the -EAGAIN request from the driver and as part of NET_DOWN notification in cfg80211_netdown_notifer the kernel invokes the ___cfg80211_scan_done to free the request but doesn't not send scan_result indication, since it expects the scan_done work to get scheduled and then broadcast the request to upperlayer. The scan done checks currently only if the interface is up replace it with driver specific internal driver state. Change-Id: I0e5ac319783b9c1a69e7e19674f76f20da1d1590 CRs-Fixed: 3202812
76 lines
2.3 KiB
C
76 lines
2.3 KiB
C
/*
|
|
* Copyright (c) 2016-2017,2020-2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
* above copyright notice and this permission notice appear in all
|
|
* copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
|
|
#ifndef _WLAN_OSIF_PRIV_H_
|
|
#define _WLAN_OSIF_PRIV_H_
|
|
|
|
#include "qdf_net_if.h"
|
|
#include "wlan_cm_public_struct.h"
|
|
#include <qca_vendor.h>
|
|
|
|
struct osif_scan_pdev;
|
|
struct osif_tdls_vdev;
|
|
|
|
/**
|
|
* struct pdev_osif_priv - OS private structure
|
|
* @wiphy: wiphy handle
|
|
* @legacy_osif_priv: legacy osif private handle
|
|
* @scan_priv: Scan related data used by cfg80211 scan
|
|
* @nif: pdev net device
|
|
* @osif_check_netdev_state: check driver internal netdev state
|
|
*/
|
|
struct pdev_osif_priv {
|
|
struct wiphy *wiphy;
|
|
void *legacy_osif_priv;
|
|
struct osif_scan_pdev *osif_scan;
|
|
struct qdf_net_if *nif;
|
|
int (*osif_check_netdev_state)(struct net_device *netdev);
|
|
};
|
|
|
|
/**
|
|
* struct osif_cm_info - osif connection manager info
|
|
* @last_source: Last command request source
|
|
* @last_id: Last command from connection manager
|
|
* @cmd_id_lock: lock to update and read last command source
|
|
* @ext_priv: legacy data pointer.
|
|
*/
|
|
struct osif_cm_info {
|
|
enum wlan_cm_source last_source;
|
|
wlan_cm_id last_id;
|
|
struct qdf_spinlock cmd_id_lock;
|
|
void *ext_priv;
|
|
};
|
|
|
|
/**
|
|
* struct vdev_osif_priv - OS private structure of vdev
|
|
* @wdev: wireless device handle
|
|
* @legacy_osif_priv: legacy osif private handle
|
|
* @osif_tdls: osif tdls info
|
|
* @cm_info: osif connection manager info
|
|
*/
|
|
struct vdev_osif_priv {
|
|
struct wireless_dev *wdev;
|
|
void *legacy_osif_priv;
|
|
struct osif_tdls_vdev *osif_tdls;
|
|
struct osif_cm_info cm_info;
|
|
};
|
|
|
|
#endif
|