tizen: Use unique directory prefix for baselibs packages
[platform/kernel/linux-rpi.git] / net / mac80211 / driver-ops.h
index 45d3e53..2bc2fbe 100644 (file)
@@ -2,7 +2,7 @@
 /*
 * Portions of this file
 * Copyright(c) 2016 Intel Deutschland GmbH
-* Copyright (C) 2018 - 2019, 2021 Intel Corporation
+* Copyright (C) 2018 - 2019, 2021 - 2023 Intel Corporation
 */
 
 #ifndef __MAC80211_DRIVER_OPS
 #include "trace.h"
 
 #define check_sdata_in_driver(sdata)   ({                                      \
-       !WARN_ONCE(!(sdata->flags & IEEE80211_SDATA_IN_DRIVER),                 \
-                  "%s: Failed check-sdata-in-driver check, flags: 0x%x\n",     \
-                  sdata->dev ? sdata->dev->name : sdata->name, sdata->flags);  \
+       WARN_ONCE(!sdata->local->reconfig_failure &&                            \
+                 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER),                  \
+                 "%s: Failed check-sdata-in-driver check, flags: 0x%x\n",      \
+                 sdata->dev ? sdata->dev->name : sdata->name, sdata->flags);   \
+       !!(sdata->flags & IEEE80211_SDATA_IN_DRIVER);                           \
 })
 
 static inline struct ieee80211_sub_if_data *
 get_bss_sdata(struct ieee80211_sub_if_data *sdata)
 {
-       if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+       if (sdata && sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
                sdata = container_of(sdata->bss, struct ieee80211_sub_if_data,
                                     u.ap);
 
@@ -636,10 +638,13 @@ static inline void drv_flush(struct ieee80211_local *local,
                             struct ieee80211_sub_if_data *sdata,
                             u32 queues, bool drop)
 {
-       struct ieee80211_vif *vif = sdata ? &sdata->vif : NULL;
+       struct ieee80211_vif *vif;
 
        might_sleep();
 
+       sdata = get_bss_sdata(sdata);
+       vif = sdata ? &sdata->vif : NULL;
+
        if (sdata && !check_sdata_in_driver(sdata))
                return;
 
@@ -655,6 +660,8 @@ static inline void drv_flush_sta(struct ieee80211_local *local,
 {
        might_sleep();
 
+       sdata = get_bss_sdata(sdata);
+
        if (sdata && !check_sdata_in_driver(sdata))
                return;