mac80211: Make use of ieee80211_is_* functions in tx status path
authorHelmut Schaa <helmut.schaa@googlemail.com>
Thu, 8 Dec 2011 12:11:55 +0000 (13:11 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 13 Dec 2011 20:30:46 +0000 (15:30 -0500)
Use ieee80211_is_data, ieee80211_is_mgmt and ieee80211_is_first_frag
in the tx status path. This makes the code easier to read and allows us
to remove two local variables: frag and type.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/status.c

index 46222ce0e5b12c7625a3271b3b996ac3b179c88b..30c265c98f73ccb190a0d642977f33d53298650f 100644 (file)
@@ -340,7 +340,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);
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
-       u16 frag, type;
        __le16 fc;
        struct ieee80211_supported_band *sband;
        struct ieee80211_sub_if_data *sdata;
@@ -476,12 +475,8 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
         * Fragments are passed to low-level drivers as separate skbs, so these
         * are actually fragments, not frames. Update frame counters only for
         * the first fragment of the frame. */
-
-       frag = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG;
-       type = le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE;
-
        if (info->flags & IEEE80211_TX_STAT_ACK) {
-               if (frag == 0) {
+               if (ieee80211_is_first_frag(hdr->seq_ctrl)) {
                        local->dot11TransmittedFrameCount++;
                        if (is_multicast_ether_addr(hdr->addr1))
                                local->dot11MulticastTransmittedFrameCount++;
@@ -496,11 +491,11 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
                 * with a multicast address in the address 1 field of type Data
                 * or Management. */
                if (!is_multicast_ether_addr(hdr->addr1) ||
-                   type == IEEE80211_FTYPE_DATA ||
-                   type == IEEE80211_FTYPE_MGMT)
+                   ieee80211_is_data(fc) ||
+                   ieee80211_is_mgmt(fc))
                        local->dot11TransmittedFragmentCount++;
        } else {
-               if (frag == 0)
+               if (ieee80211_is_first_frag(hdr->seq_ctrl))
                        local->dot11FailedCount++;
        }
 
@@ -572,7 +567,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
 
        /* Need to make a copy before skb->cb gets cleared */
        send_to_cooked = !!(info->flags & IEEE80211_TX_CTL_INJECTED) ||
-                       (type != IEEE80211_FTYPE_DATA);
+                        !(ieee80211_is_data(fc));
 
        /*
         * This is a bit racy but we can avoid a lot of work