summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/gianfar.h
diff options
context:
space:
mode:
authorAlok Makhariya <B46187@freescale.com>2014-03-28 12:49:53 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-03-31 18:57:20 (GMT)
commit27b00fec49bde69b30675a32babeae37269e9acd (patch)
tree938013d7bb7ba9c4c3eedde13e22a1abbe139555 /drivers/net/ethernet/freescale/gianfar.h
parentc84ef2f6f53fe3535d28c39246d1499e7aab1388 (diff)
downloadlinux-fsl-qoriq-27b00fec49bde69b30675a32babeae37269e9acd.tar.xz
gianfar: Allocate extra headroom while allocating skb in gianfar
ASF requires some extra headrom for IPSec processing. During IPSec processing packet size increases adding the Outer IP header, ESP header, ICV and Padding to the packet. In case the headroom/tailroom is not present copy of packet is made. Reserved that required extra headroom while allocating the buffer in gianfar, so that packet copy is avoided CQ ID : ENGR00304852 Change-Id: I2580bf20fb2acd5a9ced4166375ca22f56f764fe Signed-off-by: Alok Makhariya <B46187@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/10356 Reviewed-by: Rajan Gupta <rajan.gupta@freescale.com> Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/gianfar.h')
-rw-r--r--drivers/net/ethernet/freescale/gianfar.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/gianfar.h b/drivers/net/ethernet/freescale/gianfar.h
index 34e5693..44a32ac 100644
--- a/drivers/net/ethernet/freescale/gianfar.h
+++ b/drivers/net/ethernet/freescale/gianfar.h
@@ -80,6 +80,10 @@ struct ethtool_rx_list {
/* Number of bytes to align the rx bufs to */
#define RXBUF_ALIGNMENT 64
+#ifdef CONFIG_AS_FASTPATH
+/* Headroom required for IPSec processing in ASF */
+#define EXTRA_HEADROOM 128
+#endif
/* The number of bytes which composes a unit for the purpose of
* allocating data buffers. ie-for any given MTU, the data buffer
* will be the next highest multiple of 512 bytes. */
@@ -1608,6 +1612,10 @@ static inline void gfar_rx_checksum(struct sk_buff *skb, struct rxfcb *fcb)
static inline void gfar_align_skb(struct sk_buff *skb)
{
+#ifdef CONFIG_AS_FASTPATH
+ /* Reserving the extra headroom required for ASF IPSec processing */
+ skb_reserve(skb, EXTRA_HEADROOM);
+#endif
/* We need the data buffer to be aligned properly. We will reserve
* as many bytes as needed to align the data properly
*/