cleanup MTD option handling
[openwrt.git] / package / madwifi / patches / 370-wdsvap.patch
index f72e22f..d689737 100644 (file)
@@ -77,7 +77,7 @@
                rfilt |= HAL_RX_FILTER_BEACON;
        if (sc->sc_nmonvaps > 0)
                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON |
                rfilt |= HAL_RX_FILTER_BEACON;
        if (sc->sc_nmonvaps > 0)
                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON |
-@@ -9030,8 +9031,6 @@ ath_calibrate(unsigned long arg)
+@@ -9032,8 +9033,6 @@ ath_calibrate(unsigned long arg)
                 * set sc->beacons if we might need to restart
                   * them after ath_reset. */
                if (!sc->sc_beacons &&
                 * set sc->beacons if we might need to restart
                   * them after ath_reset. */
                if (!sc->sc_beacons &&
 +                               (vap->iv_opmode == IEEE80211_M_WDS)) &&
 +                              (scan.capinfo & IEEE80211_CAPINFO_ESS))) {
 +                      struct ieee80211vap *avp = NULL;
 +                               (vap->iv_opmode == IEEE80211_M_WDS)) &&
 +                              (scan.capinfo & IEEE80211_CAPINFO_ESS))) {
 +                      struct ieee80211vap *avp = NULL;
++                      int found = 0;
 +
 +                      IEEE80211_LOCK_IRQ(vap->iv_ic);
 +                      if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
 +
 +                      IEEE80211_LOCK_IRQ(vap->iv_ic);
 +                      if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
-+                              int found = 0;
-+
 +                              TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) {
 +                                      if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) {
 +                                              if (avp->iv_state != IEEE80211_S_RUN)
 +                              TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) {
 +                                      if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) {
 +                                              if (avp->iv_state != IEEE80211_S_RUN)
 +                                              break;
 +                                      }
 +                              }
 +                                              break;
 +                                      }
 +                              }
-+                              if (!found)
-+                                      break;
-+
-+                              ni = ni_or_null = avp->iv_wdsnode;
++                              if (found)
++                                      ni = ni_or_null = avp->iv_wdsnode;
 +                      } else if (vap->iv_opmode == IEEE80211_M_WDS) {
 +                      } else if (vap->iv_opmode == IEEE80211_M_WDS) {
++                              found = 1;
 +                              ni = ni_or_null = vap->iv_wdsnode;
 +                      }
 +                      IEEE80211_UNLOCK_IRQ(vap->iv_ic);
 +
 +                              ni = ni_or_null = vap->iv_wdsnode;
 +                      }
 +                      IEEE80211_UNLOCK_IRQ(vap->iv_ic);
 +
++                      if (!found)
++                              break;
 +
                        if (ni_or_null == NULL) {
 -                              /* Create a new entry in the neighbor table. */
 +
                        if (ni_or_null == NULL) {
 -                              /* Create a new entry in the neighbor table. */
This page took 0.026645 seconds and 4 git commands to generate.