mac80211: Make use of ieee80211_is_* functions in tx status path
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>
This commit is contained in:
parent
8cb25e14fe
commit
adf5ace5d8
1 changed files with 5 additions and 10 deletions
|
@ -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_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
||||||
struct ieee80211_local *local = hw_to_local(hw);
|
struct ieee80211_local *local = hw_to_local(hw);
|
||||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||||
u16 frag, type;
|
|
||||||
__le16 fc;
|
__le16 fc;
|
||||||
struct ieee80211_supported_band *sband;
|
struct ieee80211_supported_band *sband;
|
||||||
struct ieee80211_sub_if_data *sdata;
|
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
|
* Fragments are passed to low-level drivers as separate skbs, so these
|
||||||
* are actually fragments, not frames. Update frame counters only for
|
* are actually fragments, not frames. Update frame counters only for
|
||||||
* the first fragment of the frame. */
|
* 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 (info->flags & IEEE80211_TX_STAT_ACK) {
|
||||||
if (frag == 0) {
|
if (ieee80211_is_first_frag(hdr->seq_ctrl)) {
|
||||||
local->dot11TransmittedFrameCount++;
|
local->dot11TransmittedFrameCount++;
|
||||||
if (is_multicast_ether_addr(hdr->addr1))
|
if (is_multicast_ether_addr(hdr->addr1))
|
||||||
local->dot11MulticastTransmittedFrameCount++;
|
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
|
* with a multicast address in the address 1 field of type Data
|
||||||
* or Management. */
|
* or Management. */
|
||||||
if (!is_multicast_ether_addr(hdr->addr1) ||
|
if (!is_multicast_ether_addr(hdr->addr1) ||
|
||||||
type == IEEE80211_FTYPE_DATA ||
|
ieee80211_is_data(fc) ||
|
||||||
type == IEEE80211_FTYPE_MGMT)
|
ieee80211_is_mgmt(fc))
|
||||||
local->dot11TransmittedFragmentCount++;
|
local->dot11TransmittedFragmentCount++;
|
||||||
} else {
|
} else {
|
||||||
if (frag == 0)
|
if (ieee80211_is_first_frag(hdr->seq_ctrl))
|
||||||
local->dot11FailedCount++;
|
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 */
|
/* Need to make a copy before skb->cb gets cleared */
|
||||||
send_to_cooked = !!(info->flags & IEEE80211_TX_CTL_INJECTED) ||
|
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
|
* This is a bit racy but we can avoid a lot of work
|
||||||
|
|
Loading…
Reference in a new issue