Loading net/mac80211/rx.c +7 −12 Original line number Diff line number Diff line Loading @@ -67,12 +67,9 @@ static inline int should_drop_frame(struct ieee80211_rx_status *status, return 1; if (unlikely(skb->len < 16 + present_fcs_len + radiotap_len)) return 1; if (((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FTYPE)) == cpu_to_le16(IEEE80211_FTYPE_CTL)) && ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) != cpu_to_le16(IEEE80211_STYPE_PSPOLL)) && ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) != cpu_to_le16(IEEE80211_STYPE_BACK_REQ))) if (ieee80211_is_ctl(hdr->frame_control) && !ieee80211_is_pspoll(hdr->frame_control) && !ieee80211_is_back_req(hdr->frame_control)) return 1; return 0; } Loading Loading @@ -2118,7 +2115,7 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; struct sta_info *sta; struct tid_ampdu_rx *tid_agg_rx; u16 fc, sc; u16 sc; u16 mpdu_seq_num; u8 ret = 0, *qc; int tid; Loading @@ -2127,14 +2124,12 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, if (!sta) return ret; fc = le16_to_cpu(hdr->frame_control); /* filter the QoS data rx stream according to * STA/TID and check if this STA/TID is on aggregation */ if (!WLAN_FC_IS_QOS_DATA(fc)) if (!ieee80211_is_data_qos(hdr->frame_control)) goto end_reorder; qc = skb->data + ieee80211_get_hdrlen(fc) - QOS_CONTROL_LEN; qc = ieee80211_get_qos_ctl(hdr); tid = qc[0] & QOS_CONTROL_TID_MASK; if (sta->ampdu_mlme.tid_state_rx[tid] != HT_AGG_STATE_OPERATIONAL) Loading @@ -2143,7 +2138,7 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, tid_agg_rx = sta->ampdu_mlme.tid_rx[tid]; /* null data frames are excluded */ if (unlikely(fc & IEEE80211_STYPE_NULLFUNC)) if (unlikely(ieee80211_is_nullfunc(hdr->frame_control))) goto end_reorder; /* new un-ordered ampdu frame - process it */ Loading Loading
net/mac80211/rx.c +7 −12 Original line number Diff line number Diff line Loading @@ -67,12 +67,9 @@ static inline int should_drop_frame(struct ieee80211_rx_status *status, return 1; if (unlikely(skb->len < 16 + present_fcs_len + radiotap_len)) return 1; if (((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FTYPE)) == cpu_to_le16(IEEE80211_FTYPE_CTL)) && ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) != cpu_to_le16(IEEE80211_STYPE_PSPOLL)) && ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE)) != cpu_to_le16(IEEE80211_STYPE_BACK_REQ))) if (ieee80211_is_ctl(hdr->frame_control) && !ieee80211_is_pspoll(hdr->frame_control) && !ieee80211_is_back_req(hdr->frame_control)) return 1; return 0; } Loading Loading @@ -2118,7 +2115,7 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; struct sta_info *sta; struct tid_ampdu_rx *tid_agg_rx; u16 fc, sc; u16 sc; u16 mpdu_seq_num; u8 ret = 0, *qc; int tid; Loading @@ -2127,14 +2124,12 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, if (!sta) return ret; fc = le16_to_cpu(hdr->frame_control); /* filter the QoS data rx stream according to * STA/TID and check if this STA/TID is on aggregation */ if (!WLAN_FC_IS_QOS_DATA(fc)) if (!ieee80211_is_data_qos(hdr->frame_control)) goto end_reorder; qc = skb->data + ieee80211_get_hdrlen(fc) - QOS_CONTROL_LEN; qc = ieee80211_get_qos_ctl(hdr); tid = qc[0] & QOS_CONTROL_TID_MASK; if (sta->ampdu_mlme.tid_state_rx[tid] != HT_AGG_STATE_OPERATIONAL) Loading @@ -2143,7 +2138,7 @@ static u8 ieee80211_rx_reorder_ampdu(struct ieee80211_local *local, tid_agg_rx = sta->ampdu_mlme.tid_rx[tid]; /* null data frames are excluded */ if (unlikely(fc & IEEE80211_STYPE_NULLFUNC)) if (unlikely(ieee80211_is_nullfunc(hdr->frame_control))) goto end_reorder; /* new un-ordered ampdu frame - process it */ Loading