aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2017-01-13 10:42:35 +0100
committerFelix Fietkau <nbd@nbd.name>2017-01-14 18:28:24 +0100
commita46d1fde4b5eb24e2d744230fdb307bbf821cdd7 (patch)
tree00441e22f0e1827ef7bc05894ad943e0346aaea3 /package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch
parentadf2fef5e8665e534d4895308d9e3325df7716ba (diff)
downloadupstream-a46d1fde4b5eb24e2d744230fdb307bbf821cdd7.tar.gz
upstream-a46d1fde4b5eb24e2d744230fdb307bbf821cdd7.tar.bz2
upstream-a46d1fde4b5eb24e2d744230fdb307bbf821cdd7.zip
mac80211: refresh patches
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch')
-rw-r--r--package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch15
1 files changed, 8 insertions, 7 deletions
diff --git a/package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch b/package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch
index fb6bd30243..4668226530 100644
--- a/package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch
+++ b/package/kernel/mac80211/patches/319-mac80211-avoid-extra-memcpy-in-A-MSDU-head-creation.patch
@@ -34,22 +34,23 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
- amsdu_hdr.h_proto = cpu_to_be16(subframe_len);
- memcpy(amsdu_hdr.h_source, skb->data + fast_tx->sa_offs, ETH_ALEN);
- memcpy(amsdu_hdr.h_dest, skb->data + fast_tx->da_offs, ETH_ALEN);
+-
+- data = skb_push(skb, sizeof(amsdu_hdr));
+- memmove(data, data + sizeof(amsdu_hdr), hdr_len);
+- memcpy(data + hdr_len, &amsdu_hdr, sizeof(amsdu_hdr));
+-
+ data = skb_push(skb, sizeof(*amsdu_hdr));
+ memmove(data, data + sizeof(*amsdu_hdr), hdr_len);
-+ hdr = data;
+ hdr = data;
+ amsdu_hdr = data + hdr_len;
+ /* h_80211_src/dst is addr* field within hdr */
+ h_80211_src = data + fast_tx->sa_offs;
+ h_80211_dst = data + fast_tx->da_offs;
-
-- data = skb_push(skb, sizeof(amsdu_hdr));
-- memmove(data, data + sizeof(amsdu_hdr), hdr_len);
-- memcpy(data + hdr_len, &amsdu_hdr, sizeof(amsdu_hdr));
++
+ amsdu_hdr->h_proto = cpu_to_be16(subframe_len);
+ ether_addr_copy(amsdu_hdr->h_source, h_80211_src);
+ ether_addr_copy(amsdu_hdr->h_dest, h_80211_dst);
-
-- hdr = data;
++
qc = ieee80211_get_qos_ctl(hdr);
*qc |= IEEE80211_QOS_CTL_A_MSDU_PRESENT;