OSDN Git Service

qtnfmac: do not initialize per-MAC data multiple times
authorIgor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Fri, 5 Oct 2018 10:11:31 +0000 (10:11 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 5 Oct 2018 11:01:17 +0000 (14:01 +0300)
Several members of pwr-MAC structure are re-initialized several times
together with per-VIF initialization. Fix that and simplify the code.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/quantenna/qtnfmac/core.c

index 19abbc4..aaa218e 100644 (file)
@@ -370,6 +370,7 @@ static void qtnf_mac_scan_timeout(struct work_struct *work)
 static struct qtnf_wmac *qtnf_core_mac_alloc(struct qtnf_bus *bus,
                                             unsigned int macid)
 {
+       struct qtnf_vif *vif;
        struct wiphy *wiphy;
        struct qtnf_wmac *mac;
        unsigned int i;
@@ -382,18 +383,20 @@ static struct qtnf_wmac *qtnf_core_mac_alloc(struct qtnf_bus *bus,
 
        mac->macid = macid;
        mac->bus = bus;
+       mutex_init(&mac->mac_lock);
+       INIT_DELAYED_WORK(&mac->scan_timeout, qtnf_mac_scan_timeout);
 
        for (i = 0; i < QTNF_MAX_INTF; i++) {
-               memset(&mac->iflist[i], 0, sizeof(struct qtnf_vif));
-               mac->iflist[i].wdev.iftype = NL80211_IFTYPE_UNSPECIFIED;
-               mac->iflist[i].mac = mac;
-               mac->iflist[i].vifid = i;
-               qtnf_sta_list_init(&mac->iflist[i].sta_list);
-               mutex_init(&mac->mac_lock);
-               INIT_DELAYED_WORK(&mac->scan_timeout, qtnf_mac_scan_timeout);
-               mac->iflist[i].stats64 =
-                       netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
-               if (!mac->iflist[i].stats64)
+               vif = &mac->iflist[i];
+
+               memset(vif, 0, sizeof(*vif));
+               vif->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED;
+               vif->mac = mac;
+               vif->vifid = i;
+               qtnf_sta_list_init(&vif->sta_list);
+
+               vif->stats64 = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
+               if (!vif->stats64)
                        pr_warn("VIF%u.%u: per cpu stats allocation failed\n",
                                macid, i);
        }