{
        struct ieee80211_local *local = wdev_priv(qd->dev->ieee80211_ptr);
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
-       unsigned short fc = le16_to_cpu(hdr->frame_control);
-       int qos;
 
-       /* see if frame is data or non data frame */
-       if (unlikely((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)) {
+       if (!ieee80211_is_data(hdr->frame_control)) {
                /* management frames go on AC_VO queue, but are sent
                * without QoS control fields */
                return 0;
                /* use AC from radiotap */
        }
 
-       /* is this a QoS frame? */
-       qos = fc & IEEE80211_STYPE_QOS_DATA;
-
-       if (!qos) {
+       if (!ieee80211_is_data_qos(hdr->frame_control)) {
                skb->priority = 0; /* required for correct WPA/11i MIC */
                return ieee802_1d_to_ac[skb->priority];
        }
        struct ieee80211_sched_data *q = qdisc_priv(qd);
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
-       unsigned short fc = le16_to_cpu(hdr->frame_control);
        struct Qdisc *qdisc;
        struct sta_info *sta;
        int err, queue;
 
        /* now we know the 1d priority, fill in the QoS header if there is one
         */
-       if (WLAN_FC_IS_QOS_DATA(fc)) {
-               u8 *p = skb->data + ieee80211_get_hdrlen(fc) - 2;
+       if (ieee80211_is_data_qos(hdr->frame_control)) {
+               u8 *p = ieee80211_get_qos_ctl(hdr);
                u8 ack_policy = 0;
                tid = skb->priority & QOS_CONTROL_TAG1D_MASK;
                if (local->wifi_wme_noack_test)
                        ack_policy |= QOS_CONTROL_ACK_POLICY_NOACK <<
                                        QOS_CONTROL_ACK_POLICY_SHIFT;
                /* qos header is 2 bytes, second reserved */
-               *p = ack_policy | tid;
-               p++;
+               *p++ = ack_policy | tid;
                *p = 0;
 
                rcu_read_lock();