ath10k: don't create bssid peer for ibss
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>
Thu, 2 Oct 2014 11:56:40 +0000 (13:56 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 8 Oct 2014 10:21:06 +0000 (13:21 +0300)
It's not really necessary to create bssid peer for
bssid. Self-address peer is sufficient.

This prevents some firmware revisions from crashing.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/mac.c

index 4a061a7..1191857 100644 (file)
@@ -992,14 +992,6 @@ static void ath10k_control_ibss(struct ath10k_vif *arvif,
                if (is_zero_ether_addr(arvif->bssid))
                        return;
 
-               ret = ath10k_peer_delete(arvif->ar, arvif->vdev_id,
-                                        arvif->bssid);
-               if (ret) {
-                       ath10k_warn(ar, "failed to delete IBSS BSSID peer %pM for vdev %d: %d\n",
-                                   arvif->bssid, arvif->vdev_id, ret);
-                       return;
-               }
-
                memset(arvif->bssid, 0, ETH_ALEN);
 
                return;
@@ -3127,17 +3119,17 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
        if (changed & BSS_CHANGED_BSSID &&
            vif->type != NL80211_IFTYPE_AP) {
                if (!is_zero_ether_addr(info->bssid)) {
-                       ath10k_dbg(ar, ATH10K_DBG_MAC,
-                                  "mac vdev %d create peer %pM\n",
-                                  arvif->vdev_id, info->bssid);
-
-                       ret = ath10k_peer_create(ar, arvif->vdev_id,
-                                                info->bssid);
-                       if (ret)
-                               ath10k_warn(ar, "failed to add peer %pM for vdev %d when changing bssid: %i\n",
-                                           info->bssid, arvif->vdev_id, ret);
-
                        if (vif->type == NL80211_IFTYPE_STATION) {
+                               ath10k_dbg(ar, ATH10K_DBG_MAC,
+                                          "mac vdev %d create peer %pM\n",
+                                          arvif->vdev_id, info->bssid);
+
+                               ret = ath10k_peer_create(ar, arvif->vdev_id,
+                                                        info->bssid);
+                               if (ret)
+                                       ath10k_warn(ar, "failed to add peer %pM for vdev %d when changing bssid: %i\n",
+                                                   info->bssid, arvif->vdev_id,
+                                                   ret);
                                /*
                                 * this is never erased as we it for crypto key
                                 * clearing; this is FW requirement