mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 00:24:41 -04:00
qcacld-3.0: Use hdd netdev notifier call for softAP interface
qcacld-2.0 to qcacld-3.0 propagation In softAP scenario, if any pending scan request is not serviced before NETDEV_GOING_DOWN is called, it results in call trace Handle this by using hdd netdev notifier call for softAP, where scan_block_work is flushed. Change-Id: I5de07103e0b0008f21c0a13add0eed36ea1b31d0 CRs-fixed: 2076542
This commit is contained in:
parent
45eb08feb9
commit
6bc52de881
1 changed files with 20 additions and 17 deletions
|
|
@ -590,29 +590,19 @@ static int __hdd_netdev_notifier_call(struct notifier_block *nb,
|
|||
#else
|
||||
struct net_device *dev = data;
|
||||
#endif
|
||||
struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
|
||||
struct hdd_adapter *adapter;
|
||||
struct hdd_context *hdd_ctx;
|
||||
|
||||
hdd_enter_dev(dev);
|
||||
|
||||
/* Make sure that this callback corresponds to our device. */
|
||||
if ((strncmp(dev->name, "wlan", 4)) && (strncmp(dev->name, "p2p", 3)))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if ((adapter->magic != WLAN_HDD_ADAPTER_MAGIC) ||
|
||||
(adapter->dev != dev)) {
|
||||
hdd_err("device adapter is not matching!!!");
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
if (!dev->ieee80211_ptr) {
|
||||
hdd_err("ieee80211_ptr is NULL!!!");
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
if (NULL == hdd_ctx) {
|
||||
hdd_err("HDD Context Null Pointer");
|
||||
hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
||||
if (!hdd_ctx) {
|
||||
hdd_err("HDD Context is Null");
|
||||
QDF_ASSERT(0);
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
|
@ -622,11 +612,24 @@ static int __hdd_netdev_notifier_call(struct notifier_block *nb,
|
|||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
if (cds_is_driver_recovering() || cds_is_driver_in_bad_state())
|
||||
/* Make sure that this callback corresponds to our device. */
|
||||
adapter = hdd_get_adapter_by_iface_name(hdd_ctx, dev->name);
|
||||
if (!adapter) {
|
||||
hdd_err("Couldn't find adapter for dev name %s", dev->name);
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
hdd_debug("%s New Net Device State = %lu",
|
||||
dev->name, state);
|
||||
if (adapter != WLAN_HDD_GET_PRIV_PTR(dev)) {
|
||||
hdd_err("HDD adapter mismatch!");
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
if (cds_is_driver_recovering() || cds_is_driver_in_bad_state()) {
|
||||
hdd_err("Driver is in recovery or bad state");
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
hdd_debug("%s New Net Device State = %lu", dev->name, state);
|
||||
|
||||
switch (state) {
|
||||
case NETDEV_REGISTER:
|
||||
|
|
|
|||
Loading…
Reference in a new issue