Commit 459a98ed881802dee55897441bc7f77af614368e

Authored by Arnaldo Carvalho de Melo
Committed by David S. Miller
1 parent 4c13eb6657

[SK_BUFF]: Introduce skb_reset_mac_header(skb)

For the common, open coded 'skb->mac.raw = skb->data' operation, so that we can
later turn skb->mac.raw into a offset, reducing the size of struct sk_buff in
64bit land while possibly keeping it as a pointer on 32bit.

This one touches just the most simple case, next will handle the slightly more
"complex" cases.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 85 changed files with 119 additions and 109 deletions Side-by-side Diff

arch/um/drivers/net_kern.c
... ... @@ -55,7 +55,7 @@
55 55  
56 56 skb->dev = dev;
57 57 skb_put(skb, dev->mtu);
58   - skb->mac.raw = skb->data;
  58 + skb_reset_mac_header(skb);
59 59 pkt_len = (*lp->read)(lp->fd, &skb, lp);
60 60  
61 61 if (pkt_len > 0) {
arch/xtensa/platform-iss/network.c
... ... @@ -386,7 +386,7 @@
386 386 /* Setup skb */
387 387  
388 388 skb->dev = dev;
389   - skb->mac.raw = skb->data;
  389 + skb_reset_mac_header(skb);
390 390 pkt_len = lp->tp.read(lp, &skb);
391 391 skb_put(skb, pkt_len);
392 392  
drivers/block/aoe/aoecmd.c
... ... @@ -27,7 +27,8 @@
27 27  
28 28 skb = alloc_skb(len, GFP_ATOMIC);
29 29 if (skb) {
30   - skb->nh.raw = skb->mac.raw = skb->data;
  30 + skb_reset_mac_header(skb);
  31 + skb->nh.raw = skb->data;
31 32 skb->protocol = __constant_htons(ETH_P_AOE);
32 33 skb->priority = 0;
33 34 skb->next = skb->prev = NULL;
drivers/ieee1394/eth1394.c
... ... @@ -834,7 +834,7 @@
834 834 struct eth1394hdr *eth;
835 835 unsigned char *rawp;
836 836  
837   - skb->mac.raw = skb->data;
  837 + skb_reset_mac_header(skb);
838 838 skb_pull (skb, ETH1394_HLEN);
839 839 eth = eth1394_hdr(skb);
840 840  
drivers/infiniband/ulp/ipoib/ipoib_cm.c
... ... @@ -408,7 +408,7 @@
408 408 skb_put_frags(skb, IPOIB_CM_HEAD_SIZE, wc->byte_len, newskb);
409 409  
410 410 skb->protocol = ((struct ipoib_header *) skb->data)->proto;
411   - skb->mac.raw = skb->data;
  411 + skb_reset_mac_header(skb);
412 412 skb_pull(skb, IPOIB_ENCAP_LEN);
413 413  
414 414 dev->last_rx = jiffies;
drivers/infiniband/ulp/ipoib/ipoib_ib.c
... ... @@ -216,7 +216,7 @@
216 216 if (wc->slid != priv->local_lid ||
217 217 wc->src_qp != priv->qp->qp_num) {
218 218 skb->protocol = ((struct ipoib_header *) skb->data)->proto;
219   - skb->mac.raw = skb->data;
  219 + skb_reset_mac_header(skb);
220 220 skb_pull(skb, IPOIB_ENCAP_LEN);
221 221  
222 222 dev->last_rx = jiffies;
drivers/isdn/i4l/isdn_net.c
... ... @@ -1366,7 +1366,7 @@
1366 1366 struct ethhdr *eth;
1367 1367 unsigned char *rawp;
1368 1368  
1369   - skb->mac.raw = skb->data;
  1369 + skb_reset_mac_header(skb);
1370 1370 skb_pull(skb, ETH_HLEN);
1371 1371 eth = eth_hdr(skb);
1372 1372  
... ... @@ -1786,7 +1786,7 @@
1786 1786 }
1787 1787 skb->dev = ndev;
1788 1788 skb->pkt_type = PACKET_HOST;
1789   - skb->mac.raw = skb->data;
  1789 + skb_reset_mac_header(skb);
1790 1790 #ifdef ISDN_DEBUG_NET_DUMP
1791 1791 isdn_dumppkt("R:", skb->data, skb->len, 40);
1792 1792 #endif
drivers/isdn/i4l/isdn_ppp.c
... ... @@ -1167,7 +1167,7 @@
1167 1167 mlp->huptimer = 0;
1168 1168 #endif /* CONFIG_IPPP_FILTER */
1169 1169 skb->dev = dev;
1170   - skb->mac.raw = skb->data;
  1170 + skb_reset_mac_header(skb);
1171 1171 netif_rx(skb);
1172 1172 /* net_dev->local->stats.rx_packets++; done in isdn_net.c */
1173 1173 return;
drivers/message/fusion/mptlan.c
... ... @@ -753,7 +753,7 @@
753 753 /* Set the mac.raw pointer, since this apparently isn't getting
754 754 * done before we get the skb. Pull the data pointer past the mac data.
755 755 */
756   - skb->mac.raw = skb->data;
  756 + skb_reset_mac_header(skb);
757 757 skb_pull(skb, 12);
758 758  
759 759 dma = pci_map_single(mpt_dev->pcidev, skb->data, skb->len,
... ... @@ -1549,7 +1549,7 @@
1549 1549 struct mpt_lan_ohdr *fch = (struct mpt_lan_ohdr *)skb->data;
1550 1550 struct fcllc *fcllc;
1551 1551  
1552   - skb->mac.raw = skb->data;
  1552 + skb_reset_mac_header(skb);
1553 1553 skb_pull(skb, sizeof(struct mpt_lan_ohdr));
1554 1554  
1555 1555 if (fch->dtype == htons(0xffff)) {
drivers/net/appletalk/cops.c
... ... @@ -853,7 +853,7 @@
853 853 return;
854 854 }
855 855  
856   - skb->mac.raw = skb->data; /* Point to entire packet. */
  856 + skb_reset_mac_header(skb); /* Point to entire packet. */
857 857 skb_pull(skb,3);
858 858 skb->h.raw = skb->data; /* Point to data (Skip header). */
859 859  
drivers/net/appletalk/ltpc.c
... ... @@ -770,7 +770,7 @@
770 770 skb->data[0] = dnode;
771 771 skb->data[1] = snode;
772 772 skb->data[2] = llaptype;
773   - skb->mac.raw = skb->data; /* save pointer to llap header */
  773 + skb_reset_mac_header(skb); /* save pointer to llap header */
774 774 skb_pull(skb,3);
775 775  
776 776 /* copy ddp(s,e)hdr + contents */
drivers/net/arcnet/arc-rawmode.c
... ... @@ -110,7 +110,7 @@
110 110  
111 111 pkt = (struct archdr *) skb->data;
112 112  
113   - skb->mac.raw = skb->data;
  113 + skb_reset_mac_header(skb);
114 114 skb_pull(skb, ARC_HDR_SIZE);
115 115  
116 116 /* up to sizeof(pkt->soft) has already been copied from the card */
drivers/net/arcnet/capmode.c
... ... @@ -122,10 +122,8 @@
122 122 }
123 123 skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));
124 124 skb->dev = dev;
125   -
126   - pkt = (struct archdr *) skb->data;
127   -
128   - skb->mac.raw = skb->data;
  125 + skb_reset_mac_header(skb);
  126 + pkt = (struct archdr *)skb->mac.raw;
129 127 skb_pull(skb, ARC_HDR_SIZE);
130 128  
131 129 /* up to sizeof(pkt->soft) has already been copied from the card */
... ... @@ -270,9 +268,8 @@
270 268 skb_put(ackskb, length + ARC_HDR_SIZE );
271 269 ackskb->dev = dev;
272 270  
273   - ackpkt = (struct archdr *) ackskb->data;
274   -
275   - ackskb->mac.raw = ackskb->data;
  271 + skb_reset_mac_header(ackskb);
  272 + ackpkt = (struct archdr *)ackskb->mac.raw;
276 273 /* skb_pull(ackskb, ARC_HDR_SIZE); */
277 274  
278 275  
drivers/net/arcnet/rfc1051.c
... ... @@ -94,7 +94,7 @@
94 94 int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;
95 95  
96 96 /* Pull off the arcnet header. */
97   - skb->mac.raw = skb->data;
  97 + skb_reset_mac_header(skb);
98 98 skb_pull(skb, hdr_size);
99 99  
100 100 if (pkt->hard.dest == 0)
drivers/net/arcnet/rfc1201.c
... ... @@ -96,7 +96,7 @@
96 96 int hdr_size = ARC_HDR_SIZE + RFC1201_HDR_SIZE;
97 97  
98 98 /* Pull off the arcnet header. */
99   - skb->mac.raw = skb->data;
  99 + skb_reset_mac_header(skb);
100 100 skb_pull(skb, hdr_size);
101 101  
102 102 if (pkt->hard.dest == 0)
drivers/net/bonding/bond_3ad.c
... ... @@ -884,7 +884,7 @@
884 884 }
885 885  
886 886 skb->dev = slave->dev;
887   - skb->mac.raw = skb->data;
  887 + skb_reset_mac_header(skb);
888 888 skb->nh.raw = skb->data + ETH_HLEN;
889 889 skb->protocol = PKT_TYPE_LACPDU;
890 890 skb->priority = TC_PRIO_CONTROL;
... ... @@ -928,7 +928,7 @@
928 928 skb_reserve(skb, 16);
929 929  
930 930 skb->dev = slave->dev;
931   - skb->mac.raw = skb->data;
  931 + skb_reset_mac_header(skb);
932 932 skb->nh.raw = skb->data + ETH_HLEN;
933 933 skb->protocol = PKT_TYPE_LACPDU;
934 934  
drivers/net/bonding/bond_alb.c
... ... @@ -890,7 +890,7 @@
890 890 data = skb_put(skb, size);
891 891 memcpy(data, &pkt, size);
892 892  
893   - skb->mac.raw = data;
  893 + skb_reset_mac_header(skb);
894 894 skb->nh.raw = data + ETH_HLEN;
895 895 skb->protocol = pkt.type;
896 896 skb->priority = TC_PRIO_CONTROL;
... ... @@ -1266,7 +1266,7 @@
1266 1266 u8 *hash_start = NULL;
1267 1267 int res = 1;
1268 1268  
1269   - skb->mac.raw = (unsigned char *)skb->data;
  1269 + skb_reset_mac_header(skb);
1270 1270 eth_data = eth_hdr(skb);
1271 1271  
1272 1272 /* make sure that the curr_active_slave and the slaves list do
drivers/net/cxgb3/cxgb3_offload.c
... ... @@ -783,7 +783,7 @@
783 783 skb->protocol = htons(0xffff);
784 784 skb->dev = dev->lldev;
785 785 skb_pull(skb, sizeof(*p));
786   - skb->mac.raw = skb->data;
  786 + skb_reset_mac_header(skb);
787 787 netif_receive_skb(skb);
788 788 return 0;
789 789 }
drivers/net/cxgb3/sge.c
... ... @@ -1620,7 +1620,8 @@
1620 1620 unsigned int gather_idx)
1621 1621 {
1622 1622 rq->offload_pkts++;
1623   - skb->mac.raw = skb->nh.raw = skb->h.raw = skb->data;
  1623 + skb_reset_mac_header(skb);
  1624 + skb->nh.raw = skb->h.raw = skb->data;
1624 1625  
1625 1626 if (rq->polling) {
1626 1627 rx_gather[gather_idx++] = skb;
drivers/net/irda/ali-ircc.c
... ... @@ -1932,7 +1932,7 @@
1932 1932 self->stats.rx_packets++;
1933 1933  
1934 1934 skb->dev = self->netdev;
1935   - skb->mac.raw = skb->data;
  1935 + skb_reset_mac_header(skb);
1936 1936 skb->protocol = htons(ETH_P_IRDA);
1937 1937 netif_rx(skb);
1938 1938 self->netdev->last_rx = jiffies;
drivers/net/irda/au1k_ir.c
... ... @@ -606,7 +606,7 @@
606 606 skb_put(skb, count-2);
607 607 memcpy(skb->data, (void *)pDB->vaddr, count-2);
608 608 skb->dev = dev;
609   - skb->mac.raw = skb->data;
  609 + skb_reset_mac_header(skb);
610 610 skb->protocol = htons(ETH_P_IRDA);
611 611 netif_rx(skb);
612 612 prxd->count_0 = 0;
drivers/net/irda/donauboe.c
... ... @@ -1286,7 +1286,7 @@
1286 1286  
1287 1287 self->stats.rx_packets++;
1288 1288 skb->dev = self->netdev;
1289   - skb->mac.raw = skb->data;
  1289 + skb_reset_mac_header(skb);
1290 1290 skb->protocol = htons (ETH_P_IRDA);
1291 1291 }
1292 1292 else
drivers/net/irda/irda-usb.c
... ... @@ -921,7 +921,7 @@
921 921  
922 922 /* Ask the networking layer to queue the packet for the IrDA stack */
923 923 dataskb->dev = self->netdev;
924   - dataskb->mac.raw = dataskb->data;
  924 + skb_reset_mac_header(dataskb);
925 925 dataskb->protocol = htons(ETH_P_IRDA);
926 926 len = dataskb->len;
927 927 netif_rx(dataskb);
drivers/net/irda/mcs7780.c
... ... @@ -428,7 +428,7 @@
428 428 skb_reserve(skb, 1);
429 429 memcpy(skb->data, buf, new_len);
430 430 skb_put(skb, new_len);
431   - skb->mac.raw = skb->data;
  431 + skb_reset_mac_header(skb);
432 432 skb->protocol = htons(ETH_P_IRDA);
433 433 skb->dev = mcs->netdev;
434 434  
... ... @@ -481,7 +481,7 @@
481 481 skb_reserve(skb, 1);
482 482 memcpy(skb->data, buf, new_len);
483 483 skb_put(skb, new_len);
484   - skb->mac.raw = skb->data;
  484 + skb_reset_mac_header(skb);
485 485 skb->protocol = htons(ETH_P_IRDA);
486 486 skb->dev = mcs->netdev;
487 487  
drivers/net/irda/nsc-ircc.c
... ... @@ -1881,7 +1881,7 @@
1881 1881 self->stats.rx_packets++;
1882 1882  
1883 1883 skb->dev = self->netdev;
1884   - skb->mac.raw = skb->data;
  1884 + skb_reset_mac_header(skb);
1885 1885 skb->protocol = htons(ETH_P_IRDA);
1886 1886 netif_rx(skb);
1887 1887 self->netdev->last_rx = jiffies;
drivers/net/irda/pxaficp_ir.c
... ... @@ -391,7 +391,7 @@
391 391  
392 392 /* Feed it to IrLAP */
393 393 skb->dev = dev;
394   - skb->mac.raw = skb->data;
  394 + skb_reset_mac_header(skb);
395 395 skb->protocol = htons(ETH_P_IRDA);
396 396 netif_rx(skb);
397 397  
drivers/net/irda/sa1100_ir.c
... ... @@ -504,7 +504,7 @@
504 504  
505 505 skb_put(skb, len);
506 506 skb->dev = dev;
507   - skb->mac.raw = skb->data;
  507 + skb_reset_mac_header(skb);
508 508 skb->protocol = htons(ETH_P_IRDA);
509 509 si->stats.rx_packets++;
510 510 si->stats.rx_bytes += len;
drivers/net/irda/smsc-ircc2.c
... ... @@ -1412,7 +1412,7 @@
1412 1412 self->stats.rx_bytes += len;
1413 1413  
1414 1414 skb->dev = self->netdev;
1415   - skb->mac.raw = skb->data;
  1415 + skb_reset_mac_header(skb);
1416 1416 skb->protocol = htons(ETH_P_IRDA);
1417 1417 netif_rx(skb);
1418 1418 }
drivers/net/irda/stir4200.c
... ... @@ -364,7 +364,7 @@
364 364  
365 365 skb_put(skb, len);
366 366  
367   - skb->mac.raw = skb->data;
  367 + skb_reset_mac_header(skb);
368 368 skb->protocol = htons(ETH_P_IRDA);
369 369 skb->dev = stir->netdev;
370 370  
drivers/net/irda/via-ircc.c
... ... @@ -1125,7 +1125,7 @@
1125 1125 self->stats.rx_bytes += len;
1126 1126 self->stats.rx_packets++;
1127 1127 skb->dev = self->netdev;
1128   - skb->mac.raw = skb->data;
  1128 + skb_reset_mac_header(skb);
1129 1129 skb->protocol = htons(ETH_P_IRDA);
1130 1130 netif_rx(skb);
1131 1131 return TRUE;
... ... @@ -1198,7 +1198,7 @@
1198 1198 self->stats.rx_bytes += len;
1199 1199 self->stats.rx_packets++;
1200 1200 skb->dev = self->netdev;
1201   - skb->mac.raw = skb->data;
  1201 + skb_reset_mac_header(skb);
1202 1202 skb->protocol = htons(ETH_P_IRDA);
1203 1203 netif_rx(skb);
1204 1204  
... ... @@ -1244,7 +1244,7 @@
1244 1244 self->stats.rx_bytes += len;
1245 1245 self->stats.rx_packets++;
1246 1246 skb->dev = self->netdev;
1247   - skb->mac.raw = skb->data;
  1247 + skb_reset_mac_header(skb);
1248 1248 skb->protocol = htons(ETH_P_IRDA);
1249 1249 netif_rx(skb);
1250 1250 if (st_fifo->len < (MAX_RX_WINDOW + 2)) {
... ... @@ -1313,7 +1313,7 @@
1313 1313 self->stats.rx_bytes += len;
1314 1314 self->stats.rx_packets++;
1315 1315 skb->dev = self->netdev;
1316   - skb->mac.raw = skb->data;
  1316 + skb_reset_mac_header(skb);
1317 1317 skb->protocol = htons(ETH_P_IRDA);
1318 1318 netif_rx(skb);
1319 1319 } //while
drivers/net/irda/vlsi_ir.c
... ... @@ -595,7 +595,7 @@
595 595 rd->skb = NULL;
596 596 skb->dev = ndev;
597 597 memcpy(skb_put(skb,len), rd->buf, len);
598   - skb->mac.raw = skb->data;
  598 + skb_reset_mac_header(skb);
599 599 if (in_interrupt())
600 600 netif_rx(skb);
601 601 else
drivers/net/irda/w83977af_ir.c
... ... @@ -919,7 +919,7 @@
919 919 self->stats.rx_packets++;
920 920  
921 921 skb->dev = self->netdev;
922   - skb->mac.raw = skb->data;
  922 + skb_reset_mac_header(skb);
923 923 skb->protocol = htons(ETH_P_IRDA);
924 924 netif_rx(skb);
925 925 self->netdev->last_rx = jiffies;
drivers/net/myri_sbus.c
... ... @@ -368,7 +368,7 @@
368 368 struct ethhdr *eth;
369 369 unsigned char *rawp;
370 370  
371   - skb->mac.raw = (((unsigned char *)skb->data) + MYRI_PAD_LEN);
  371 + skb->mac.raw = skb->data + MYRI_PAD_LEN;
372 372 skb_pull(skb, dev->hard_header_len);
373 373 eth = eth_hdr(skb);
374 374  
drivers/net/ppp_generic.c
... ... @@ -1685,7 +1685,7 @@
1685 1685 skb_pull_rcsum(skb, 2);
1686 1686 skb->dev = ppp->dev;
1687 1687 skb->protocol = htons(npindex_to_ethertype[npi]);
1688   - skb->mac.raw = skb->data;
  1688 + skb_reset_mac_header(skb);
1689 1689 netif_rx(skb);
1690 1690 ppp->dev->last_rx = jiffies;
1691 1691 }
drivers/net/sb1000.c
... ... @@ -834,7 +834,7 @@
834 834 goto dropped_frame;
835 835 }
836 836 skb->dev = dev;
837   - skb->mac.raw = skb->data;
  837 + skb_reset_mac_header(skb);
838 838 skb->protocol = (unsigned short) buffer[NewDatagramHeaderSkip + 16];
839 839 insw(ioaddr, skb_put(skb, NewDatagramDataSize),
840 840 NewDatagramDataSize / 2);
... ... @@ -256,7 +256,7 @@
256 256  
257 257 switch (tun->flags & TUN_TYPE_MASK) {
258 258 case TUN_TUN_DEV:
259   - skb->mac.raw = skb->data;
  259 + skb_reset_mac_header(skb);
260 260 skb->protocol = pi.proto;
261 261 skb->dev = tun->dev;
262 262 break;
drivers/net/wan/cosa.c
... ... @@ -773,7 +773,7 @@
773 773 }
774 774 chan->rx_skb->protocol = htons(ETH_P_WAN_PPP);
775 775 chan->rx_skb->dev = chan->pppdev.dev;
776   - chan->rx_skb->mac.raw = chan->rx_skb->data;
  776 + skb_reset_mac_header(chan->rx_skb)
777 777 chan->stats.rx_packets++;
778 778 chan->stats.rx_bytes += chan->cosa->rxsize;
779 779 netif_rx(chan->rx_skb);
drivers/net/wan/cycx_x25.c
... ... @@ -834,7 +834,7 @@
834 834 ++chan->ifstats.rx_packets;
835 835 chan->ifstats.rx_bytes += pktlen;
836 836  
837   - skb->mac.raw = skb->data;
  837 + skb_reset_mac_header(skb);
838 838 netif_rx(skb);
839 839 dev->last_rx = jiffies; /* timestamp */
840 840 }
drivers/net/wan/dlci.c
... ... @@ -176,7 +176,7 @@
176 176 if (process)
177 177 {
178 178 /* we've set up the protocol, so discard the header */
179   - skb->mac.raw = skb->data;
  179 + skb_reset_mac_header(skb);
180 180 skb_pull(skb, header);
181 181 dlp->stats.rx_bytes += skb->len;
182 182 netif_rx(skb);
drivers/net/wan/farsync.c
... ... @@ -864,7 +864,7 @@
864 864 static __be16 farsync_type_trans(struct sk_buff *skb, struct net_device *dev)
865 865 {
866 866 skb->dev = dev;
867   - skb->mac.raw = skb->data;
  867 + skb_reset_mac_header(skb);
868 868 skb->pkt_type = PACKET_HOST;
869 869 return htons(ETH_P_CUST);
870 870 }
drivers/net/wan/lmc/lmc_main.c
... ... @@ -1667,7 +1667,7 @@
1667 1667 skb_put (skb, len);
1668 1668 skb->protocol = lmc_proto_type(sc, skb);
1669 1669 skb->protocol = htons(ETH_P_WAN_PPP);
1670   - skb->mac.raw = skb->data;
  1670 + skb_reset_mac_header(skb);
1671 1671 // skb->nh.raw = skb->data;
1672 1672 skb->dev = dev;
1673 1673 lmc_proto_netif(sc, skb);
... ... @@ -1705,7 +1705,7 @@
1705 1705 memcpy(skb_put(nsb, len), skb->data, len);
1706 1706  
1707 1707 nsb->protocol = lmc_proto_type(sc, skb);
1708   - nsb->mac.raw = nsb->data;
  1708 + skb_reset_mac_header(nsb);
1709 1709 // nsb->nh.raw = nsb->data;
1710 1710 nsb->dev = dev;
1711 1711 lmc_proto_netif(sc, nsb);
drivers/net/wan/pc300_drv.c
... ... @@ -1755,7 +1755,7 @@
1755 1755  
1756 1756 skb->dev = dev;
1757 1757 skb->protocol = htons(ETH_P_CUST);
1758   - skb->mac.raw = skb->data;
  1758 + skb_reset_mac_header(skb);
1759 1759 skb->pkt_type = PACKET_HOST;
1760 1760 skb->len = 10 + skb_main->len;
1761 1761  
drivers/net/wan/pc300_tty.c
... ... @@ -1003,7 +1003,7 @@
1003 1003 skb_put (skb, 10 + len);
1004 1004 skb->dev = dev->dev;
1005 1005 skb->protocol = htons(ETH_P_CUST);
1006   - skb->mac.raw = skb->data;
  1006 + skb_reset_mac_header(skb);
1007 1007 skb->pkt_type = PACKET_HOST;
1008 1008 skb->len = 10 + len;
1009 1009  
drivers/net/wireless/airo.c
... ... @@ -3411,7 +3411,7 @@
3411 3411 OUT4500( apriv, EVACK, EV_RX);
3412 3412  
3413 3413 if (test_bit(FLAG_802_11, &apriv->flags)) {
3414   - skb->mac.raw = skb->data;
  3414 + skb_reset_mac_header(skb);
3415 3415 skb->pkt_type = PACKET_OTHERHOST;
3416 3416 skb->dev = apriv->wifidev;
3417 3417 skb->protocol = htons(ETH_P_802_2);
... ... @@ -3746,7 +3746,7 @@
3746 3746 wireless_spy_update(ai->dev, sa, &wstats);
3747 3747 }
3748 3748 #endif /* IW_WIRELESS_SPY */
3749   - skb->mac.raw = skb->data;
  3749 + skb_reset_mac_header(skb);
3750 3750 skb->pkt_type = PACKET_OTHERHOST;
3751 3751 skb->dev = ai->wifidev;
3752 3752 skb->protocol = htons(ETH_P_802_2);
drivers/net/wireless/hostap/hostap_80211_rx.c
... ... @@ -167,7 +167,7 @@
167 167  
168 168 ret = skb->len - phdrlen;
169 169 skb->dev = dev;
170   - skb->mac.raw = skb->data;
  170 + skb_reset_mac_header(skb);
171 171 skb_pull(skb, hdrlen);
172 172 if (prism_header)
173 173 skb_pull(skb, phdrlen);
174 174  
175 175  
... ... @@ -1073,10 +1073,11 @@
1073 1073  
1074 1074 if (skb2 != NULL) {
1075 1075 /* send to wireless media */
  1076 + skb2->dev = dev;
1076 1077 skb2->protocol = __constant_htons(ETH_P_802_3);
1077   - skb2->mac.raw = skb2->nh.raw = skb2->data;
  1078 + skb_reset_mac_header(skb2);
  1079 + skb2->nh.raw = skb2->data;
1078 1080 /* skb2->nh.raw = skb2->data + ETH_HLEN; */
1079   - skb2->dev = dev;
1080 1081 dev_queue_xmit(skb2);
1081 1082 }
1082 1083  
drivers/net/wireless/hostap/hostap_80211_tx.c
... ... @@ -237,7 +237,7 @@
237 237 iface->stats.tx_packets++;
238 238 iface->stats.tx_bytes += skb->len;
239 239  
240   - skb->mac.raw = skb->data;
  240 + skb_reset_mac_header(skb);
241 241 meta = (struct hostap_skb_tx_data *) skb->cb;
242 242 memset(meta, 0, sizeof(*meta));
243 243 meta->magic = HOSTAP_SKB_TX_DATA_MAGIC;
drivers/net/wireless/hostap/hostap_ap.c
... ... @@ -982,7 +982,8 @@
982 982 meta->tx_cb_idx = tx_cb_idx;
983 983  
984 984 skb->dev = dev;
985   - skb->mac.raw = skb->nh.raw = skb->data;
  985 + skb_reset_mac_header(skb);
  986 + skb->nh.raw = skb->data;
986 987 dev_queue_xmit(skb);
987 988 }
988 989 #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
drivers/net/wireless/hostap/hostap_hw.c
... ... @@ -2217,7 +2217,7 @@
2217 2217 memcpy(skb_put(skb, len), payload, len);
2218 2218  
2219 2219 skb->dev = local->dev;
2220   - skb->mac.raw = skb->data;
  2220 + skb_reset_mac_header(skb);
2221 2221  
2222 2222 cb->func(skb, ok, cb->data);
2223 2223 }
drivers/net/wireless/hostap/hostap_main.c
... ... @@ -1063,7 +1063,8 @@
1063 1063 meta->iface = netdev_priv(dev);
1064 1064  
1065 1065 skb->dev = dev;
1066   - skb->mac.raw = skb->nh.raw = skb->data;
  1066 + skb_reset_mac_header(skb);
  1067 + skb->nh.raw = skb->data;
1067 1068 dev_queue_xmit(skb);
1068 1069  
1069 1070 return 0;
drivers/net/wireless/ipw2200.c
... ... @@ -8133,7 +8133,7 @@
8133 8133 skb->dev = priv->ieee->dev;
8134 8134  
8135 8135 /* Point raw at the ieee80211_stats */
8136   - skb->mac.raw = skb->data;
  8136 + skb_reset_mac_header(skb);
8137 8137  
8138 8138 skb->pkt_type = PACKET_OTHERHOST;
8139 8139 skb->protocol = __constant_htons(ETH_P_80211_STATS);
drivers/net/wireless/orinoco.c
... ... @@ -770,7 +770,7 @@
770 770  
771 771 /* Copy the 802.11 header to the skb */
772 772 memcpy(skb_put(skb, hdrlen), &(desc->frame_ctl), hdrlen);
773   - skb->mac.raw = skb->data;
  773 + skb_reset_mac_header(skb);
774 774  
775 775 /* If any, copy the data from the card to the skb */
776 776 if (datalen > 0) {
drivers/net/wireless/prism54/islpci_eth.c
... ... @@ -303,7 +303,7 @@
303 303 skb_pull(*skb, sizeof (struct rfmon_header));
304 304  
305 305 (*skb)->protocol = htons(ETH_P_802_2);
306   - (*skb)->mac.raw = (*skb)->data;
  306 + skb_reset_mac_header(*skb);
307 307 (*skb)->pkt_type = PACKET_OTHERHOST;
308 308  
309 309 return 0;
drivers/net/wireless/strip.c
... ... @@ -2009,7 +2009,7 @@
2009 2009 packetlen);
2010 2010 skb->dev = get_strip_dev(strip_info);
2011 2011 skb->protocol = header->protocol;
2012   - skb->mac.raw = skb->data;
  2012 + skb_reset_mac_header(skb);
2013 2013  
2014 2014 /* Having put a fake header on the front of the sk_buff for the */
2015 2015 /* benefit of tools like tcpdump, skb_pull now 'consumes' that */
drivers/s390/net/ctcmain.c
... ... @@ -455,7 +455,7 @@
455 455 return;
456 456 }
457 457 skb_put(pskb, header->length);
458   - pskb->mac.raw = pskb->data;
  458 + skb_reset_mac_header(pskb);
459 459 len -= header->length;
460 460 skb = dev_alloc_skb(pskb->len);
461 461 if (!skb) {
... ... @@ -473,7 +473,7 @@
473 473 return;
474 474 }
475 475 memcpy(skb_put(skb, pskb->len), pskb->data, pskb->len);
476   - skb->mac.raw = skb->data;
  476 + skb_reset_mac_header(skb);
477 477 skb->dev = pskb->dev;
478 478 skb->protocol = pskb->protocol;
479 479 pskb->ip_summed = CHECKSUM_UNNECESSARY;
drivers/s390/net/netiucv.c
... ... @@ -635,7 +635,7 @@
635 635 return;
636 636 }
637 637 skb_put(pskb, header->next);
638   - pskb->mac.raw = pskb->data;
  638 + skb_reset_mac_header(pskb);
639 639 skb = dev_alloc_skb(pskb->len);
640 640 if (!skb) {
641 641 PRINT_WARN("%s Out of memory in netiucv_unpack_skb\n",
... ... @@ -646,7 +646,7 @@
646 646 return;
647 647 }
648 648 memcpy(skb_put(skb, pskb->len), pskb->data, pskb->len);
649   - skb->mac.raw = skb->data;
  649 + skb_reset_mac_header(skb);
650 650 skb->dev = pskb->dev;
651 651 skb->protocol = pskb->protocol;
652 652 pskb->ip_summed = CHECKSUM_UNNECESSARY;
drivers/s390/net/qeth_eddp.c
... ... @@ -486,7 +486,7 @@
486 486 return -ENOMEM;
487 487 }
488 488 if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) {
489   - skb->mac.raw = (skb->data) + sizeof(struct qeth_hdr);
  489 + skb->mac.raw = skb->data + sizeof(struct qeth_hdr);
490 490 memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN);
491 491 #ifdef CONFIG_QETH_VLAN
492 492 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) {
drivers/s390/net/qeth_main.c
... ... @@ -2278,7 +2278,7 @@
2278 2278 (card->info.link_type == QETH_LINK_TYPE_LANE_TR))
2279 2279 return tr_type_trans(skb,dev);
2280 2280 #endif /* CONFIG_TR */
2281   - skb->mac.raw = skb->data;
  2281 + skb_reset_mac_header(skb);
2282 2282 skb_pull(skb, ETH_HLEN );
2283 2283 eth = eth_hdr(skb);
2284 2284  
... ... @@ -2461,7 +2461,7 @@
2461 2461 if (card->options.fake_ll)
2462 2462 qeth_rebuild_skb_fake_ll(card, skb, hdr);
2463 2463 else
2464   - skb->mac.raw = skb->data;
  2464 + skb_reset_mac_header(skb);
2465 2465 skb->ip_summed = card->options.checksum_type;
2466 2466 if (card->options.checksum_type == HW_CHECKSUMMING){
2467 2467 if ( (hdr->hdr.l3.ext_flags &
include/linux/hdlc.h
... ... @@ -132,8 +132,8 @@
132 132 {
133 133 hdlc_device *hdlc = dev_to_hdlc(dev);
134 134  
135   - skb->mac.raw = skb->data;
136   - skb->dev = dev;
  135 + skb->dev = dev;
  136 + skb_reset_mac_header(skb);
137 137  
138 138 if (hdlc->proto->type_trans)
139 139 return hdlc->proto->type_trans(skb, dev);
include/linux/skbuff.h
... ... @@ -960,6 +960,11 @@
960 960 skb->tail += len;
961 961 }
962 962  
  963 +static inline void skb_reset_mac_header(struct sk_buff *skb)
  964 +{
  965 + skb->mac.raw = skb->data;
  966 +}
  967 +
963 968 /*
964 969 * CPUs often take a performance hit when accessing unaligned memory
965 970 * locations. The actual performance hit varies, it can be small if the
... ... @@ -263,8 +263,8 @@
263 263 static inline __be16 ax25_type_trans(struct sk_buff *skb, struct net_device *dev)
264 264 {
265 265 skb->dev = dev;
  266 + skb_reset_mac_header(skb);
266 267 skb->pkt_type = PACKET_HOST;
267   - skb->mac.raw = skb->data;
268 268 return htons(ETH_P_AX25);
269 269 }
270 270  
include/net/x25device.h
... ... @@ -7,8 +7,8 @@
7 7  
8 8 static inline __be16 x25_type_trans(struct sk_buff *skb, struct net_device *dev)
9 9 {
10   - skb->mac.raw = skb->data;
11 10 skb->dev = dev;
  11 + skb_reset_mac_header(skb);
12 12 skb->pkt_type = PACKET_HOST;
13 13  
14 14 return htons(ETH_P_X25);
... ... @@ -131,7 +131,7 @@
131 131 */
132 132  
133 133 skb->dev = dev;
134   - skb->mac.raw = skb->data; /* point to frame control (FC) */
  134 + skb_reset_mac_header(skb); /* point to frame control (FC) */
135 135  
136 136 if(fddi->hdr.llc_8022_1.dsap==0xe0)
137 137 {
... ... @@ -131,7 +131,7 @@
131 131 * set the raw address here.
132 132 */
133 133 skb->dev = dev;
134   - skb->mac.raw = skb->data;
  134 + skb_reset_mac_header(skb);
135 135 hip = (struct hippi_hdr *)skb->mac.raw;
136 136 skb_pull(skb, HIPPI_HLEN);
137 137  
... ... @@ -194,7 +194,7 @@
194 194 unsigned riflen=0;
195 195  
196 196 skb->dev = dev;
197   - skb->mac.raw = skb->data;
  197 + skb_reset_mac_header(skb);
198 198 trh = tr_hdr(skb);
199 199  
200 200 if(trh->saddr[0] & TR_RII)
... ... @@ -458,7 +458,7 @@
458 458 /* FIXME: tcpdump shows that pointer to mac header is 2 bytes earlier,
459 459 than should be. What else should I set? */
460 460 skb_pull(skb, plen);
461   - skb->mac.raw = ((char *) (skb->data)) - ETH_HLEN;
  461 + skb->mac.raw = skb->data - ETH_HLEN;
462 462 skb->pkt_type = PACKET_HOST;
463 463 #ifdef CONFIG_BR2684_FAST_TRANS
464 464 skb->protocol = ((u16 *) skb->data)[-1];
... ... @@ -213,7 +213,7 @@
213 213 return;
214 214 }
215 215 ATM_SKB(skb)->vcc = vcc;
216   - skb->mac.raw = skb->data;
  216 + skb_reset_mac_header(skb);
217 217 if (!clip_vcc->encap
218 218 || skb->len < RFC1483LLC_LEN
219 219 || memcmp(skb->data, llc_oui, sizeof (llc_oui)))
... ... @@ -122,7 +122,7 @@
122 122 }
123 123  
124 124 skb_pull(skb, 1); /* Remove PID */
125   - skb->mac.raw = skb->nh.raw;
  125 + skb_reset_mac_header(skb);
126 126 skb->nh.raw = skb->data;
127 127 skb->dev = ax25->ax25_dev->dev;
128 128 skb->pkt_type = PACKET_HOST;
net/bluetooth/bnep/core.c
... ... @@ -326,7 +326,7 @@
326 326 return 0;
327 327 }
328 328  
329   - skb->mac.raw = skb->data;
  329 + skb_reset_mac_header(skb);
330 330  
331 331 /* Verify and pull out header */
332 332 if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK]))
net/bridge/br_device.c
... ... @@ -37,7 +37,7 @@
37 37 br->statistics.tx_packets++;
38 38 br->statistics.tx_bytes += skb->len;
39 39  
40   - skb->mac.raw = skb->data;
  40 + skb_reset_mac_header(skb);
41 41 skb_pull(skb, ETH_HLEN);
42 42  
43 43 if (dest[0] & 1)
... ... @@ -1066,7 +1066,7 @@
1066 1066 set by sender, so that the second statement is
1067 1067 just protection against buggy protocols.
1068 1068 */
1069   - skb2->mac.raw = skb2->data;
  1069 + skb_reset_mac_header(skb2);
1070 1070  
1071 1071 if (skb2->nh.raw < skb2->data ||
1072 1072 skb2->nh.raw > skb2->tail) {
... ... @@ -1206,7 +1206,7 @@
1206 1206  
1207 1207 BUG_ON(skb_shinfo(skb)->frag_list);
1208 1208  
1209   - skb->mac.raw = skb->data;
  1209 + skb_reset_mac_header(skb);
1210 1210 skb->mac_len = skb->nh.raw - skb->data;
1211 1211 __skb_pull(skb, skb->mac_len);
1212 1212  
... ... @@ -324,7 +324,7 @@
324 324 iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
325 325  
326 326 eth = (struct ethhdr *) skb_push(skb, ETH_HLEN);
327   - skb->mac.raw = skb->data;
  327 + skb_reset_mac_header(skb);
328 328 skb->protocol = eth->h_proto = htons(ETH_P_IP);
329 329 memcpy(eth->h_source, np->local_mac, 6);
330 330 memcpy(eth->h_dest, np->remote_mac, 6);
... ... @@ -1928,7 +1928,7 @@
1928 1928 nskb->mac_len = skb->mac_len;
1929 1929  
1930 1930 skb_reserve(nskb, headroom);
1931   - nskb->mac.raw = nskb->data;
  1931 + skb_reset_mac_header(nskb);
1932 1932 nskb->nh.raw = nskb->data + skb->mac_len;
1933 1933 nskb->h.raw = nskb->nh.raw + (skb->h.raw - skb->nh.raw);
1934 1934 memcpy(skb_put(nskb, doffset), skb->data, doffset);
net/decnet/dn_route.c
... ... @@ -1537,7 +1537,7 @@
1537 1537 skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
1538 1538 if (skb == NULL)
1539 1539 return -ENOBUFS;
1540   - skb->mac.raw = skb->data;
  1540 + skb_reset_mac_header(skb);
1541 1541 cb = DN_SKB_CB(skb);
1542 1542  
1543 1543 if (rta[RTA_SRC-1])
... ... @@ -157,7 +157,7 @@
157 157 unsigned char *rawp;
158 158  
159 159 skb->dev = dev;
160   - skb->mac.raw = skb->data;
  160 + skb_reset_mac_header(skb);
161 161 skb_pull(skb, ETH_HLEN);
162 162 eth = eth_hdr(skb);
163 163  
net/ieee80211/ieee80211_rx.c
... ... @@ -42,7 +42,7 @@
42 42 u16 fc = le16_to_cpu(hdr->frame_ctl);
43 43  
44 44 skb->dev = ieee->dev;
45   - skb->mac.raw = skb->data;
  45 + skb_reset_mac_header(skb);
46 46 skb_pull(skb, ieee80211_get_hdrlen(fc));
47 47 skb->pkt_type = PACKET_OTHERHOST;
48 48 skb->protocol = __constant_htons(ETH_P_80211_RAW);
49 49  
50 50  
... ... @@ -789,10 +789,11 @@
789 789  
790 790 if (skb2 != NULL) {
791 791 /* send to wireless media */
  792 + skb2->dev = dev;
792 793 skb2->protocol = __constant_htons(ETH_P_802_3);
793   - skb2->mac.raw = skb2->nh.raw = skb2->data;
  794 + skb_reset_mac_header(skb2);
  795 + skb2->nh.raw = skb2->data;
794 796 /* skb2->nh.raw = skb2->data + ETH_HLEN; */
795   - skb2->dev = dev;
796 797 dev_queue_xmit(skb2);
797 798 }
798 799 #endif
... ... @@ -616,7 +616,7 @@
616 616 offset += 4;
617 617 }
618 618  
619   - skb->mac.raw = skb->nh.raw;
  619 + skb_reset_mac_header(skb);
620 620 skb->nh.raw = __pskb_pull(skb, offset);
621 621 skb_postpull_rcsum(skb, skb->h.raw, offset);
622 622 skb->pkt_type = PACKET_HOST;
net/ipv4/ip_output.c
... ... @@ -95,7 +95,7 @@
95 95 /* dev_loopback_xmit for use with netfilter. */
96 96 static int ip_dev_loopback_xmit(struct sk_buff *newskb)
97 97 {
98   - newskb->mac.raw = newskb->data;
  98 + skb_reset_mac_header(newskb);
99 99 __skb_pull(newskb, newskb->nh.raw - newskb->data);
100 100 newskb->pkt_type = PACKET_LOOPBACK;
101 101 newskb->ip_summed = CHECKSUM_UNNECESSARY;
... ... @@ -2747,7 +2747,8 @@
2747 2747 /* Reserve room for dummy headers, this skb can pass
2748 2748 through good chunk of routing engine.
2749 2749 */
2750   - skb->mac.raw = skb->nh.raw = skb->data;
  2750 + skb_reset_mac_header(skb);
  2751 + skb->nh.raw = skb->data;
2751 2752  
2752 2753 /* Bugfix: need to give ip_route_input enough of an IP header to not gag. */
2753 2754 skb->nh.iph->protocol = IPPROTO_ICMP;
net/ipv6/ip6_output.c
... ... @@ -88,7 +88,7 @@
88 88 /* dev_loopback_xmit for use with netfilter. */
89 89 static int ip6_dev_loopback_xmit(struct sk_buff *newskb)
90 90 {
91   - newskb->mac.raw = newskb->data;
  91 + skb_reset_mac_header(newskb);
92 92 __skb_pull(newskb, newskb->nh.raw - newskb->data);
93 93 newskb->pkt_type = PACKET_LOOPBACK;
94 94 newskb->ip_summed = CHECKSUM_UNNECESSARY;
... ... @@ -2218,7 +2218,7 @@
2218 2218 /* Reserve room for dummy headers, this skb can pass
2219 2219 through good chunk of routing engine.
2220 2220 */
2221   - skb->mac.raw = skb->data;
  2221 + skb_reset_mac_header(skb);
2222 2222 skb_reserve(skb, MAX_HEADER + sizeof(struct ipv6hdr));
2223 2223  
2224 2224 rt = (struct rt6_info*) ip6_route_output(NULL, &fl);
net/irda/irlap_frame.c
... ... @@ -93,7 +93,8 @@
93 93 {
94 94 /* Some common init stuff */
95 95 skb->dev = self->netdev;
96   - skb->h.raw = skb->nh.raw = skb->mac.raw = skb->data;
  96 + skb_reset_mac_header(skb);
  97 + skb->h.raw = skb->nh.raw = skb->data;
97 98 skb->protocol = htons(ETH_P_IRDA);
98 99 skb->priority = TC_PRIO_BESTEFFORT;
99 100  
... ... @@ -256,7 +256,7 @@
256 256  
257 257 /* Feed it to IrLAP layer */
258 258 dataskb->dev = dev;
259   - dataskb->mac.raw = dataskb->data;
  259 + skb_reset_mac_header(dataskb);
260 260 dataskb->protocol = htons(ETH_P_IRDA);
261 261  
262 262 netif_rx(dataskb);
net/llc/llc_output.c
... ... @@ -52,7 +52,7 @@
52 52 if (da) {
53 53 memcpy(trh->daddr, da, dev->addr_len);
54 54 tr_source_route(skb, trh, dev);
55   - skb->mac.raw = skb->data;
  55 + skb_reset_mac_header(skb);
56 56 }
57 57 break;
58 58 }
... ... @@ -56,7 +56,7 @@
56 56  
57 57 /* Spoof incoming device */
58 58 skb->dev = dev;
59   - skb->mac.raw = skb->nh.raw;
  59 + skb_reset_mac_header(skb);
60 60 skb->nh.raw = skb->data;
61 61 skb->pkt_type = PACKET_HOST;
62 62  
net/wanrouter/wanmain.c
... ... @@ -339,7 +339,7 @@
339 339 skb->protocol = ethertype;
340 340 skb->pkt_type = PACKET_HOST; /* Physically point to point */
341 341 skb_pull(skb, cnt);
342   - skb->mac.raw = skb->data;
  342 + skb_reset_mac_header(skb);
343 343 return ethertype;
344 344 }
345 345