Share same hw_feature definitions between hostapd and wpa_supplicant
authorJouni Malinen <jouni.malinen@atheros.com>
Fri, 3 Apr 2009 16:04:20 +0000 (19:04 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 3 Apr 2009 16:04:20 +0000 (19:04 +0300)
hostapd/config.h
hostapd/hw_features.c
hostapd/hw_features.h
src/common/defs.h
src/drivers/driver.h
src/drivers/driver_test.c
wpa_supplicant/driver_i.h
wpa_supplicant/mlme.c
wpa_supplicant/mlme.h
wpa_supplicant/wpa_supplicant.c
wpa_supplicant/wpa_supplicant_i.h

index 6f53c3f..6d41740 100644 (file)
@@ -312,14 +312,6 @@ struct hostapd_bss_config {
 };
 
 
-typedef enum {
-       HOSTAPD_MODE_IEEE80211B,
-       HOSTAPD_MODE_IEEE80211G,
-       HOSTAPD_MODE_IEEE80211A,
-       NUM_HOSTAPD_MODES
-} hostapd_hw_mode;
-
-
 /**
  * struct hostapd_config - Per-radio interface configuration
  */
index 843fb0c..79d785f 100644 (file)
@@ -513,7 +513,7 @@ int hostapd_select_hw_mode(struct hostapd_iface *iface)
        iface->current_mode = NULL;
        for (i = 0; i < iface->num_hw_features; i++) {
                struct hostapd_hw_modes *mode = &iface->hw_features[i];
-               if (mode->mode == (int) iface->conf->hw_mode) {
+               if (mode->mode == iface->conf->hw_mode) {
                        iface->current_mode = mode;
                        break;
                }
index 0871eba..8a3f282 100644 (file)
 #ifndef HW_FEATURES_H
 #define HW_FEATURES_H
 
-#define HOSTAPD_CHAN_DISABLED 0x00000001
-#define HOSTAPD_CHAN_PASSIVE_SCAN 0x00000002
-#define HOSTAPD_CHAN_NO_IBSS 0x00000004
-#define HOSTAPD_CHAN_RADAR 0x00000008
-
-struct hostapd_channel_data {
-       short chan; /* channel number (IEEE 802.11) */
-       short freq; /* frequency in MHz */
-       int flag; /* flag for hostapd use (HOSTAPD_CHAN_*) */
-       u8 max_tx_power; /* maximum transmit power in dBm */
-};
-
-#define HOSTAPD_RATE_ERP 0x00000001
-#define HOSTAPD_RATE_BASIC 0x00000002
-#define HOSTAPD_RATE_PREAMBLE2 0x00000004
-#define HOSTAPD_RATE_SUPPORTED 0x00000010
-#define HOSTAPD_RATE_OFDM 0x00000020
-#define HOSTAPD_RATE_CCK 0x00000040
-#define HOSTAPD_RATE_MANDATORY 0x00000100
-
-struct hostapd_rate_data {
-       int rate; /* rate in 100 kbps */
-       int flags; /* HOSTAPD_RATE_ flags */
-};
-
-struct hostapd_hw_modes {
-       int mode;
-       int num_channels;
-       struct hostapd_channel_data *channels;
-       int num_rates;
-       struct hostapd_rate_data *rates;
-       u16 ht_capab;
-};
-
-
 #ifdef NEED_MLME
 void hostapd_free_hw_features(struct hostapd_hw_modes *hw_features,
                              size_t num_hw_features);
index d7cfe65..cb78ff3 100644 (file)
@@ -213,4 +213,48 @@ enum mfp_options {
        IEEE80211W_REQUIRED = 2
 };
 
+
+/* Hardware features */
+
+#define HOSTAPD_CHAN_DISABLED 0x00000001
+#define HOSTAPD_CHAN_PASSIVE_SCAN 0x00000002
+#define HOSTAPD_CHAN_NO_IBSS 0x00000004
+#define HOSTAPD_CHAN_RADAR 0x00000008
+
+struct hostapd_channel_data {
+       short chan; /* channel number (IEEE 802.11) */
+       short freq; /* frequency in MHz */
+       int flag; /* flag for hostapd use (HOSTAPD_CHAN_*) */
+       u8 max_tx_power; /* maximum transmit power in dBm */
+};
+
+#define HOSTAPD_RATE_ERP 0x00000001
+#define HOSTAPD_RATE_BASIC 0x00000002
+#define HOSTAPD_RATE_PREAMBLE2 0x00000004
+#define HOSTAPD_RATE_SUPPORTED 0x00000010
+#define HOSTAPD_RATE_OFDM 0x00000020
+#define HOSTAPD_RATE_CCK 0x00000040
+#define HOSTAPD_RATE_MANDATORY 0x00000100
+
+struct hostapd_rate_data {
+       int rate; /* rate in 100 kbps */
+       int flags; /* HOSTAPD_RATE_ flags */
+};
+
+typedef enum {
+       HOSTAPD_MODE_IEEE80211B,
+       HOSTAPD_MODE_IEEE80211G,
+       HOSTAPD_MODE_IEEE80211A,
+       NUM_HOSTAPD_MODES
+} hostapd_hw_mode;
+
+struct hostapd_hw_modes {
+       hostapd_hw_mode mode;
+       int num_channels;
+       struct hostapd_channel_data *channels;
+       int num_rates;
+       struct hostapd_rate_data *rates;
+       u16 ht_capab;
+};
+
 #endif /* DEFS_H */
index 21d5bd5..ce83a3d 100644 (file)
@@ -411,45 +411,6 @@ struct wpa_driver_capa {
 };
 
 
-#define WPA_CHAN_W_SCAN 0x00000001
-#define WPA_CHAN_W_ACTIVE_SCAN 0x00000002
-#define WPA_CHAN_W_IBSS 0x00000004
-
-struct wpa_channel_data {
-       short chan; /* channel number (IEEE 802.11) */
-       short freq; /* frequency in MHz */
-       int flag; /* flag for user space use (WPA_CHAN_*) */
-};
-
-#define WPA_RATE_ERP 0x00000001
-#define WPA_RATE_BASIC 0x00000002
-#define WPA_RATE_PREAMBLE2 0x00000004
-#define WPA_RATE_SUPPORTED 0x00000010
-#define WPA_RATE_OFDM 0x00000020
-#define WPA_RATE_CCK 0x00000040
-#define WPA_RATE_MANDATORY 0x00000100
-
-struct wpa_rate_data {
-       int rate; /* rate in 100 kbps */
-       int flags; /* WPA_RATE_ flags */
-};
-
-typedef enum {
-       WPA_MODE_IEEE80211B,
-       WPA_MODE_IEEE80211G,
-       WPA_MODE_IEEE80211A,
-       NUM_WPA_MODES
-} wpa_hw_mode;
-
-struct wpa_hw_modes {
-       wpa_hw_mode mode;
-       int num_channels;
-       struct wpa_channel_data *channels;
-       int num_rates;
-       struct wpa_rate_data *rates;
-};
-
-
 struct ieee80211_rx_status {
         int channel;
         int ssi;
@@ -910,14 +871,14 @@ struct wpa_driver_ops {
         * This function is only needed for drivers that export MLME
         * (management frame processing) to wpa_supplicant.
         */
-       struct wpa_hw_modes * (*get_hw_feature_data)(void *priv,
-                                                    u16 *num_modes,
-                                                    u16 *flags);
+       struct hostapd_hw_modes * (*get_hw_feature_data)(void *priv,
+                                                        u16 *num_modes,
+                                                        u16 *flags);
 
        /**
         * set_channel - Set channel
         * @priv: Private driver interface data
-        * @phymode: WPA_MODE_IEEE80211B, ..
+        * @phymode: HOSTAPD_MODE_IEEE80211B, ..
         * @chan: IEEE 802.11 channel number
         * @freq: Frequency of the channel in MHz
         * Returns: 0 on success, -1 on failure
@@ -925,7 +886,7 @@ struct wpa_driver_ops {
         * This function is only needed for drivers that export MLME
         * (management frame processing) to wpa_supplicant.
         */
-       int (*set_channel)(void *priv, wpa_hw_mode phymode, int chan,
+       int (*set_channel)(void *priv, hostapd_hw_mode phymode, int chan,
                           int freq);
 
        /**
@@ -1524,7 +1485,7 @@ void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
 
 void wpa_supplicant_sta_rx(void *ctx, const u8 *buf, size_t len,
                           struct ieee80211_rx_status *rx_status);
-void wpa_supplicant_sta_free_hw_features(struct wpa_hw_modes *hw_features,
+void wpa_supplicant_sta_free_hw_features(struct hostapd_hw_modes *hw_features,
                                         size_t num_hw_features);
 
 const u8 * wpa_scan_get_ie(const struct wpa_scan_res *res, u8 ie);
index 4c38122..1b1a5cb 100644 (file)
@@ -1047,37 +1047,37 @@ static int wpa_driver_test_mlme_setprotection(void *priv, const u8 *addr,
 
 
 #ifdef CONFIG_CLIENT_MLME
-static struct wpa_hw_modes *
+static struct hostapd_hw_modes *
 wpa_driver_test_get_hw_feature_data(void *priv, u16 *num_modes, u16 *flags)
 {
-       struct wpa_hw_modes *modes;
+       struct hostapd_hw_modes *modes;
 
        *num_modes = 1;
        *flags = 0;
-       modes = os_zalloc(*num_modes * sizeof(struct wpa_hw_modes));
+       modes = os_zalloc(*num_modes * sizeof(struct hostapd_hw_modes));
        if (modes == NULL)
                return NULL;
-       modes[0].mode = WPA_MODE_IEEE80211G;
+       modes[0].mode = HOSTAPD_MODE_IEEE80211G;
        modes[0].num_channels = 1;
        modes[0].num_rates = 1;
-       modes[0].channels = os_zalloc(sizeof(struct wpa_channel_data));
-       modes[0].rates = os_zalloc(sizeof(struct wpa_rate_data));
+       modes[0].channels = os_zalloc(sizeof(struct hostapd_channel_data));
+       modes[0].rates = os_zalloc(sizeof(struct hostapd_rate_data));
        if (modes[0].channels == NULL || modes[0].rates == NULL) {
                wpa_supplicant_sta_free_hw_features(modes, *num_modes);
                return NULL;
        }
        modes[0].channels[0].chan = 1;
        modes[0].channels[0].freq = 2412;
-       modes[0].channels[0].flag = WPA_CHAN_W_SCAN | WPA_CHAN_W_ACTIVE_SCAN;
+       modes[0].channels[0].flag = 0;
        modes[0].rates[0].rate = 10;
-       modes[0].rates[0].flags = WPA_RATE_BASIC | WPA_RATE_SUPPORTED |
-               WPA_RATE_CCK | WPA_RATE_MANDATORY;
+       modes[0].rates[0].flags = HOSTAPD_RATE_BASIC | HOSTAPD_RATE_SUPPORTED |
+               HOSTAPD_RATE_CCK | HOSTAPD_RATE_MANDATORY;
 
        return modes;
 }
 
 
-static int wpa_driver_test_set_channel(void *priv, wpa_hw_mode phymode,
+static int wpa_driver_test_set_channel(void *priv, hostapd_hw_mode phymode,
                                       int chan, int freq)
 {
        wpa_printf(MSG_DEBUG, "%s: phymode=%d chan=%d freq=%d",
index 4d1446f..409c733 100644 (file)
@@ -275,7 +275,7 @@ static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s,
        return 0;
 }
 
-static inline struct wpa_hw_modes *
+static inline struct hostapd_hw_modes *
 wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
                            u16 *flags)
 {
@@ -286,7 +286,7 @@ wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
 }
 
 static inline int wpa_drv_set_channel(struct wpa_supplicant *wpa_s,
-                                     wpa_hw_mode phymode, int chan,
+                                     hostapd_hw_mode phymode, int chan,
                                      int freq)
 {
        if (wpa_s->driver->set_channel)
index d45c147..e894c46 100644 (file)
@@ -98,11 +98,11 @@ static void ieee80211_build_tspec(struct wpabuf *buf);
 
 
 static int ieee80211_sta_set_channel(struct wpa_supplicant *wpa_s,
-                                    wpa_hw_mode phymode, int chan,
+                                    hostapd_hw_mode phymode, int chan,
                                     int freq)
 {
        size_t i;
-       struct wpa_hw_modes *mode;
+       struct hostapd_hw_modes *mode;
 
        for (i = 0; i < wpa_s->mlme.num_modes; i++) {
                mode = &wpa_s->mlme.modes[i];
@@ -339,7 +339,7 @@ static void ieee80211_send_assoc(struct wpa_supplicant *wpa_s)
        blen = 0;
 
        capab = wpa_s->mlme.capab;
-       if (wpa_s->mlme.phymode == WPA_MODE_IEEE80211G) {
+       if (wpa_s->mlme.phymode == HOSTAPD_MODE_IEEE80211G) {
                capab |= WLAN_CAPABILITY_SHORT_SLOT_TIME |
                        WLAN_CAPABILITY_SHORT_PREAMBLE;
        }
@@ -670,7 +670,7 @@ static void ieee80211_send_probe_req(struct wpa_supplicant *wpa_s,
        supp_rates[0] = WLAN_EID_SUPP_RATES;
        supp_rates[1] = 0;
        for (i = 0; i < wpa_s->mlme.num_curr_rates; i++) {
-               struct wpa_rate_data *rate = &wpa_s->mlme.curr_rates[i];
+               struct hostapd_rate_data *rate = &wpa_s->mlme.curr_rates[i];
                if (esupp_rates) {
                        pos = buf + len;
                        len++;
@@ -1600,8 +1600,8 @@ static void ieee80211_bss_info(struct wpa_supplicant *wpa_s,
        bss->channel = channel;
        bss->freq = wpa_s->mlme.freq;
        if (channel != wpa_s->mlme.channel &&
-           (wpa_s->mlme.phymode == WPA_MODE_IEEE80211G ||
-            wpa_s->mlme.phymode == WPA_MODE_IEEE80211B) &&
+           (wpa_s->mlme.phymode == HOSTAPD_MODE_IEEE80211G ||
+            wpa_s->mlme.phymode == HOSTAPD_MODE_IEEE80211B) &&
            channel >= 1 && channel <= 14) {
                static const int freq_list[] = {
                        2412, 2417, 2422, 2427, 2432, 2437, 2442,
@@ -2692,14 +2692,14 @@ static int ieee80211_active_scan(struct wpa_supplicant *wpa_s)
        int c;
 
        for (m = 0; m < wpa_s->mlme.num_modes; m++) {
-               struct wpa_hw_modes *mode = &wpa_s->mlme.modes[m];
+               struct hostapd_hw_modes *mode = &wpa_s->mlme.modes[m];
                if ((int) mode->mode != (int) wpa_s->mlme.phymode)
                        continue;
                for (c = 0; c < mode->num_channels; c++) {
-                       struct wpa_channel_data *chan = &mode->channels[c];
-                       if (chan->flag & WPA_CHAN_W_SCAN &&
+                       struct hostapd_channel_data *chan = &mode->channels[c];
+                       if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
                            chan->chan == wpa_s->mlme.channel) {
-                               if (chan->flag & WPA_CHAN_W_ACTIVE_SCAN)
+                               if (!(chan->flag & HOSTAPD_CHAN_PASSIVE_SCAN))
                                        return 1;
                                break;
                        }
@@ -2713,8 +2713,8 @@ static int ieee80211_active_scan(struct wpa_supplicant *wpa_s)
 static void ieee80211_sta_scan_timer(void *eloop_ctx, void *timeout_ctx)
 {
        struct wpa_supplicant *wpa_s = eloop_ctx;
-       struct wpa_hw_modes *mode;
-       struct wpa_channel_data *chan;
+       struct hostapd_hw_modes *mode;
+       struct hostapd_channel_data *chan;
        int skip = 0;
        int timeout = 0;
        struct wpa_ssid *ssid = wpa_s->current_ssid;
@@ -2753,10 +2753,10 @@ static void ieee80211_sta_scan_timer(void *eloop_ctx, void *timeout_ctx)
                }
                skip = !(wpa_s->mlme.hw_modes & (1 << mode->mode));
                chan = &mode->channels[wpa_s->mlme.scan_channel_idx];
-               if (!(chan->flag & WPA_CHAN_W_SCAN) ||
-                   (adhoc && !(chan->flag & WPA_CHAN_W_IBSS)) ||
-                   (wpa_s->mlme.hw_modes & (1 << WPA_MODE_IEEE80211G) &&
-                    mode->mode == WPA_MODE_IEEE80211B &&
+               if ((chan->flag & HOSTAPD_CHAN_DISABLED) ||
+                   (adhoc && (chan->flag & HOSTAPD_CHAN_NO_IBSS)) ||
+                   (wpa_s->mlme.hw_modes & (1 << HOSTAPD_MODE_IEEE80211G) &&
+                    mode->mode == HOSTAPD_MODE_IEEE80211B &&
                     wpa_s->mlme.scan_skip_11b))
                        skip = 1;
 
@@ -3019,7 +3019,7 @@ void ieee80211_sta_rx(struct wpa_supplicant *wpa_s, const u8 *buf, size_t len,
 }
 
 
-void ieee80211_sta_free_hw_features(struct wpa_hw_modes *hw_features,
+void ieee80211_sta_free_hw_features(struct hostapd_hw_modes *hw_features,
                                    size_t num_hw_features)
 {
        size_t i;
@@ -3050,9 +3050,9 @@ int ieee80211_sta_init(struct wpa_supplicant *wpa_s)
 
        wpa_s->mlme.num_modes = num_modes;
 
-       wpa_s->mlme.hw_modes = 1 << WPA_MODE_IEEE80211A;
-       wpa_s->mlme.hw_modes |= 1 << WPA_MODE_IEEE80211B;
-       wpa_s->mlme.hw_modes |= 1 << WPA_MODE_IEEE80211G;
+       wpa_s->mlme.hw_modes = 1 << HOSTAPD_MODE_IEEE80211A;
+       wpa_s->mlme.hw_modes |= 1 << HOSTAPD_MODE_IEEE80211B;
+       wpa_s->mlme.hw_modes |= 1 << HOSTAPD_MODE_IEEE80211G;
 
        wpa_s->mlme.wmm_enabled = 1;
 
index cc58a5b..f1c8aba 100644 (file)
@@ -31,7 +31,7 @@ int ieee80211_sta_associate(struct wpa_supplicant *wpa_s,
                            struct wpa_driver_associate_params *params);
 int ieee80211_sta_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid,
                           size_t *len);
-void ieee80211_sta_free_hw_features(struct wpa_hw_modes *hw_features,
+void ieee80211_sta_free_hw_features(struct hostapd_hw_modes *hw_features,
                                    size_t num_hw_features);
 void ieee80211_sta_rx(struct wpa_supplicant *wpa_s, const u8 *buf, size_t len,
                      struct ieee80211_rx_status *rx_status);
index bdeca29..716635f 100644 (file)
@@ -1631,7 +1631,7 @@ void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
 }
 
 
-void wpa_supplicant_sta_free_hw_features(struct wpa_hw_modes *hw_features,
+void wpa_supplicant_sta_free_hw_features(struct hostapd_hw_modes *hw_features,
                                         size_t num_hw_features)
 {
        ieee80211_sta_free_hw_features(hw_features, num_hw_features);
index 74838c9..8d131fc 100644 (file)
@@ -248,13 +248,13 @@ struct wpa_client_mlme {
 
        int cts_protect_erp_frames;
 
-       int phymode; /* current mode; WPA_MODE_IEEE80211A, .. */
-       struct wpa_hw_modes *modes;
+       hostapd_hw_mode phymode; /* current mode */
+       struct hostapd_hw_modes *modes;
        size_t num_modes;
        unsigned int hw_modes; /* bitfield of allowed hardware modes;
-                               * (1 << MODE_*) */
+                               * (1 << HOSTAPD_MODE_*) */
        int num_curr_rates;
-       struct wpa_rate_data *curr_rates;
+       struct hostapd_rate_data *curr_rates;
        int freq; /* The current frequency in MHz */
        int channel; /* The current IEEE 802.11 channel number */