Author: avos
Date: Fri Apr 29 22:43:11 2016
New Revision: 298822
URL: https://svnweb.freebsd.org/changeset/base/298822

Log:
  wpi: convert to ieee80211_add_channel() (mostly noop).
  
  Tested with Intel 3945BG, STA / HOSTAP modes.

Modified:
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c   Fri Apr 29 22:42:59 2016        (r298821)
+++ head/sys/dev/wpi/if_wpi.c   Fri Apr 29 22:43:11 2016        (r298822)
@@ -1412,9 +1412,18 @@ wpi_read_eeprom_band(struct wpi_softc *s
 {
        struct wpi_eeprom_chan *channels = sc->eeprom_channels[n];
        const struct wpi_chan_band *band = &wpi_bands[n];
-       struct ieee80211_channel *c;
        uint32_t nflags;
+       uint8_t bands[IEEE80211_MODE_BYTES];
        uint8_t chan, i;
+       int error;
+
+       memset(bands, 0, sizeof(bands));
+
+       if (n == 0) {
+               setbit(bands, IEEE80211_MODE_11B);
+               setbit(bands, IEEE80211_MODE_11G);
+       } else
+               setbit(bands, IEEE80211_MODE_11A);
 
        for (i = 0; i < band->nchan; i++) {
                if (!(channels[i].flags & WPI_EEPROM_CHAN_VALID)) {
@@ -1424,45 +1433,19 @@ wpi_read_eeprom_band(struct wpi_softc *s
                        continue;
                }
 
-               if (*nchans >= maxchans)
-                       break;
-
                chan = band->chan[i];
                nflags = wpi_eeprom_channel_flags(&channels[i]);
-
-               c = &chans[(*nchans)++];
-               c->ic_ieee = chan;
-               c->ic_maxregpower = channels[i].maxpwr;
-               c->ic_maxpower = 2*c->ic_maxregpower;
-
-               if (n == 0) {   /* 2GHz band */
-                       c->ic_freq = ieee80211_ieee2mhz(chan,
-                           IEEE80211_CHAN_G);
-
-                       /* G =>'s B is supported */
-                       c->ic_flags = IEEE80211_CHAN_B | nflags;
-
-                       if (*nchans >= maxchans)
-                               break;
-
-                       c = &chans[(*nchans)++];
-                       c[0] = c[-1];
-                       c->ic_flags = IEEE80211_CHAN_G | nflags;
-               } else {        /* 5GHz band */
-                       c->ic_freq = ieee80211_ieee2mhz(chan,
-                           IEEE80211_CHAN_A);
-
-                       c->ic_flags = IEEE80211_CHAN_A | nflags;
-               }
+               error = ieee80211_add_channel(chans, maxchans, nchans,
+                   chan, 0, channels[i].maxpwr, nflags, bands);
+               if (error != 0)
+                       break;
 
                /* Save maximum allowed TX power for this channel. */
                sc->maxpwr[chan] = channels[i].maxpwr;
 
                DPRINTF(sc, WPI_DEBUG_EEPROM,
-                   "adding chan %d (%dMHz) flags=0x%x maxpwr=%d passive=%d,"
-                   " offset %d\n", chan, c->ic_freq,
-                   channels[i].flags, sc->maxpwr[chan],
-                   IEEE80211_IS_CHAN_PASSIVE(c), *nchans);
+                   "adding chan %d flags=0x%x maxpwr=%d, offset %d\n",
+                   chan, channels[i].flags, sc->maxpwr[chan], *nchans);
        }
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to