]> err.no Git - linux-2.6/commitdiff
[MAC80211]: remove management interface
authorJohannes Berg <johannes@sipsolutions.net>
Fri, 28 Sep 2007 12:02:09 +0000 (14:02 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:54:15 +0000 (16:54 -0700)
Removes the management interface since it is only required
for hostapd/userspace MLME, will not be in the final tree
at least in this form and hostapd/userspace MLME currently
do not work against this tree anyway.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/mac80211.h
net/mac80211/ieee80211.c
net/mac80211/ieee80211_i.h
net/mac80211/ieee80211_iface.c
net/mac80211/ieee80211_rate.c
net/mac80211/ieee80211_rate.h
net/mac80211/ieee80211_sta.c
net/mac80211/rx.c
net/mac80211/tx.c
net/mac80211/wme.c

index bd72f59e98fdab7479d6a5253c4415ed26c764ff..c143ac8965dbce6726b0b329f3a258144567c380 100644 (file)
@@ -472,7 +472,6 @@ struct ieee80211_conf {
 enum ieee80211_if_types {
        IEEE80211_IF_TYPE_INVALID,
        IEEE80211_IF_TYPE_AP,
-       IEEE80211_IF_TYPE_MGMT,
        IEEE80211_IF_TYPE_STA,
        IEEE80211_IF_TYPE_IBSS,
        IEEE80211_IF_TYPE_MNTR,
index 373e8b728782fef63ad2241f5a4459f970d273e3..804da5e89bbf64a5987d1925634edca58142cde9 100644 (file)
@@ -24,7 +24,6 @@
 #include <net/net_namespace.h>
 #include <net/cfg80211.h>
 
-#include "ieee80211_common.h"
 #include "ieee80211_i.h"
 #include "ieee80211_rate.h"
 #include "wep.h"
@@ -123,151 +122,6 @@ static void ieee80211_master_set_multicast_list(struct net_device *dev)
        ieee80211_configure_filter(local);
 }
 
-/* management interface */
-
-static void
-ieee80211_fill_frame_info(struct ieee80211_local *local,
-                         struct ieee80211_frame_info *fi,
-                         struct ieee80211_rx_status *status)
-{
-       if (status) {
-               struct timespec ts;
-               struct ieee80211_rate *rate;
-
-               jiffies_to_timespec(jiffies, &ts);
-               fi->hosttime = cpu_to_be64((u64) ts.tv_sec * 1000000 +
-                                          ts.tv_nsec / 1000);
-               fi->mactime = cpu_to_be64(status->mactime);
-               switch (status->phymode) {
-               case MODE_IEEE80211A:
-                       fi->phytype = htonl(ieee80211_phytype_ofdm_dot11_a);
-                       break;
-               case MODE_IEEE80211B:
-                       fi->phytype = htonl(ieee80211_phytype_dsss_dot11_b);
-                       break;
-               case MODE_IEEE80211G:
-                       fi->phytype = htonl(ieee80211_phytype_pbcc_dot11_g);
-                       break;
-               default:
-                       fi->phytype = htonl(0xAAAAAAAA);
-                       break;
-               }
-               fi->channel = htonl(status->channel);
-               rate = ieee80211_get_rate(local, status->phymode,
-                                         status->rate);
-               if (rate) {
-                       fi->datarate = htonl(rate->rate);
-                       if (rate->flags & IEEE80211_RATE_PREAMBLE2) {
-                               if (status->rate == rate->val)
-                                       fi->preamble = htonl(2); /* long */
-                               else if (status->rate == rate->val2)
-                                       fi->preamble = htonl(1); /* short */
-                       } else
-                               fi->preamble = htonl(0);
-               } else {
-                       fi->datarate = htonl(0);
-                       fi->preamble = htonl(0);
-               }
-
-               fi->antenna = htonl(status->antenna);
-               fi->priority = htonl(0xffffffff); /* no clue */
-               fi->ssi_type = htonl(ieee80211_ssi_raw);
-               fi->ssi_signal = htonl(status->ssi);
-               fi->ssi_noise = 0x00000000;
-               fi->encoding = 0;
-       } else {
-               /* clear everything because we really don't know.
-                * the msg_type field isn't present on monitor frames
-                * so we don't know whether it will be present or not,
-                * but it's ok to not clear it since it'll be assigned
-                * anyway */
-               memset(fi, 0, sizeof(*fi) - sizeof(fi->msg_type));
-
-               fi->ssi_type = htonl(ieee80211_ssi_none);
-       }
-       fi->version = htonl(IEEE80211_FI_VERSION);
-       fi->length = cpu_to_be32(sizeof(*fi) - sizeof(fi->msg_type));
-}
-
-/* this routine is actually not just for this, but also
- * for pushing fake 'management' frames into userspace.
- * it shall be replaced by a netlink-based system. */
-void
-ieee80211_rx_mgmt(struct ieee80211_local *local, struct sk_buff *skb,
-                 struct ieee80211_rx_status *status, u32 msg_type)
-{
-       struct ieee80211_frame_info *fi;
-       const size_t hlen = sizeof(struct ieee80211_frame_info);
-       struct net_device *dev = local->apdev;
-
-       skb->dev = dev;
-
-       if (skb_headroom(skb) < hlen) {
-               I802_DEBUG_INC(local->rx_expand_skb_head);
-               if (pskb_expand_head(skb, hlen, 0, GFP_ATOMIC)) {
-                       dev_kfree_skb(skb);
-                       return;
-               }
-       }
-
-       fi = (struct ieee80211_frame_info *) skb_push(skb, hlen);
-
-       ieee80211_fill_frame_info(local, fi, status);
-       fi->msg_type = htonl(msg_type);
-
-       dev->stats.rx_packets++;
-       dev->stats.rx_bytes += skb->len;
-
-       skb_set_mac_header(skb, 0);
-       skb->ip_summed = CHECKSUM_UNNECESSARY;
-       skb->pkt_type = PACKET_OTHERHOST;
-       skb->protocol = htons(ETH_P_802_2);
-       memset(skb->cb, 0, sizeof(skb->cb));
-       netif_rx(skb);
-}
-
-static int ieee80211_mgmt_open(struct net_device *dev)
-{
-       struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
-
-       if (!netif_running(local->mdev))
-               return -EOPNOTSUPP;
-       return 0;
-}
-
-static int ieee80211_mgmt_stop(struct net_device *dev)
-{
-       return 0;
-}
-
-static int ieee80211_change_mtu_apdev(struct net_device *dev, int new_mtu)
-{
-       /* FIX: what would be proper limits for MTU?
-        * This interface uses 802.11 frames. */
-       if (new_mtu < 256 || new_mtu > IEEE80211_MAX_DATA_LEN) {
-               printk(KERN_WARNING "%s: invalid MTU %d\n",
-                      dev->name, new_mtu);
-               return -EINVAL;
-       }
-
-#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: setting MTU %d\n", dev->name, new_mtu);
-#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
-       dev->mtu = new_mtu;
-       return 0;
-}
-
-void ieee80211_if_mgmt_setup(struct net_device *dev)
-{
-       ether_setup(dev);
-       dev->hard_start_xmit = ieee80211_mgmt_start_xmit;
-       dev->change_mtu = ieee80211_change_mtu_apdev;
-       dev->open = ieee80211_mgmt_open;
-       dev->stop = ieee80211_mgmt_stop;
-       dev->type = ARPHRD_IEEE80211_PRISM;
-       dev->destructor = ieee80211_if_free;
-}
-
 /* regular interfaces */
 
 static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)
@@ -345,7 +199,6 @@ static int ieee80211_open(struct net_device *dev)
                        return -ENOLINK;
                break;
        case IEEE80211_IF_TYPE_AP:
-       case IEEE80211_IF_TYPE_MGMT:
        case IEEE80211_IF_TYPE_STA:
        case IEEE80211_IF_TYPE_MNTR:
        case IEEE80211_IF_TYPE_IBSS:
@@ -410,10 +263,6 @@ static int ieee80211_open(struct net_device *dev)
        if (local->open_count == 0) {
                res = dev_open(local->mdev);
                WARN_ON(res);
-               if (local->apdev) {
-                       res = dev_open(local->apdev);
-                       WARN_ON(res);
-               }
                tasklet_enable(&local->tx_pending_tasklet);
                tasklet_enable(&local->tasklet);
        }
@@ -499,9 +348,6 @@ static int ieee80211_stop(struct net_device *dev)
                if (netif_running(local->mdev))
                        dev_close(local->mdev);
 
-               if (local->apdev)
-                       dev_close(local->apdev);
-
                if (local->ops->stop)
                        local->ops->stop(local_to_hw(local));
 
@@ -550,7 +396,7 @@ static const struct header_ops ieee80211_header_ops = {
        .cache_update   = eth_header_cache_update,
 };
 
-/* Must not be called for mdev and apdev */
+/* Must not be called for mdev */
 void ieee80211_if_setup(struct net_device *dev)
 {
        ether_setup(dev);
@@ -806,8 +652,6 @@ static void ieee80211_remove_tx_extra(struct ieee80211_local *local,
                pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT;
        if (control->flags & IEEE80211_TXCTL_REQUEUE)
                pkt_data->flags |= IEEE80211_TXPD_REQUEUE;
-       if (control->type == IEEE80211_IF_TYPE_MGMT)
-               pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE;
        pkt_data->queue = control->queue;
 
        hdrlen = ieee80211_get_hdrlen_from_skb(skb);
@@ -860,7 +704,6 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb,
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
        struct ieee80211_local *local = hw_to_local(hw);
        u16 frag, type;
-       u32 msg_type;
        struct ieee80211_tx_status_rtap_hdr *rthdr;
        struct ieee80211_sub_if_data *sdata;
        int monitors;
@@ -975,29 +818,9 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb,
                        local->dot11FailedCount++;
        }
 
-       msg_type = (status->flags & IEEE80211_TX_STATUS_ACK) ?
-               ieee80211_msg_tx_callback_ack : ieee80211_msg_tx_callback_fail;
-
        /* this was a transmitted frame, but now we want to reuse it */
        skb_orphan(skb);
 
-       if ((status->control.flags & IEEE80211_TXCTL_REQ_TX_STATUS) &&
-           local->apdev) {
-               if (local->monitors) {
-                       skb2 = skb_clone(skb, GFP_ATOMIC);
-               } else {
-                       skb2 = skb;
-                       skb = NULL;
-               }
-
-               if (skb2)
-                       /* Send frame to hostapd */
-                       ieee80211_rx_mgmt(local, skb2, NULL, msg_type);
-
-               if (!skb)
-                       return;
-       }
-
        if (!local->monitors) {
                dev_kfree_skb(skb);
                return;
@@ -1344,8 +1167,6 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
        BUG_ON(local->reg_state != IEEE80211_DEV_REGISTERED);
 
        local->reg_state = IEEE80211_DEV_UNREGISTERED;
-       if (local->apdev)
-               ieee80211_if_del_mgmt(local);
 
        /*
         * At this point, interface list manipulations are fine
index 9e3c365e3f035b192d63ffa1832b50648b5a019e..d24b0574c4364a283fe8cbf7255deb995d76e887 100644 (file)
@@ -141,7 +141,6 @@ struct ieee80211_txrx_data {
                         * when using CTS protection with IEEE 802.11g. */
                        struct ieee80211_rate *last_frag_rate;
                        int last_frag_hwrate;
-                       int mgmt_interface;
 
                        /* Extra fragments (in addition to the first fragment
                         * in skb) */
@@ -163,7 +162,6 @@ struct ieee80211_txrx_data {
 #define IEEE80211_TXPD_REQ_TX_STATUS   BIT(0)
 #define IEEE80211_TXPD_DO_NOT_ENCRYPT  BIT(1)
 #define IEEE80211_TXPD_REQUEUE         BIT(2)
-#define IEEE80211_TXPD_MGMT_IFACE      BIT(3)
 /* Stored in sk_buff->cb */
 struct ieee80211_tx_packet_data {
        int ifindex;
@@ -408,7 +406,6 @@ struct ieee80211_local {
        struct list_head modes_list;
 
        struct net_device *mdev; /* wmaster# - "master" 802.11 device */
-       struct net_device *apdev; /* wlan#ap - management frames (hostapd) */
        int open_count;
        int monitors;
        unsigned int filter_flags; /* FIF_* */
@@ -704,14 +701,11 @@ static inline int ieee80211_bssid_match(const u8 *raddr, const u8 *addr)
 int ieee80211_hw_config(struct ieee80211_local *local);
 int ieee80211_if_config(struct net_device *dev);
 int ieee80211_if_config_beacon(struct net_device *dev);
-void ieee80211_rx_mgmt(struct ieee80211_local *local, struct sk_buff *skb,
-                      struct ieee80211_rx_status *status, u32 msg_type);
 void ieee80211_prepare_rates(struct ieee80211_local *local,
                             struct ieee80211_hw_mode *mode);
 void ieee80211_tx_set_iswep(struct ieee80211_txrx_data *tx);
 int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr);
 void ieee80211_if_setup(struct net_device *dev);
-void ieee80211_if_mgmt_setup(struct net_device *dev);
 struct ieee80211_rate *ieee80211_get_rate(struct ieee80211_local *local,
                                          int phymode, int hwrate);
 
@@ -778,8 +772,6 @@ void __ieee80211_if_del(struct ieee80211_local *local,
 int ieee80211_if_remove(struct net_device *dev, const char *name, int id);
 void ieee80211_if_free(struct net_device *dev);
 void ieee80211_if_sdata_init(struct ieee80211_sub_if_data *sdata);
-int ieee80211_if_add_mgmt(struct ieee80211_local *local);
-void ieee80211_if_del_mgmt(struct ieee80211_local *local);
 
 /* regdomain.c */
 void ieee80211_regdomain_init(void);
@@ -796,7 +788,6 @@ void ieee80211_tx_pending(unsigned long data);
 int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev);
 int ieee80211_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);
 int ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev);
-int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev);
 
 /* utility functions/constants */
 extern void *mac80211_wiphy_privid; /* for wiphy privid */
index ef618e947e2b27909e8de287859cbeee7050406c..be7e77f66fee53d012af7f3793d72541bb307517 100644 (file)
@@ -96,66 +96,6 @@ fail:
        return ret;
 }
 
-int ieee80211_if_add_mgmt(struct ieee80211_local *local)
-{
-       struct net_device *ndev;
-       struct ieee80211_sub_if_data *nsdata;
-       int ret;
-
-       ASSERT_RTNL();
-
-       ndev = alloc_netdev(sizeof(struct ieee80211_sub_if_data), "wmgmt%d",
-                           ieee80211_if_mgmt_setup);
-       if (!ndev)
-               return -ENOMEM;
-       ret = dev_alloc_name(ndev, ndev->name);
-       if (ret < 0)
-               goto fail;
-
-       memcpy(ndev->dev_addr, local->hw.wiphy->perm_addr, ETH_ALEN);
-       SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));
-
-       nsdata = IEEE80211_DEV_TO_SUB_IF(ndev);
-       ndev->ieee80211_ptr = &nsdata->wdev;
-       nsdata->wdev.wiphy = local->hw.wiphy;
-       nsdata->type = IEEE80211_IF_TYPE_MGMT;
-       nsdata->dev = ndev;
-       nsdata->local = local;
-       ieee80211_if_sdata_init(nsdata);
-
-       ret = register_netdevice(ndev);
-       if (ret)
-               goto fail;
-
-       /*
-        * Called even when register_netdevice fails, it would
-        * oops if assigned before initialising the rest.
-        */
-       ndev->uninit = ieee80211_if_reinit;
-
-       ieee80211_debugfs_add_netdev(nsdata);
-
-       if (local->open_count > 0)
-               dev_open(ndev);
-       local->apdev = ndev;
-       return 0;
-
-fail:
-       free_netdev(ndev);
-       return ret;
-}
-
-void ieee80211_if_del_mgmt(struct ieee80211_local *local)
-{
-       struct net_device *apdev;
-
-       ASSERT_RTNL();
-       apdev = local->apdev;
-       ieee80211_debugfs_remove_netdev(IEEE80211_DEV_TO_SUB_IF(apdev));
-       local->apdev = NULL;
-       unregister_netdevice(apdev);
-}
-
 void ieee80211_if_set_type(struct net_device *dev, int type)
 {
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
@@ -247,9 +187,6 @@ void ieee80211_if_reinit(struct net_device *dev)
                /* cannot happen */
                WARN_ON(1);
                break;
-       case IEEE80211_IF_TYPE_MGMT:
-               /* nothing to do */
-               break;
        case IEEE80211_IF_TYPE_AP: {
                /* Remove all virtual interfaces that use this BSS
                 * as their sdata->bss */
@@ -357,11 +294,8 @@ int ieee80211_if_remove(struct net_device *dev, const char *name, int id)
 
 void ieee80211_if_free(struct net_device *dev)
 {
-       struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
-       /* local->apdev must be NULL when freeing management interface */
-       BUG_ON(dev == local->apdev);
        ieee80211_if_sdata_deinit(sdata);
        free_netdev(dev);
 }
index 91a9fe2cbad935b453cc68d60ba73c2f4712df70..93abb8fff1410f254c9fb6adf04ad34823bc80a5 100644 (file)
@@ -145,8 +145,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
        struct rate_control_ref *ref, *old;
 
        ASSERT_RTNL();
-       if (local->open_count || netif_running(local->mdev) ||
-           (local->apdev && netif_running(local->apdev)))
+       if (local->open_count || netif_running(local->mdev))
                return -EBUSY;
 
        ref = rate_control_alloc(name, local);
index cac91a960ff4e1db5bda61e8a4de4706177bb9ec..7cd1ebab4f8345f4cdf008b17ecc134254c45c39 100644 (file)
@@ -30,8 +30,6 @@ struct rate_control_extra {
 
        /* parameters from the caller to rate_control_get_rate(): */
        struct ieee80211_hw_mode *mode;
-       int mgmt_data; /* this is data frame that is used for management
-                       * (e.g., IEEE 802.1X EAPOL) */
        u16 ethertype;
 };
 
index cf50a7bfb9707e2a12c259b8ba9927a074ca94d7..bd9d7aa740839d524d7371c4bad086c901744a2f 100644 (file)
@@ -473,8 +473,6 @@ static void ieee80211_sta_tx(struct net_device *dev, struct sk_buff *skb,
        pkt_data = (struct ieee80211_tx_packet_data *) skb->cb;
        memset(pkt_data, 0, sizeof(struct ieee80211_tx_packet_data));
        pkt_data->ifindex = sdata->dev->ifindex;
-       if (sdata->type == IEEE80211_IF_TYPE_MGMT)
-               pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE;
        if (!encrypt)
                pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT;
 
index b4a62fe3ccbd4045e4a1e95a3ce0d0d50616ad4d..7cd185e9dde4a70871755801489ed8054d7517a7 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "ieee80211_i.h"
 #include "ieee80211_led.h"
-#include "ieee80211_common.h"
 #include "wep.h"
 #include "wpa.h"
 #include "tkip.h"
@@ -412,12 +411,7 @@ ieee80211_rx_h_check(struct ieee80211_txrx_data *rx)
                        return TXRX_DROP;
                }
 
-               if (!rx->local->apdev)
-                       return TXRX_DROP;
-
-               ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
-                                 ieee80211_msg_sta_not_assoc);
-               return TXRX_QUEUED;
+               return TXRX_DROP;
        }
 
        return TXRX_CONTINUE;
@@ -983,15 +977,8 @@ ieee80211_rx_h_802_1x_pae(struct ieee80211_txrx_data *rx)
 {
        if (rx->sdata->eapol && ieee80211_is_eapol(rx->skb) &&
            rx->sdata->type != IEEE80211_IF_TYPE_STA &&
-           (rx->flags & IEEE80211_TXRXD_RXRA_MATCH)) {
-               /* Pass both encrypted and unencrypted EAPOL frames to user
-                * space for processing. */
-               if (!rx->local->apdev)
-                       return TXRX_DROP;
-               ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
-                                 ieee80211_msg_normal);
-               return TXRX_QUEUED;
-       }
+           (rx->flags & IEEE80211_TXRXD_RXRA_MATCH))
+               return TXRX_CONTINUE;
 
        if (unlikely(rx->sdata->ieee802_1x &&
                     (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
@@ -1233,15 +1220,11 @@ ieee80211_rx_h_mgmt(struct ieee80211_txrx_data *rx)
        sdata = IEEE80211_DEV_TO_SUB_IF(rx->dev);
        if ((sdata->type == IEEE80211_IF_TYPE_STA ||
             sdata->type == IEEE80211_IF_TYPE_IBSS) &&
-           !rx->local->user_space_mlme) {
+           !rx->local->user_space_mlme)
                ieee80211_sta_rx_mgmt(rx->dev, rx->skb, rx->u.rx.status);
-       } else {
-               /* Management frames are sent to hostapd for processing */
-               if (!rx->local->apdev)
-                       return TXRX_DROP;
-               ieee80211_rx_mgmt(rx->local, rx->skb, rx->u.rx.status,
-                                 ieee80211_msg_normal);
-       }
+       else
+               return TXRX_DROP;
+
        return TXRX_QUEUED;
 }
 
@@ -1454,7 +1437,6 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata,
                /* take everything */
                break;
        case IEEE80211_IF_TYPE_INVALID:
-       case IEEE80211_IF_TYPE_MGMT:
                /* should never get here */
                WARN_ON(1);
                break;
index 54e05392410d040b3a3112ba8297df0174b46306..8f0007a925a21189c0e0a4bfa99f1ba287c78dcc 100644 (file)
@@ -258,7 +258,7 @@ ieee80211_tx_h_check_assoc(struct ieee80211_txrx_data *tx)
                return TXRX_CONTINUE;
        }
 
-       if (unlikely(!tx->u.tx.mgmt_interface && tx->sdata->ieee802_1x &&
+       if (unlikely(/* !injected && */ tx->sdata->ieee802_1x &&
                     !(sta_flags & WLAN_STA_AUTHORIZED))) {
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
                DECLARE_MAC_BUF(mac);
@@ -570,8 +570,6 @@ ieee80211_tx_h_rate_ctrl(struct ieee80211_txrx_data *tx)
 
        memset(&extra, 0, sizeof(extra));
        extra.mode = tx->u.tx.mode;
-       extra.mgmt_data = tx->sdata &&
-               tx->sdata->type == IEEE80211_IF_TYPE_MGMT;
        extra.ethertype = tx->ethertype;
 
        tx->u.tx.rate = rate_control_get_rate(tx->local, tx->dev, tx->skb,
@@ -1069,7 +1067,7 @@ static int __ieee80211_tx(struct ieee80211_local *local, struct sk_buff *skb,
 }
 
 static int ieee80211_tx(struct net_device *dev, struct sk_buff *skb,
-                       struct ieee80211_tx_control *control, int mgmt)
+                       struct ieee80211_tx_control *control)
 {
        struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
        struct sta_info *sta;
@@ -1099,7 +1097,6 @@ static int ieee80211_tx(struct net_device *dev, struct sk_buff *skb,
        rcu_read_lock();
 
        sta = tx.sta;
-       tx.u.tx.mgmt_interface = mgmt;
        tx.u.tx.mode = local->hw.conf.mode;
 
        if (res_prepare == TXRX_QUEUED) { /* if it was an injected packet */
@@ -1250,8 +1247,7 @@ int ieee80211_master_start_xmit(struct sk_buff *skb,
                control.flags |= IEEE80211_TXCTL_REQUEUE;
        control.queue = pkt_data->queue;
 
-       ret = ieee80211_tx(odev, skb, &control,
-                          control.type == IEEE80211_IF_TYPE_MGMT);
+       ret = ieee80211_tx(odev, skb, &control);
        dev_put(odev);
 
        return ret;
@@ -1496,8 +1492,6 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
        pkt_data = (struct ieee80211_tx_packet_data *)skb->cb;
        memset(pkt_data, 0, sizeof(struct ieee80211_tx_packet_data));
        pkt_data->ifindex = dev->ifindex;
-       if (sdata->type == IEEE80211_IF_TYPE_MGMT)
-               pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE;
 
        skb->dev = local->mdev;
        dev->stats.tx_packets++;
@@ -1555,8 +1549,6 @@ int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev)
        pkt_data = (struct ieee80211_tx_packet_data *) skb->cb;
        memset(pkt_data, 0, sizeof(struct ieee80211_tx_packet_data));
        pkt_data->ifindex = sdata->dev->ifindex;
-       if (sdata->type == IEEE80211_IF_TYPE_MGMT)
-               pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE;
 
        skb->priority = 20; /* use hardcoded priority for mgmt TX queue */
        skb->dev = sdata->local->mdev;
index fcc8921722f428e4151c27a7d62c241f53390688..5b8a157975a35dd452bc6e03e17f5dafcae09788 100644 (file)
@@ -94,8 +94,6 @@ static inline int wme_downgrade_ac(struct sk_buff *skb)
 static inline int classify80211(struct sk_buff *skb, struct Qdisc *qd)
 {
        struct ieee80211_local *local = wdev_priv(qd->dev->ieee80211_ptr);
-       struct ieee80211_tx_packet_data *pkt_data =
-               (struct ieee80211_tx_packet_data *) skb->cb;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
        unsigned short fc = le16_to_cpu(hdr->frame_control);
        int qos;
@@ -108,12 +106,8 @@ static inline int classify80211(struct sk_buff *skb, struct Qdisc *qd)
                return IEEE80211_TX_QUEUE_DATA0;
        }
 
-       if (unlikely(pkt_data->flags & IEEE80211_TXPD_MGMT_IFACE)) {
-               /* Data frames from hostapd (mainly, EAPOL) use AC_VO
-               * and they will include QoS control fields if
-               * the target STA is using WME. */
-               skb->priority = 7;
-               return ieee802_1d_to_ac[skb->priority];
+       if (0 /* injected */) {
+               /* use AC from radiotap */
        }
 
        /* is this a QoS frame? */