]> err.no Git - linux-2.6/blobdiff - net/mac80211/wme.c
mac80211: move tx crypto decision
[linux-2.6] / net / mac80211 / wme.c
index d303229249e79541b5c975f93ca0dba46dd4ec8d..455fadc3d84e558d25c48536a20a1a0b1aea42b0 100644 (file)
@@ -55,7 +55,7 @@ static inline unsigned classify_1d(struct sk_buff *skb, struct Qdisc *qd)
 
        /* check there is a valid IP header present */
        offset = ieee80211_get_hdrlen_from_skb(skb) + 8 /* LLC + proto */;
-       if (skb->protocol != __constant_htons(ETH_P_IP) ||
+       if (skb->protocol != htons(ETH_P_IP) ||
            skb->len < offset + sizeof(*ip))
                return 0;
 
@@ -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? */
@@ -125,14 +119,13 @@ static inline int classify80211(struct sk_buff *skb, struct Qdisc *qd)
        }
 
        /* use the data classifier to determine what 802.1d tag the
-       * data frame has */
+        * data frame has */
        skb->priority = classify_1d(skb, qd);
 
-       /* incase we are a client verify acm is not set for this ac */
+       /* in case we are a client verify acm is not set for this ac */
        while (unlikely(local->wmm_acm & BIT(skb->priority))) {
                if (wme_downgrade_ac(skb)) {
-                       /* No AC with lower priority has acm=0,
-                       * drop packet. */
+                       /* No AC with lower priority has acm=0, drop packet. */
                        return -1;
                }
        }
@@ -534,7 +527,7 @@ static struct tcf_proto ** wme_classop_find_tcf(struct Qdisc *qd,
 
 /* this qdisc is classful (i.e. has classes, some of which may have leaf qdiscs attached)
  * - these are the operations on the classes */
-static struct Qdisc_class_ops class_ops =
+static const struct Qdisc_class_ops class_ops =
 {
        .graft = wme_classop_graft,
        .leaf = wme_classop_leaf,
@@ -554,7 +547,7 @@ static struct Qdisc_class_ops class_ops =
 
 
 /* queueing discipline operations */
-static struct Qdisc_ops wme_qdisc_ops =
+static struct Qdisc_ops wme_qdisc_ops __read_mostly =
 {
        .next = NULL,
        .cl_ops = &class_ops,