diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-03-10 10:30:58 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:24:37 -0400 |
commit | 48d49d0ccdaa9caff4636ef9c3410973d28131b5 (patch) | |
tree | 3bdf0729bf05e817d1bb9c3299906682414f8a76 | |
parent | f64955eb117ad62480b858fd69a11e6f9e74f60b (diff) |
[SK_BUFF]: Introduce skb_set_mac_header()
For the cases where we want to set skb->mac.raw to an offset from skb->data.
Simple cases first, the memmove ones and specially pktgen will be left for later.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/loopback.c | 2 | ||||
-rw-r--r-- | drivers/net/myri_sbus.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/qeth_eddp.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/qeth_main.c | 4 | ||||
-rw-r--r-- | include/linux/skbuff.h | 5 | ||||
-rw-r--r-- | net/atm/br2684.c | 2 |
6 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c index 4380e5e89dc9..a71d8e0a9b57 100644 --- a/drivers/net/loopback.c +++ b/drivers/net/loopback.c | |||
@@ -90,7 +90,7 @@ static void emulate_large_send_offload(struct sk_buff *skb) | |||
90 | if (!nskb) | 90 | if (!nskb) |
91 | break; | 91 | break; |
92 | skb_reserve(nskb, 32); | 92 | skb_reserve(nskb, 32); |
93 | nskb->mac.raw = nskb->data - 14; | 93 | skb_set_mac_header(nskb, -ETH_HLEN); |
94 | nskb->nh.raw = nskb->data; | 94 | nskb->nh.raw = nskb->data; |
95 | iph = nskb->nh.iph; | 95 | iph = nskb->nh.iph; |
96 | memcpy(nskb->data, skb->nh.raw, doffset); | 96 | memcpy(nskb->data, skb->nh.raw, doffset); |
diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c index de092658db6c..e1f16fb05846 100644 --- a/drivers/net/myri_sbus.c +++ b/drivers/net/myri_sbus.c | |||
@@ -368,7 +368,7 @@ static __be16 myri_type_trans(struct sk_buff *skb, struct net_device *dev) | |||
368 | struct ethhdr *eth; | 368 | struct ethhdr *eth; |
369 | unsigned char *rawp; | 369 | unsigned char *rawp; |
370 | 370 | ||
371 | skb->mac.raw = skb->data + MYRI_PAD_LEN; | 371 | skb_set_mac_header(skb, MYRI_PAD_LEN); |
372 | skb_pull(skb, dev->hard_header_len); | 372 | skb_pull(skb, dev->hard_header_len); |
373 | eth = eth_hdr(skb); | 373 | eth = eth_hdr(skb); |
374 | 374 | ||
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c index 910a8ab66b05..893125403c68 100644 --- a/drivers/s390/net/qeth_eddp.c +++ b/drivers/s390/net/qeth_eddp.c | |||
@@ -486,7 +486,7 @@ qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
486 | return -ENOMEM; | 486 | return -ENOMEM; |
487 | } | 487 | } |
488 | if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { | 488 | if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { |
489 | skb->mac.raw = skb->data + sizeof(struct qeth_hdr); | 489 | skb_set_mac_header(skb, sizeof(struct qeth_hdr)); |
490 | memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); | 490 | memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); |
491 | #ifdef CONFIG_QETH_VLAN | 491 | #ifdef CONFIG_QETH_VLAN |
492 | if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) { | 492 | if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) { |
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 28822025b791..c0ee6d94ea38 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -2306,7 +2306,7 @@ qeth_rebuild_skb_fake_ll_tr(struct qeth_card *card, struct sk_buff *skb, | |||
2306 | struct iphdr *ip_hdr; | 2306 | struct iphdr *ip_hdr; |
2307 | 2307 | ||
2308 | QETH_DBF_TEXT(trace,5,"skbfktr"); | 2308 | QETH_DBF_TEXT(trace,5,"skbfktr"); |
2309 | skb->mac.raw = skb->data - QETH_FAKE_LL_LEN_TR; | 2309 | skb_set_mac_header(skb, -QETH_FAKE_LL_LEN_TR); |
2310 | /* this is a fake ethernet header */ | 2310 | /* this is a fake ethernet header */ |
2311 | fake_hdr = tr_hdr(skb); | 2311 | fake_hdr = tr_hdr(skb); |
2312 | 2312 | ||
@@ -2359,7 +2359,7 @@ qeth_rebuild_skb_fake_ll_eth(struct qeth_card *card, struct sk_buff *skb, | |||
2359 | struct iphdr *ip_hdr; | 2359 | struct iphdr *ip_hdr; |
2360 | 2360 | ||
2361 | QETH_DBF_TEXT(trace,5,"skbfketh"); | 2361 | QETH_DBF_TEXT(trace,5,"skbfketh"); |
2362 | skb->mac.raw = skb->data - QETH_FAKE_LL_LEN_ETH; | 2362 | skb_set_mac_header(skb, -QETH_FAKE_LL_LEN_ETH); |
2363 | /* this is a fake ethernet header */ | 2363 | /* this is a fake ethernet header */ |
2364 | fake_hdr = eth_hdr(skb); | 2364 | fake_hdr = eth_hdr(skb); |
2365 | 2365 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 748f254b50cc..43ab6cbf8446 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -965,6 +965,11 @@ static inline void skb_reset_mac_header(struct sk_buff *skb) | |||
965 | skb->mac.raw = skb->data; | 965 | skb->mac.raw = skb->data; |
966 | } | 966 | } |
967 | 967 | ||
968 | static inline void skb_set_mac_header(struct sk_buff *skb, const int offset) | ||
969 | { | ||
970 | skb->mac.raw = skb->data + offset; | ||
971 | } | ||
972 | |||
968 | /* | 973 | /* |
969 | * CPUs often take a performance hit when accessing unaligned memory | 974 | * CPUs often take a performance hit when accessing unaligned memory |
970 | * locations. The actual performance hit varies, it can be small if the | 975 | * locations. The actual performance hit varies, it can be small if the |
diff --git a/net/atm/br2684.c b/net/atm/br2684.c index 900d42ca8a50..a1686dfcbb9a 100644 --- a/net/atm/br2684.c +++ b/net/atm/br2684.c | |||
@@ -458,7 +458,7 @@ static void br2684_push(struct atm_vcc *atmvcc, struct sk_buff *skb) | |||
458 | /* FIXME: tcpdump shows that pointer to mac header is 2 bytes earlier, | 458 | /* FIXME: tcpdump shows that pointer to mac header is 2 bytes earlier, |
459 | than should be. What else should I set? */ | 459 | than should be. What else should I set? */ |
460 | skb_pull(skb, plen); | 460 | skb_pull(skb, plen); |
461 | skb->mac.raw = skb->data - ETH_HLEN; | 461 | skb_set_mac_header(skb, -ETH_HLEN); |
462 | skb->pkt_type = PACKET_HOST; | 462 | skb->pkt_type = PACKET_HOST; |
463 | #ifdef CONFIG_BR2684_FAST_TRANS | 463 | #ifdef CONFIG_BR2684_FAST_TRANS |
464 | skb->protocol = ((u16 *) skb->data)[-1]; | 464 | skb->protocol = ((u16 *) skb->data)[-1]; |