diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-21 12:31:48 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-21 12:31:48 -0500 |
| commit | 3d1f337b3e7378923c89f37afb573a918ef40be5 (patch) | |
| tree | 386798378567a10d1c7b24f599cb50f70298694c /include/linux/skbuff.h | |
| parent | 2bf2154c6bb5599e3ec3f73c34861a0b12aa839e (diff) | |
| parent | 5e35941d990123f155b02d5663e51a24f816b6f3 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (235 commits)
[NETFILTER]: Add H.323 conntrack/NAT helper
[TG3]: Don't mark tg3_test_registers() as returning const.
[IPV6]: Cleanups for net/ipv6/addrconf.c (kzalloc, early exit) v2
[IPV6]: Nearly complete kzalloc cleanup for net/ipv6
[IPV6]: Cleanup of net/ipv6/reassambly.c
[BRIDGE]: Remove duplicate const from is_link_local() argument type.
[DECNET]: net/decnet/dn_route.c: fix inconsequent NULL checking
[TG3]: make drivers/net/tg3.c:tg3_request_irq() static
[BRIDGE]: use LLC to send STP
[LLC]: llc_mac_hdr_init const arguments
[BRIDGE]: allow show/store of group multicast address
[BRIDGE]: use llc for receiving STP packets
[BRIDGE]: stp timer to jiffies cleanup
[BRIDGE]: forwarding remove unneeded preempt and bh diasables
[BRIDGE]: netfilter inline cleanup
[BRIDGE]: netfilter VLAN macro cleanup
[BRIDGE]: netfilter dont use __constant_htons
[BRIDGE]: netfilter whitespace
[BRIDGE]: optimize frame pass up
[BRIDGE]: use kzalloc
...
Diffstat (limited to 'include/linux/skbuff.h')
| -rw-r--r-- | include/linux/skbuff.h | 47 |
1 files changed, 19 insertions, 28 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index ad7cc22bd424..613b9513f8b9 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -270,7 +270,6 @@ struct sk_buff { | |||
| 270 | 270 | ||
| 271 | void (*destructor)(struct sk_buff *skb); | 271 | void (*destructor)(struct sk_buff *skb); |
| 272 | #ifdef CONFIG_NETFILTER | 272 | #ifdef CONFIG_NETFILTER |
| 273 | __u32 nfmark; | ||
| 274 | struct nf_conntrack *nfct; | 273 | struct nf_conntrack *nfct; |
| 275 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | 274 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) |
| 276 | struct sk_buff *nfct_reasm; | 275 | struct sk_buff *nfct_reasm; |
| @@ -278,6 +277,7 @@ struct sk_buff { | |||
| 278 | #ifdef CONFIG_BRIDGE_NETFILTER | 277 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 279 | struct nf_bridge_info *nf_bridge; | 278 | struct nf_bridge_info *nf_bridge; |
| 280 | #endif | 279 | #endif |
| 280 | __u32 nfmark; | ||
| 281 | #endif /* CONFIG_NETFILTER */ | 281 | #endif /* CONFIG_NETFILTER */ |
| 282 | #ifdef CONFIG_NET_SCHED | 282 | #ifdef CONFIG_NET_SCHED |
| 283 | __u16 tc_index; /* traffic control index */ | 283 | __u16 tc_index; /* traffic control index */ |
| @@ -304,6 +304,7 @@ struct sk_buff { | |||
| 304 | 304 | ||
| 305 | #include <asm/system.h> | 305 | #include <asm/system.h> |
| 306 | 306 | ||
| 307 | extern void kfree_skb(struct sk_buff *skb); | ||
| 307 | extern void __kfree_skb(struct sk_buff *skb); | 308 | extern void __kfree_skb(struct sk_buff *skb); |
| 308 | extern struct sk_buff *__alloc_skb(unsigned int size, | 309 | extern struct sk_buff *__alloc_skb(unsigned int size, |
| 309 | gfp_t priority, int fclone); | 310 | gfp_t priority, int fclone); |
| @@ -404,22 +405,6 @@ static inline struct sk_buff *skb_get(struct sk_buff *skb) | |||
| 404 | */ | 405 | */ |
| 405 | 406 | ||
| 406 | /** | 407 | /** |
| 407 | * kfree_skb - free an sk_buff | ||
| 408 | * @skb: buffer to free | ||
| 409 | * | ||
| 410 | * Drop a reference to the buffer and free it if the usage count has | ||
| 411 | * hit zero. | ||
| 412 | */ | ||
| 413 | static inline void kfree_skb(struct sk_buff *skb) | ||
| 414 | { | ||
| 415 | if (likely(atomic_read(&skb->users) == 1)) | ||
| 416 | smp_rmb(); | ||
| 417 | else if (likely(!atomic_dec_and_test(&skb->users))) | ||
| 418 | return; | ||
| 419 | __kfree_skb(skb); | ||
| 420 | } | ||
| 421 | |||
| 422 | /** | ||
| 423 | * skb_cloned - is the buffer a clone | 408 | * skb_cloned - is the buffer a clone |
| 424 | * @skb: buffer to check | 409 | * @skb: buffer to check |
| 425 | * | 410 | * |
| @@ -1174,12 +1159,14 @@ static inline int skb_linearize(struct sk_buff *skb, gfp_t gfp) | |||
| 1174 | */ | 1159 | */ |
| 1175 | 1160 | ||
| 1176 | static inline void skb_postpull_rcsum(struct sk_buff *skb, | 1161 | static inline void skb_postpull_rcsum(struct sk_buff *skb, |
| 1177 | const void *start, int len) | 1162 | const void *start, unsigned int len) |
| 1178 | { | 1163 | { |
| 1179 | if (skb->ip_summed == CHECKSUM_HW) | 1164 | if (skb->ip_summed == CHECKSUM_HW) |
| 1180 | skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); | 1165 | skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); |
| 1181 | } | 1166 | } |
| 1182 | 1167 | ||
| 1168 | unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); | ||
| 1169 | |||
| 1183 | /** | 1170 | /** |
| 1184 | * pskb_trim_rcsum - trim received skb and update checksum | 1171 | * pskb_trim_rcsum - trim received skb and update checksum |
| 1185 | * @skb: buffer to trim | 1172 | * @skb: buffer to trim |
| @@ -1351,16 +1338,6 @@ static inline void nf_conntrack_put_reasm(struct sk_buff *skb) | |||
| 1351 | kfree_skb(skb); | 1338 | kfree_skb(skb); |
| 1352 | } | 1339 | } |
| 1353 | #endif | 1340 | #endif |
| 1354 | static inline void nf_reset(struct sk_buff *skb) | ||
| 1355 | { | ||
| 1356 | nf_conntrack_put(skb->nfct); | ||
| 1357 | skb->nfct = NULL; | ||
| 1358 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | ||
| 1359 | nf_conntrack_put_reasm(skb->nfct_reasm); | ||
| 1360 | skb->nfct_reasm = NULL; | ||
| 1361 | #endif | ||
| 1362 | } | ||
| 1363 | |||
| 1364 | #ifdef CONFIG_BRIDGE_NETFILTER | 1341 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 1365 | static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) | 1342 | static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) |
| 1366 | { | 1343 | { |
| @@ -1373,6 +1350,20 @@ static inline void nf_bridge_get(struct nf_bridge_info *nf_bridge) | |||
| 1373 | atomic_inc(&nf_bridge->use); | 1350 | atomic_inc(&nf_bridge->use); |
| 1374 | } | 1351 | } |
| 1375 | #endif /* CONFIG_BRIDGE_NETFILTER */ | 1352 | #endif /* CONFIG_BRIDGE_NETFILTER */ |
| 1353 | static inline void nf_reset(struct sk_buff *skb) | ||
| 1354 | { | ||
| 1355 | nf_conntrack_put(skb->nfct); | ||
| 1356 | skb->nfct = NULL; | ||
| 1357 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | ||
| 1358 | nf_conntrack_put_reasm(skb->nfct_reasm); | ||
| 1359 | skb->nfct_reasm = NULL; | ||
| 1360 | #endif | ||
| 1361 | #ifdef CONFIG_BRIDGE_NETFILTER | ||
| 1362 | nf_bridge_put(skb->nf_bridge); | ||
| 1363 | skb->nf_bridge = NULL; | ||
| 1364 | #endif | ||
| 1365 | } | ||
| 1366 | |||
| 1376 | #else /* CONFIG_NETFILTER */ | 1367 | #else /* CONFIG_NETFILTER */ |
| 1377 | static inline void nf_reset(struct sk_buff *skb) {} | 1368 | static inline void nf_reset(struct sk_buff *skb) {} |
| 1378 | #endif /* CONFIG_NETFILTER */ | 1369 | #endif /* CONFIG_NETFILTER */ |
