diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-19 23:29:13 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:26:28 -0400 |
commit | 27a884dc3cb63b93c2b3b643f5b31eed5f8a4d26 (patch) | |
tree | 5a267e40f9b94014be38dad5de0a52b6628834e0 /net/ipv6/mcast.c | |
parent | be8bd86321fa7f06359d866ef61fb4d2f3e9dce9 (diff) |
[SK_BUFF]: Convert skb->tail to sk_buff_data_t
So that it is also an offset from skb->head, reduces its size from 8 to 4 bytes
on 64bit architectures, allowing us to combine the 4 bytes hole left by the
layer headers conversion, reducing struct sk_buff size to 256 bytes, i.e. 4
64byte cachelines, and since the sk_buff slab cache is SLAB_HWCACHE_ALIGN...
:-)
Many calculations that previously required that skb->{transport,network,
mac}_header be first converted to a pointer now can be done directly, being
meaningful as offsets or pointers.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/mcast.c')
-rw-r--r-- | net/ipv6/mcast.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 4c45bcce75e8..6c2758951d60 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -1423,7 +1423,7 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size) | |||
1423 | 1423 | ||
1424 | memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); | 1424 | memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); |
1425 | 1425 | ||
1426 | skb_set_transport_header(skb, skb->tail - skb->data); | 1426 | skb_set_transport_header(skb, skb_tail_pointer(skb) - skb->data); |
1427 | skb_put(skb, sizeof(*pmr)); | 1427 | skb_put(skb, sizeof(*pmr)); |
1428 | pmr = (struct mld2_report *)skb_transport_header(skb); | 1428 | pmr = (struct mld2_report *)skb_transport_header(skb); |
1429 | pmr->type = ICMPV6_MLD2_REPORT; | 1429 | pmr->type = ICMPV6_MLD2_REPORT; |
@@ -1468,8 +1468,8 @@ static void mld_sendpack(struct sk_buff *skb) | |||
1468 | int err; | 1468 | int err; |
1469 | 1469 | ||
1470 | IP6_INC_STATS(idev, IPSTATS_MIB_OUTREQUESTS); | 1470 | IP6_INC_STATS(idev, IPSTATS_MIB_OUTREQUESTS); |
1471 | payload_len = skb->tail - skb_network_header(skb) - sizeof(*pip6); | 1471 | payload_len = (skb->tail - skb->network_header) - sizeof(*pip6); |
1472 | mldlen = skb->tail - skb_transport_header(skb); | 1472 | mldlen = skb->tail - skb->transport_header; |
1473 | pip6->payload_len = htons(payload_len); | 1473 | pip6->payload_len = htons(payload_len); |
1474 | 1474 | ||
1475 | pmr->csum = csum_ipv6_magic(&pip6->saddr, &pip6->daddr, mldlen, | 1475 | pmr->csum = csum_ipv6_magic(&pip6->saddr, &pip6->daddr, mldlen, |