Add an error message if a unique BSSID is requested but the hardware does not support...
authormentor <mentor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Tue, 24 Jun 2008 03:09:25 +0000 (03:09 +0000)
committermentor <mentor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Tue, 24 Jun 2008 03:09:25 +0000 (03:09 +0000)
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3745 0192ed92-7a03-0410-a25b-9323aeb14dbd

ath/if_ath.c

index 49c3daf57840398a9aacfbe4c84cab0c9188bab8..819f48ab0be9036140944314faa7fe3deca3c8c7 100644 (file)
@@ -1301,30 +1301,31 @@ ath_vap_create(struct ieee80211com *ic, const char *name,
                /* Use RadioTAP interface type for monitor mode. */
                dev->type = ARPHRD_IEEE80211_RADIOTAP;
 
-       if ((flags & IEEE80211_CLONE_BSSID) && sc->sc_hasbmask) {
-               struct ieee80211vap *v;
-               uint64_t id_mask;
-               unsigned int id;
-
-               /*
-                * Hardware supports the bssid mask and a unique
-                * bssid was requested.  Assign a new mac address
-                * and expand our bssid mask to cover the active
-                * virtual APs with distinct addresses.
-                */
-
-               /* do a full search to mark all the allocated VAPs */
-               id_mask = 0;
-               TAILQ_FOREACH(v, &ic->ic_vaps, iv_next)
-                       id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr));
-
-               for (id = 1; id < ath_maxvaps; id++) {
-                       /* get the first available slot */
-                       if ((id_mask & (1 << id)) == 0) {
-                               ATH_SET_VAP_BSSID(vap->iv_myaddr, id);
-                               ATH_SET_VAP_BSSID(vap->iv_bssid, id);
-                               break;
+       if (flags & IEEE80211_CLONE_BSSID) {
+               if (sc->sc_hasbmask) {
+                       struct ieee80211vap *v;
+                       uint64_t id_mask = 0;
+                       unsigned int id;
+
+                       /* Hardware supports the BSSID mask and a unique
+                        * BSSID was requested.  Assign a new MAC address
+                        * and expand our BSSID mask to cover the active
+                        * virtual APs with distinct addresses. */
+                       /* Do a full search to mark all the allocated VAPs. */
+                       TAILQ_FOREACH(v, &ic->ic_vaps, iv_next)
+                               id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr));
+
+                       for (id = 1; id < ath_maxvaps; id++) {
+                               /* Get the first available slot. */
+                               if ((id_mask & (1 << id)) == 0) {
+                                       ATH_SET_VAP_BSSID(vap->iv_myaddr, id);
+                                       ATH_SET_VAP_BSSID(vap->iv_bssid, id);
+                                       break;
+                               }
                        }
+               } else {
+                       EPRINTF(sc, "Unique BSSID requested on HW that does"
+                               "does not support the necessary features.");
                }
        }
        avp->av_bslot = -1;