linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Emmanuel Grumbach <egrumbach@gmail.com>
To: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes.berg@intel.com>,
	Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Subject: [PATCH 40/75] iwlwifi: mvm: pull SNAP header into skb->head
Date: Mon, 24 Nov 2014 16:34:16 +0200	[thread overview]
Message-ID: <1416839691-28533-40-git-send-email-egrumbach@gmail.com> (raw)
In-Reply-To: <CANUX_P32q7EFvuOvm+c=yYP9okVEfSUvdDg0gDHHCSg2G+gA0g@mail.gmail.com>

From: Johannes Berg <johannes.berg@intel.com>

When we pre-populate the skb->head for the stack, we only pull
in the 802.11 header including crypto (assuming the packet isn't
short enough to be in there completely.) This is fine, but in
ieee80211_data_to_8023() we later unconditionally pull 8 more
bytes for the SNAP header and ethertype field (except for mesh
or 4-addr, where it's even more, but we don't care as much about
them).

Avoid the additional later pull by pulling in those 8 bytes here.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: IdoX Yariv <ido@wizery.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 drivers/net/wireless/iwlwifi/mvm/rx.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/mvm/rx.c b/drivers/net/wireless/iwlwifi/mvm/rx.c
index 69fa765..94b6e72 100644
--- a/drivers/net/wireless/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/iwlwifi/mvm/rx.c
@@ -104,10 +104,19 @@ static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm,
 	unsigned int hdrlen, fraglen;
 
 	/* If frame is small enough to fit in skb->head, pull it completely.
-	 * If not, only pull ieee80211_hdr (including crypto if present) so
-	 * that splice() or TCP coalesce are more efficient.
+	 * If not, only pull ieee80211_hdr (including crypto if present, and
+	 * an additional 8 bytes for SNAP/ethertype, see below) so that
+	 * splice() or TCP coalesce are more efficient.
+	 *
+	 * Since, in addition, ieee80211_data_to_8023() always pull in at
+	 * least 8 bytes (possibly more for mesh) we can do the same here
+	 * to save the cost of doing it later. That still doesn't pull in
+	 * the actual IP header since the typical case has a SNAP header.
+	 * If the latter changes (there are efforts in the standards group
+	 * to do so) we should revisit this and ieee80211_data_to_8023().
 	 */
-	hdrlen = (len <= skb_tailroom(skb)) ? len : sizeof(*hdr) + crypt_len;
+	hdrlen = (len <= skb_tailroom(skb)) ? len :
+					      sizeof(*hdr) + crypt_len + 8;
 
 	memcpy(skb_put(skb, hdrlen), hdr, hdrlen);
 	fraglen = len - hdrlen;
-- 
1.9.1


  parent reply	other threads:[~2014-11-24 14:36 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-24 14:34 pull request: iwlwifi-next 2014-11-24 Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 01/75] iwlwfifi: fix WANT_DEV_COREDUMP selection in Kconfig Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 02/75] iwlwifi: mvm: handle error from iwl_trans_update_sf Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 03/75] iwlwifi: mvm: use correct type for firmware status Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 04/75] iwlwifi: mvm: expose some static APIs for use by TDLS code Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 05/75] iwlwifi: mvm: rs: don't use shadowing variable Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 06/75] iwlwifi: mvm: fix init_dbg flow to work as expected Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 07/75] iwlwifi: mvm: rs: fix a WARNING in case of STBC and VHT Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 08/75] iwlwifi: mvm/trans: abort d0i3_enter in case of held ref Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 09/75] iwlwifi: mvm: rs: fix getting stuck in a test window Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 10/75] iwlwifi: mvm: rs - don't use the shared antenna when BT load is high Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 11/75] iwlwifi: mvm: don't capture firmware coredump for D3->D0 reconfig Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 12/75] iwlwifi: mvm: refactor temperature notification handling Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 13/75] iwlwifi: mvm: handle unsolicited DTS_MEASUREMENT_NOTIFICATIONs Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 14/75] iwlwifi: pcie: introduce delay when waking up the device Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 15/75] iwlwifi: pcie: newer platform needs a OS alive indication Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 16/75] iwlwifi: mvm: wake up d0i3_exit_waitq when aborting d0i3 Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 17/75] iwlwifi: mvm: Insert DS Parameter Set placeholder in probes Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 18/75] iwlwifi: change max HT and VHT A-MPDU exponent Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 19/75] iwlwifi: mvm: add support for WMM Access Control Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 20/75] iwlwifi: mvm: move deferred d0i3 exit to resume_complete op Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 21/75] iwlwifi: mvm: New skip over dtim policy Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 22/75] iwlwifi: mvm: Fix the keep_alive calculation Emmanuel Grumbach
2014-11-24 14:33 ` [PATCH 23/75] iwlwifi: mvm: implement UMAC scan API Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 24/75] iwlwifi: mvm: BT Coex - add support for TTC / RRC Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 25/75] iwlwifi: mvm: rs: consider a missing BA as a single tx failure Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 26/75] iwlwifi: mvm: go to umac scan even if lmac tlv bit is on Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 27/75] iwlwifi: mvm: support random MAC address for scanning Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 28/75] iwlwifi: pcie: properly reset the device Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 29/75] iwlwifi: mvm: make nd_ies part of the mvm struct Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 30/75] iwlwifi: mvm: disable beacon filtering escape timer Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 31/75] iwlwifi: pcie: support loading FW with extended mem range Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 32/75] iwlwifi: pcie: support 7265-D devices Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 33/75] iwlwifi: mvm: use unsigned for ssid_bitmap Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 34/75] iwlwifi: mvm: remove warning on unknown scan complete Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 35/75] iwlwifi: mvm: add remove flow for AUX ROC time events Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 36/75] iwlwifi: mvm: refactor key add/remove functions Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 37/75] iwlwifi: mvm: add WEP RX hardware offload support Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 38/75] iwlwifi: build mac80211 rx_status in place Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 39/75] iwlwifi: mvm: pull crypto header into skb->head Emmanuel Grumbach
2014-11-24 14:34 ` Emmanuel Grumbach [this message]
2014-11-24 14:34 ` [PATCH 41/75] iwlwifi: mvm: declare TDLS support Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 42/75] iwlwifi: mvm: add TDLS channel switch FW APIs Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 43/75] iwlwifi: mvm: configure TDLS peers to FW Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 44/75] iwlwifi: mvm: allow private per-STA TFD queues Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 45/75] iwlwifi: mvm: disconnect TDLS peers on reconfig Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 46/75] iwlwifi: mvm: use private TFD queues for TDLS stations Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 47/75] iwlwifi: mvm: block TID when using TDLS Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 48/75] iwlwifi: mvm: implement mac80211 TDLS channel-switch APIs Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 49/75] iwlwifi: mvm: use new pre_channel_switch op instead of channel_switch_beacon Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 50/75] iwlwifi: mvm: only save csa_vif in AP/GO mode Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 51/75] iwlwifi: mvm: refactor iwl_mvm_switch_vif_chanctx to support other modes Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 52/75] iwlwifi: mvm: add support for CHANCTX_SWMODE_REASSIGN_VIF Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 53/75] iwlwifi: mvm: return the actual error code when switch_vif_chanctx fails Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 54/75] iwlwifi: mvm: Handle failed beacon transmissions during CSA Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 55/75] iwlwifi: mvm: disable PS during channel switch Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 56/75] iwlwifi: mvm: use switching_chanctx argument instead of csa_active Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 57/75] iwlwifi: mvm: add CSA absent time event for clients Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 58/75] iwlwifi: mvm: schedule CSA time event a bit before beacon 1 Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 59/75] iwlwifi: mvm: finalize on post_switch instead of unassign Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 60/75] iwlwifi: mvm: add a channel_switch op to bypass mac80211 timer Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 61/75] iwlwifi: mvm: disable beacon filtering during CSA Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 62/75] iwlwifi: mvm: clear TE data if CSA time event fails to start Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 63/75] iwlwifi: mvm: protect session during CSA Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 64/75] iwlwifi: mvm: add support for net detect Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 65/75] iwlwifi: mvm: refactor wowlan and netdetect configuration when suspending Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 66/75] iwlwifi: mvm: refactor iwl_mvm_query_wakeup_reasons() Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 67/75] iwlwifi: mvm: treat netdetect wake up separately Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 68/75] iwlwifi: trans: add suspend/resume ops Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 69/75] iwlwifi: mvm: call iwl_trans_suspend/resume Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 70/75] iwlwifi: mvm: add support to MFUART loading notification Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 71/75] iwlwifi: mvm: declare support for VHT BF info in radiotap Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 72/75] iwlwifi: mvm: disconnect TDLS peers before channel switch Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 73/75] iwlwifi: declare d0i3 support for IWL_DEVICE_8000 Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 74/75] iwlwifi: sdio: new SDIO card id for 4165 series Emmanuel Grumbach
2014-11-24 14:34 ` [PATCH 75/75] iwlwifi: update the secure mem space and for the CPUs Emmanuel Grumbach
2014-11-24 19:00 ` pull request: iwlwifi-next 2014-11-24 John W. Linville

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1416839691-28533-40-git-send-email-egrumbach@gmail.com \
    --to=egrumbach@gmail.com \
    --cc=emmanuel.grumbach@intel.com \
    --cc=johannes.berg@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).