qtnfmac: do not track STA states in driver
authorSergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Fri, 5 Oct 2018 10:11:27 +0000 (10:11 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 5 Oct 2018 11:01:14 +0000 (14:01 +0300)
Remove STA connection states tracking from driver.
Leave it wireless core on host and to firmware.

Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
drivers/net/wireless/quantenna/qtnfmac/core.h
drivers/net/wireless/quantenna/qtnfmac/event.c

index 452d4b7..776cfba 100644 (file)
@@ -216,7 +216,6 @@ static struct wireless_dev *qtnf_add_virtual_intf(struct wiphy *wiphy,
                eth_zero_addr(vif->mac_addr);
                eth_zero_addr(vif->bssid);
                vif->bss_priority = QTNF_DEF_BSS_PRIORITY;
-               vif->sta_state = QTNF_STA_DISCONNECTED;
                memset(&vif->wdev, 0, sizeof(vif->wdev));
                vif->wdev.wiphy = wiphy;
                vif->wdev.iftype = type;
@@ -624,9 +623,6 @@ qtnf_connect(struct wiphy *wiphy, struct net_device *dev,
        if (vif->wdev.iftype != NL80211_IFTYPE_STATION)
                return -EOPNOTSUPP;
 
-       if (vif->sta_state != QTNF_STA_DISCONNECTED)
-               return -EBUSY;
-
        if (sme->bssid)
                ether_addr_copy(vif->bssid, sme->bssid);
        else
@@ -639,7 +635,6 @@ qtnf_connect(struct wiphy *wiphy, struct net_device *dev,
                return ret;
        }
 
-       vif->sta_state = QTNF_STA_CONNECTING;
        return 0;
 }
 
@@ -664,9 +659,6 @@ qtnf_disconnect(struct wiphy *wiphy, struct net_device *dev,
 
        qtnf_scan_done(mac, true);
 
-       if (vif->sta_state == QTNF_STA_DISCONNECTED)
-               goto out;
-
        ret = qtnf_cmd_send_disconnect(vif, reason_code);
        if (ret) {
                pr_err("VIF%u.%u: failed to disconnect\n", mac->macid,
@@ -675,9 +667,6 @@ qtnf_disconnect(struct wiphy *wiphy, struct net_device *dev,
        }
 
 out:
-       if (vif->sta_state == QTNF_STA_CONNECTING)
-               vif->sta_state = QTNF_STA_DISCONNECTED;
-
        return ret;
 }
 
@@ -1152,28 +1141,10 @@ void qtnf_virtual_intf_cleanup(struct net_device *ndev)
        struct qtnf_wmac *mac = wiphy_priv(vif->wdev.wiphy);
 
        if (vif->wdev.iftype == NL80211_IFTYPE_STATION) {
-               switch (vif->sta_state) {
-               case QTNF_STA_DISCONNECTED:
-                       break;
-               case QTNF_STA_CONNECTING:
-                       cfg80211_connect_result(vif->netdev,
-                                               vif->bssid, NULL, 0,
-                                               NULL, 0,
-                                               WLAN_STATUS_UNSPECIFIED_FAILURE,
-                                               GFP_KERNEL);
-                       qtnf_disconnect(vif->wdev.wiphy, ndev,
-                                       WLAN_REASON_DEAUTH_LEAVING);
-                       break;
-               case QTNF_STA_CONNECTED:
-                       cfg80211_disconnected(vif->netdev,
-                                             WLAN_REASON_DEAUTH_LEAVING,
-                                             NULL, 0, 1, GFP_KERNEL);
-                       qtnf_disconnect(vif->wdev.wiphy, ndev,
-                                       WLAN_REASON_DEAUTH_LEAVING);
-                       break;
-               }
-
-               vif->sta_state = QTNF_STA_DISCONNECTED;
+               cfg80211_disconnected(vif->netdev, WLAN_REASON_DEAUTH_LEAVING,
+                                     NULL, 0, 1, GFP_KERNEL);
+               qtnf_disconnect(vif->wdev.wiphy, ndev,
+                               WLAN_REASON_DEAUTH_LEAVING);
        }
 
        qtnf_scan_done(mac, true);
@@ -1181,27 +1152,11 @@ void qtnf_virtual_intf_cleanup(struct net_device *ndev)
 
 void qtnf_cfg80211_vif_reset(struct qtnf_vif *vif)
 {
-       if (vif->wdev.iftype == NL80211_IFTYPE_STATION) {
-               switch (vif->sta_state) {
-               case QTNF_STA_CONNECTING:
-                       cfg80211_connect_result(vif->netdev,
-                                               vif->bssid, NULL, 0,
-                                               NULL, 0,
-                                               WLAN_STATUS_UNSPECIFIED_FAILURE,
-                                               GFP_KERNEL);
-                       break;
-               case QTNF_STA_CONNECTED:
-                       cfg80211_disconnected(vif->netdev,
-                                             WLAN_REASON_DEAUTH_LEAVING,
-                                             NULL, 0, 1, GFP_KERNEL);
-                       break;
-               case QTNF_STA_DISCONNECTED:
-                       break;
-               }
-       }
+       if (vif->wdev.iftype == NL80211_IFTYPE_STATION)
+               cfg80211_disconnected(vif->netdev, WLAN_REASON_DEAUTH_LEAVING,
+                                     NULL, 0, 1, GFP_KERNEL);
 
        cfg80211_shutdown_all_interfaces(vif->wdev.wiphy);
-       vif->sta_state = QTNF_STA_DISCONNECTED;
 }
 
 void qtnf_band_init_rates(struct ieee80211_supported_band *band)
index a1e338a..1722aec 100644 (file)
@@ -64,12 +64,6 @@ struct qtnf_sta_list {
        atomic_t size;
 };
 
-enum qtnf_sta_state {
-       QTNF_STA_DISCONNECTED,
-       QTNF_STA_CONNECTING,
-       QTNF_STA_CONNECTED
-};
-
 struct qtnf_vif {
        struct wireless_dev wdev;
        u8 bssid[ETH_ALEN];
@@ -77,7 +71,6 @@ struct qtnf_vif {
        u8 vifid;
        u8 bss_priority;
        u8 bss_status;
-       enum qtnf_sta_state sta_state;
        u16 mgmt_frames_bitmask;
        struct net_device *netdev;
        struct qtnf_wmac *mac;
index 68da81b..8b542b4 100644 (file)
@@ -171,24 +171,14 @@ qtnf_event_handle_bss_join(struct qtnf_vif *vif,
                return -EPROTO;
        }
 
-       if (vif->sta_state != QTNF_STA_CONNECTING) {
-               pr_err("VIF%u.%u: BSS_JOIN event when STA is not connecting\n",
-                      vif->mac->macid, vif->vifid);
-               return -EPROTO;
-       }
-
        pr_debug("VIF%u.%u: BSSID:%pM\n", vif->mac->macid, vif->vifid,
                 join_info->bssid);
 
        cfg80211_connect_result(vif->netdev, join_info->bssid, NULL, 0, NULL,
                                0, le16_to_cpu(join_info->status), GFP_KERNEL);
 
-       if (le16_to_cpu(join_info->status) == WLAN_STATUS_SUCCESS) {
-               vif->sta_state = QTNF_STA_CONNECTED;
+       if (le16_to_cpu(join_info->status) == WLAN_STATUS_SUCCESS)
                netif_carrier_on(vif->netdev);
-       } else {
-               vif->sta_state = QTNF_STA_DISCONNECTED;
-       }
 
        return 0;
 }
@@ -211,16 +201,10 @@ qtnf_event_handle_bss_leave(struct qtnf_vif *vif,
                return -EPROTO;
        }
 
-       if (vif->sta_state != QTNF_STA_CONNECTED)
-               pr_warn("VIF%u.%u: BSS_LEAVE event when STA is not connected\n",
-                       vif->mac->macid, vif->vifid);
-
        pr_debug("VIF%u.%u: disconnected\n", vif->mac->macid, vif->vifid);
 
        cfg80211_disconnected(vif->netdev, le16_to_cpu(leave_info->reason),
                              NULL, 0, 0, GFP_KERNEL);
-
-       vif->sta_state = QTNF_STA_DISCONNECTED;
        netif_carrier_off(vif->netdev);
 
        return 0;