wilc1000: add 'initialized' flag check before adding an element to TX queue
authorAjay Singh <ajay.kathat@microchip.com>
Thu, 16 Sep 2021 16:49:21 +0000 (16:49 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 21 Sep 2021 15:08:17 +0000 (18:08 +0300)
Add 'initialized' variable check before adding net/mgmt packet to TX queue
as safety check before passing the commands to the firmware.

Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210916164902.74629-10-ajay.kathat@microchip.com
drivers/net/wireless/microchip/wilc1000/cfg80211.c
drivers/net/wireless/microchip/wilc1000/wlan.c

index 91a471f..dc4bfe7 100644 (file)
@@ -728,6 +728,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,
 {
        struct wilc_vif *vif = netdev_priv(dev);
        struct wilc_priv *priv = &vif->priv;
+       struct wilc *wilc = vif->wilc;
        u32 i = 0;
        u32 associatedsta = ~0;
        u32 inactive_time = 0;
@@ -754,6 +755,9 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,
        } else if (vif->iftype == WILC_STATION_MODE) {
                struct rf_info stats;
 
+               if (!wilc->initialized)
+                       return -EBUSY;
+
                wilc_get_statistics(vif, &stats);
 
                sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL) |
index de5287c..ea81ef1 100644 (file)
@@ -427,6 +427,11 @@ int wilc_wlan_txq_add_net_pkt(struct net_device *dev,
                return 0;
        }
 
+       if (!wilc->initialized) {
+               tx_complete_fn(tx_data, 0);
+               return 0;
+       }
+
        tqe = kmalloc(sizeof(*tqe), GFP_ATOMIC);
 
        if (!tqe) {
@@ -476,6 +481,10 @@ int wilc_wlan_txq_add_mgmt_pkt(struct net_device *dev, void *priv, u8 *buffer,
                return 0;
        }
 
+       if (!wilc->initialized) {
+               tx_complete_fn(priv, 0);
+               return 0;
+       }
        tqe = kmalloc(sizeof(*tqe), GFP_ATOMIC);
 
        if (!tqe) {