[NET]: uninline skb_push, de-bloats a lot
Allyesconfig (v2.6.24-mm1): -21593 356 funcs, 2418 +, 24011 -, diff: -21593 --- skb_push Without many debug related CONFIGs (v2.6.25-rc2-mm1): -13890 341 funcs, 189 +, 14079 -, diff: -13890 --- skb_push skb_push | +46 Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
f58518e678
commit
c2aa270ad7
@@ -902,6 +902,7 @@ static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
|
||||||
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
|
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
|
||||||
{
|
{
|
||||||
skb->data -= len;
|
skb->data -= len;
|
||||||
@@ -909,24 +910,6 @@ static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
|
|||||||
return skb->data;
|
return skb->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* skb_push - add data to the start of a buffer
|
|
||||||
* @skb: buffer to use
|
|
||||||
* @len: amount of data to add
|
|
||||||
*
|
|
||||||
* This function extends the used data area of the buffer at the buffer
|
|
||||||
* start. If this would exceed the total buffer headroom the kernel will
|
|
||||||
* panic. A pointer to the first byte of the extra data is returned.
|
|
||||||
*/
|
|
||||||
static inline unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
|
|
||||||
{
|
|
||||||
skb->data -= len;
|
|
||||||
skb->len += len;
|
|
||||||
if (unlikely(skb->data<skb->head))
|
|
||||||
skb_under_panic(skb, len, current_text_addr());
|
|
||||||
return skb->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
|
extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
|
||||||
static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
|
static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
|
||||||
{
|
{
|
||||||
|
@@ -896,6 +896,25 @@ unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(skb_put);
|
EXPORT_SYMBOL(skb_put);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* skb_push - add data to the start of a buffer
|
||||||
|
* @skb: buffer to use
|
||||||
|
* @len: amount of data to add
|
||||||
|
*
|
||||||
|
* This function extends the used data area of the buffer at the buffer
|
||||||
|
* start. If this would exceed the total buffer headroom the kernel will
|
||||||
|
* panic. A pointer to the first byte of the extra data is returned.
|
||||||
|
*/
|
||||||
|
unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
|
||||||
|
{
|
||||||
|
skb->data -= len;
|
||||||
|
skb->len += len;
|
||||||
|
if (unlikely(skb->data<skb->head))
|
||||||
|
skb_under_panic(skb, len, __builtin_return_address(0));
|
||||||
|
return skb->data;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(skb_push);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* skb_pull - remove data from the start of a buffer
|
* skb_pull - remove data from the start of a buffer
|
||||||
* @skb: buffer to use
|
* @skb: buffer to use
|
||||||
|
Reference in New Issue
Block a user