Thread (1 message) 1 message, 1 author, 2012-02-06

Re: [PATCH net-next] gro: introduce gro_mac_header_len

From: Or Gerlitz <hidden>
Date: 2012-02-06 16:44:03
Also in: linux-rdma

On 2/6/2012 6:31 PM, David Miller wrote:
We really need an explanation, probably both in the commit message and 
the comments next to this new struct member, explaining why in the 
world we can't use ->hard_header_len for this. 
Dave,

As I wrote earlier on this thread, the reason is that in order to be 
able to xmit skb's for which the stack doesn't provide a neighbour, 
IPoIB makes sure to have extra INFINIBAND_ALEN bytes headroom on skbs. 
Such that the ipoib hard_header functions writes a "ipoib_pseudoheader" 
(= hw address) on the skb and the xmit function grabs it from there and 
use that pseudoheader to search for the actual IB L2 address handle kept 
for that dest. Example such skbs are unicast ARP replies and multicast. 
see below some relevant code sections from ipoib_main.c

Or.
static void ipoib_setup(struct net_device *dev)
[...]
        /*
         * We add in INFINIBAND_ALEN to allow for the destination
         * address "pseudoheader" for skbs without neighbour struct.
         */
        dev->hard_header_len     = IPOIB_ENCAP_LEN + INFINIBAND_ALEN;
        dev->addr_len            = INFINIBAND_ALEN;
        dev->type                = ARPHRD_INFINIBAND;
static int ipoib_hard_header(struct sk_buff *skb,
                             struct net_device *dev,
                             unsigned short type,
                             const void *daddr, const void *saddr, 
unsigned len)
        [...]
        /*
         * If we don't have a neighbour structure, stuff the
         * destination address onto the front of the skb so we can
         * figure out where to send the packet later.
         */

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help