: fix lro_gen_skb() alignment
Subsystems (2)
PATCH 1/1 : fix lro_gen_skb() alignment
Add a field to the lro_mgr struct so that drivers can specify how much padding is required to align layer 3 headers when a packet is copied into a freshly allocated skb by inet_lro.c:lro_gen_skb(). Without padding, skbs generated by LRO will cause alignment warnings on architectures which require strict alignment (seen on sparc64).
Myri10GE is updated to use this field.
Signed off by: Andrew Gallatin <[email protected]>
drivers/net/myri10ge/myri10ge.c +1 -0
@@ -1979,6 +1979,7 @@ static int myri10ge_open(struct net_devi lro_mgr->lro_arr = mgp->rx_done.lro_desc; lro_mgr->get_frag_header = myri10ge_get_frag_header; lro_mgr->max_aggr = myri10ge_lro_max_pkts; + lro_mgr->frag_align_pad =2 ;if (lro_mgr->max_aggr >MAX_SKB_FRAGS ) lro_mgr->max_aggr =MAX_SKB_FRAGS ;
include/linux/inet_lro.h +3 -0
@@ -91,6 +91,9 @@ #define LRO_F_EXTRACT_VLAN_ID 2 /* Setint max_desc;/* Max number of LRO descriptors */ int max_aggr;/* Max number of LRO packets to be aggregated */ +int frag_align_pad;/* Padding required to properly align layer 3 +* headers in generated skb when using frags */ +struct net_lro_desc *lro_arr;/* Array of LRO descriptors */ /*
net/ipv4/inet_lro.c +2 -1
@@ -401,10 +401,11 @@ static struct sk_buff *lro_gen_skb(strucint data_len = len;int hdr_len =min (len, hlen); - skb =netdev_alloc_skb (lro_mgr->dev, hlen); + skb =netdev_alloc_skb (lro_mgr->dev, hlen + lro_mgr->frag_align_pad);if (!skb)return NULL ; +skb_reserve (skb, lro_mgr->frag_align_pad); skb->len = len; skb->data_len = len - hdr_len; skb->truesize += true_size;
From: Andrew Gallatin <[email protected]>
Date: Tue, 04 Dec 2007 14:55:06 -0500
Quoted 10 lines
Add a field to the
lro_mgrstruct so that drivers can specify how much padding is required to align layer 3 headers when a packet is copied into a freshly allocated skb by inet_lro.c:lro_gen_skb(). Without padding, skbs generated by LRO will cause alignment warnings on architectures which require strict alignment (seen on sparc64).Myri10GE is updated to use this field.
Signed off by: Andrew Gallatin <[email protected]>
Applied, thanks Andrew.