• D
    [NET]: Remove gratuitous use of skb->tail in network drivers. · 689be439
    David S. Miller 提交于
    Many drivers use skb->tail unnecessarily.
    
    In these situations, the code roughly looks like:
    
    	dev = dev_alloc_skb(...);
    
    	[optional] skb_reserve(skb, ...);
    
    	... skb->tail ...
    
    But even if the skb_reserve() happens, skb->data equals
    skb->tail.  So it doesn't make any sense to use anything
    other than skb->data in these cases.
    
    Another case was the s2io.c driver directly mucking with
    the skb->data and skb->tail pointers.  It really just wanted
    to do an skb_reserve(), so that's what the code was changed
    to do instead.
    
    Another reason I'm making this change as it allows some SKB
    cleanups I have planned simpler to merge.  In those cleanups,
    skb->head, skb->tail, and skb->end pointers are removed, and
    replaced with skb->head_room and skb->tail_room integers.
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    Acked-by: NJeff Garzik <jgarzik@pobox.com>
    689be439
s2io.c 137.6 KB