diff options
85 files changed, 119 insertions, 109 deletions
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index 04e31f86c10..859303730b2 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c @@ -55,7 +55,7 @@ static int uml_net_rx(struct net_device *dev)  	skb->dev = dev;  	skb_put(skb, dev->mtu); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	pkt_len = (*lp->read)(lp->fd, &skb, lp);  	if (pkt_len > 0) { diff --git a/arch/xtensa/platform-iss/network.c b/arch/xtensa/platform-iss/network.c index 8ebfc876122..ab05bff4010 100644 --- a/arch/xtensa/platform-iss/network.c +++ b/arch/xtensa/platform-iss/network.c @@ -386,7 +386,7 @@ static int iss_net_rx(struct net_device *dev)  	/* Setup skb */  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	pkt_len = lp->tp.read(lp, &skb);  	skb_put(skb, pkt_len); diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 4ab7b40e8c5..74062dc4e90 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c @@ -27,7 +27,8 @@ new_skb(ulong len)  	skb = alloc_skb(len, GFP_ATOMIC);  	if (skb) { -		skb->nh.raw = skb->mac.raw = skb->data; +		skb_reset_mac_header(skb); +		skb->nh.raw = skb->data;  		skb->protocol = __constant_htons(ETH_P_AOE);  		skb->priority = 0;  		skb->next = skb->prev = NULL; diff --git a/drivers/ieee1394/eth1394.c b/drivers/ieee1394/eth1394.c index 03e44b337eb..db2346f4d20 100644 --- a/drivers/ieee1394/eth1394.c +++ b/drivers/ieee1394/eth1394.c @@ -834,7 +834,7 @@ static inline u16 ether1394_type_trans(struct sk_buff *skb,  	struct eth1394hdr *eth;  	unsigned char *rawp; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull (skb, ETH1394_HLEN);  	eth = eth1394_hdr(skb); diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 2b242a4823f..c722e5c141b 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -408,7 +408,7 @@ void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)  	skb_put_frags(skb, IPOIB_CM_HEAD_SIZE, wc->byte_len, newskb);  	skb->protocol = ((struct ipoib_header *) skb->data)->proto; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, IPOIB_ENCAP_LEN);  	dev->last_rx = jiffies; diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index ba0ee5cf2ad..93f74567897 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -216,7 +216,7 @@ static void ipoib_ib_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)  	if (wc->slid != priv->local_lid ||  	    wc->src_qp != priv->qp->qp_num) {  		skb->protocol = ((struct ipoib_header *) skb->data)->proto; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb_pull(skb, IPOIB_ENCAP_LEN);  		dev->last_rx = jiffies; diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index 838b3734e2b..fadb9291bc1 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c @@ -1366,7 +1366,7 @@ isdn_net_type_trans(struct sk_buff *skb, struct net_device *dev)  	struct ethhdr *eth;  	unsigned char *rawp; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ETH_HLEN);  	eth = eth_hdr(skb); @@ -1786,7 +1786,7 @@ isdn_net_receive(struct net_device *ndev, struct sk_buff *skb)  	}  	skb->dev = ndev;  	skb->pkt_type = PACKET_HOST; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  #ifdef ISDN_DEBUG_NET_DUMP  	isdn_dumppkt("R:", skb->data, skb->len, 40);  #endif diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c index 1b2df80c3bc..be915051cb2 100644 --- a/drivers/isdn/i4l/isdn_ppp.c +++ b/drivers/isdn/i4l/isdn_ppp.c @@ -1167,7 +1167,7 @@ isdn_ppp_push_higher(isdn_net_dev * net_dev, isdn_net_local * lp, struct sk_buff  		mlp->huptimer = 0;  #endif /* CONFIG_IPPP_FILTER */  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	netif_rx(skb);  	/* net_dev->local->stats.rx_packets++; done in isdn_net.c */  	return; diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c index b691292ff59..d5b878d5628 100644 --- a/drivers/message/fusion/mptlan.c +++ b/drivers/message/fusion/mptlan.c @@ -753,7 +753,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)  	/* Set the mac.raw pointer, since this apparently isn't getting  	 * done before we get the skb. Pull the data pointer past the mac data.  	 */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, 12);          dma = pci_map_single(mpt_dev->pcidev, skb->data, skb->len, @@ -1549,7 +1549,7 @@ mpt_lan_type_trans(struct sk_buff *skb, struct net_device *dev)  	struct mpt_lan_ohdr *fch = (struct mpt_lan_ohdr *)skb->data;  	struct fcllc *fcllc; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, sizeof(struct mpt_lan_ohdr));  	if (fch->dtype == htons(0xffff)) { diff --git a/drivers/net/appletalk/cops.c b/drivers/net/appletalk/cops.c index dba5e516545..28cb79cee91 100644 --- a/drivers/net/appletalk/cops.c +++ b/drivers/net/appletalk/cops.c @@ -853,7 +853,7 @@ static void cops_rx(struct net_device *dev)                  return;          } -        skb->mac.raw    = skb->data;    /* Point to entire packet. */ +        skb_reset_mac_header(skb);    /* Point to entire packet. */          skb_pull(skb,3);          skb->h.raw      = skb->data;    /* Point to data (Skip header). */ diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c index 2ea44ce4981..12682439f8b 100644 --- a/drivers/net/appletalk/ltpc.c +++ b/drivers/net/appletalk/ltpc.c @@ -770,7 +770,7 @@ static int sendup_buffer (struct net_device *dev)  	skb->data[0] = dnode;  	skb->data[1] = snode;  	skb->data[2] = llaptype; -	skb->mac.raw = skb->data;	/* save pointer to llap header */ +	skb_reset_mac_header(skb);	/* save pointer to llap header */  	skb_pull(skb,3);  	/* copy ddp(s,e)hdr + contents */ diff --git a/drivers/net/arcnet/arc-rawmode.c b/drivers/net/arcnet/arc-rawmode.c index 6318814a11a..e0a18e7c73c 100644 --- a/drivers/net/arcnet/arc-rawmode.c +++ b/drivers/net/arcnet/arc-rawmode.c @@ -110,7 +110,7 @@ static void rx(struct net_device *dev, int bufnum,  	pkt = (struct archdr *) skb->data; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ARC_HDR_SIZE);  	/* up to sizeof(pkt->soft) has already been copied from the card */ diff --git a/drivers/net/arcnet/capmode.c b/drivers/net/arcnet/capmode.c index 66485585ab3..6c764b66e9c 100644 --- a/drivers/net/arcnet/capmode.c +++ b/drivers/net/arcnet/capmode.c @@ -122,10 +122,8 @@ static void rx(struct net_device *dev, int bufnum,  	}  	skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));  	skb->dev = dev; - -	pkt = (struct archdr *) skb->data; - -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb); +	pkt = (struct archdr *)skb->mac.raw;  	skb_pull(skb, ARC_HDR_SIZE);  	/* up to sizeof(pkt->soft) has already been copied from the card */ @@ -270,9 +268,8 @@ static int ack_tx(struct net_device *dev, int acked)    skb_put(ackskb, length + ARC_HDR_SIZE );    ackskb->dev = dev; -  ackpkt = (struct archdr *) ackskb->data; - -  ackskb->mac.raw = ackskb->data; +  skb_reset_mac_header(ackskb); +  ackpkt = (struct archdr *)ackskb->mac.raw;    /* skb_pull(ackskb, ARC_HDR_SIZE); */ diff --git a/drivers/net/arcnet/rfc1051.c b/drivers/net/arcnet/rfc1051.c index 6d6c69f036e..2de8877ece2 100644 --- a/drivers/net/arcnet/rfc1051.c +++ b/drivers/net/arcnet/rfc1051.c @@ -94,7 +94,7 @@ static unsigned short type_trans(struct sk_buff *skb, struct net_device *dev)  	int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;  	/* Pull off the arcnet header. */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, hdr_size);  	if (pkt->hard.dest == 0) diff --git a/drivers/net/arcnet/rfc1201.c b/drivers/net/arcnet/rfc1201.c index bee34226abf..460a095000c 100644 --- a/drivers/net/arcnet/rfc1201.c +++ b/drivers/net/arcnet/rfc1201.c @@ -96,7 +96,7 @@ static unsigned short type_trans(struct sk_buff *skb, struct net_device *dev)  	int hdr_size = ARC_HDR_SIZE + RFC1201_HDR_SIZE;  	/* Pull off the arcnet header. */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, hdr_size);  	if (pkt->hard.dest == 0) diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 3fb354d9c51..e3c9e2e56d1 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -884,7 +884,7 @@ static int ad_lacpdu_send(struct port *port)  	}  	skb->dev = slave->dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->nh.raw = skb->data + ETH_HLEN;  	skb->protocol = PKT_TYPE_LACPDU;  	skb->priority = TC_PRIO_CONTROL; @@ -928,7 +928,7 @@ static int ad_marker_send(struct port *port, struct marker *marker)  	skb_reserve(skb, 16);  	skb->dev = slave->dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->nh.raw = skb->data + ETH_HLEN;  	skb->protocol = PKT_TYPE_LACPDU; diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 217a2eedee0..916162ca0c9 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -890,7 +890,7 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[])  		data = skb_put(skb, size);  		memcpy(data, &pkt, size); -		skb->mac.raw = data; +		skb_reset_mac_header(skb);  		skb->nh.raw = data + ETH_HLEN;  		skb->protocol = pkt.type;  		skb->priority = TC_PRIO_CONTROL; @@ -1266,7 +1266,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)  	u8 *hash_start = NULL;  	int res = 1; -	skb->mac.raw = (unsigned char *)skb->data; +	skb_reset_mac_header(skb);  	eth_data = eth_hdr(skb);  	/* make sure that the curr_active_slave and the slaves list do diff --git a/drivers/net/cxgb3/cxgb3_offload.c b/drivers/net/cxgb3/cxgb3_offload.c index 199e5066acf..ebcf35e4cf5 100644 --- a/drivers/net/cxgb3/cxgb3_offload.c +++ b/drivers/net/cxgb3/cxgb3_offload.c @@ -783,7 +783,7 @@ static int do_trace(struct t3cdev *dev, struct sk_buff *skb)  	skb->protocol = htons(0xffff);  	skb->dev = dev->lldev;  	skb_pull(skb, sizeof(*p)); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	netif_receive_skb(skb);  	return 0;  } diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 8946f7aa97c..b5cf2a60834 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c @@ -1620,7 +1620,8 @@ static inline int rx_offload(struct t3cdev *tdev, struct sge_rspq *rq,  			     unsigned int gather_idx)  {  	rq->offload_pkts++; -	skb->mac.raw = skb->nh.raw = skb->h.raw = skb->data; +	skb_reset_mac_header(skb); +	skb->nh.raw = skb->h.raw = skb->data;  	if (rq->polling) {  		rx_gather[gather_idx++] = skb; diff --git a/drivers/net/irda/ali-ircc.c b/drivers/net/irda/ali-ircc.c index cebf8c374bc..0f10758226f 100644 --- a/drivers/net/irda/ali-ircc.c +++ b/drivers/net/irda/ali-ircc.c @@ -1932,7 +1932,7 @@ static int  ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)  			self->stats.rx_packets++;  			skb->dev = self->netdev; -			skb->mac.raw  = skb->data; +			skb_reset_mac_header(skb);  			skb->protocol = htons(ETH_P_IRDA);  			netif_rx(skb);  			self->netdev->last_rx = jiffies; diff --git a/drivers/net/irda/au1k_ir.c b/drivers/net/irda/au1k_ir.c index 37914dc5b90..27afd0f367d 100644 --- a/drivers/net/irda/au1k_ir.c +++ b/drivers/net/irda/au1k_ir.c @@ -606,7 +606,7 @@ static int au1k_irda_rx(struct net_device *dev)  				skb_put(skb, count-2);  			memcpy(skb->data, (void *)pDB->vaddr, count-2);  			skb->dev = dev; -			skb->mac.raw = skb->data; +			skb_reset_mac_header(skb);  			skb->protocol = htons(ETH_P_IRDA);  			netif_rx(skb);  			prxd->count_0 = 0; diff --git a/drivers/net/irda/donauboe.c b/drivers/net/irda/donauboe.c index 11af0ae7510..ddfa6c38a16 100644 --- a/drivers/net/irda/donauboe.c +++ b/drivers/net/irda/donauboe.c @@ -1286,7 +1286,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');                        self->stats.rx_packets++;                        skb->dev = self->netdev; -                      skb->mac.raw = skb->data; +                      skb_reset_mac_header(skb);                        skb->protocol = htons (ETH_P_IRDA);                      }                    else diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c index 1d510bdc9b8..6ef375a095f 100644 --- a/drivers/net/irda/irda-usb.c +++ b/drivers/net/irda/irda-usb.c @@ -921,7 +921,7 @@ static void irda_usb_receive(struct urb *urb)  	/* Ask the networking layer to queue the packet for the IrDA stack */  	dataskb->dev = self->netdev; -	dataskb->mac.raw  = dataskb->data; +	skb_reset_mac_header(dataskb);  	dataskb->protocol = htons(ETH_P_IRDA);  	len = dataskb->len;  	netif_rx(dataskb); diff --git a/drivers/net/irda/mcs7780.c b/drivers/net/irda/mcs7780.c index f0c61f3b2a8..3ff1f4b33c0 100644 --- a/drivers/net/irda/mcs7780.c +++ b/drivers/net/irda/mcs7780.c @@ -428,7 +428,7 @@ static void mcs_unwrap_mir(struct mcs_cb *mcs, __u8 *buf, int len)  	skb_reserve(skb, 1);  	memcpy(skb->data, buf, new_len);  	skb_put(skb, new_len); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IRDA);  	skb->dev = mcs->netdev; @@ -481,7 +481,7 @@ static void mcs_unwrap_fir(struct mcs_cb *mcs, __u8 *buf, int len)  	skb_reserve(skb, 1);  	memcpy(skb->data, buf, new_len);  	skb_put(skb, new_len); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IRDA);  	skb->dev = mcs->netdev; diff --git a/drivers/net/irda/nsc-ircc.c b/drivers/net/irda/nsc-ircc.c index 29b5ccd29d0..8ce7dad582f 100644 --- a/drivers/net/irda/nsc-ircc.c +++ b/drivers/net/irda/nsc-ircc.c @@ -1881,7 +1881,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)  			self->stats.rx_packets++;  			skb->dev = self->netdev; -			skb->mac.raw  = skb->data; +			skb_reset_mac_header(skb);  			skb->protocol = htons(ETH_P_IRDA);  			netif_rx(skb);  			self->netdev->last_rx = jiffies; diff --git a/drivers/net/irda/pxaficp_ir.c b/drivers/net/irda/pxaficp_ir.c index 2272156af31..f35d7d42624 100644 --- a/drivers/net/irda/pxaficp_ir.c +++ b/drivers/net/irda/pxaficp_ir.c @@ -391,7 +391,7 @@ static void pxa_irda_fir_irq_eif(struct pxa_irda *si, struct net_device *dev, in  		/* Feed it to IrLAP  */  		skb->dev = dev; -		skb->mac.raw  = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = htons(ETH_P_IRDA);  		netif_rx(skb); diff --git a/drivers/net/irda/sa1100_ir.c b/drivers/net/irda/sa1100_ir.c index 937372d0039..056639f72be 100644 --- a/drivers/net/irda/sa1100_ir.c +++ b/drivers/net/irda/sa1100_ir.c @@ -504,7 +504,7 @@ static void sa1100_irda_fir_error(struct sa1100_irda *si, struct net_device *dev  		skb_put(skb, len);  		skb->dev = dev; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = htons(ETH_P_IRDA);  		si->stats.rx_packets++;  		si->stats.rx_bytes += len; diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c index 31c623381ea..103a2d18ed2 100644 --- a/drivers/net/irda/smsc-ircc2.c +++ b/drivers/net/irda/smsc-ircc2.c @@ -1412,7 +1412,7 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)  	self->stats.rx_bytes += len;  	skb->dev = self->netdev; -	skb->mac.raw  = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IRDA);  	netif_rx(skb);  } diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c index 20d306fea4c..a22175f4ea8 100644 --- a/drivers/net/irda/stir4200.c +++ b/drivers/net/irda/stir4200.c @@ -364,7 +364,7 @@ static void fir_eof(struct stir_cb *stir)  	skb_put(skb, len); -	skb->mac.raw  = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IRDA);  	skb->dev = stir->netdev; diff --git a/drivers/net/irda/via-ircc.c b/drivers/net/irda/via-ircc.c index c3ed9b3067e..5ff41631460 100644 --- a/drivers/net/irda/via-ircc.c +++ b/drivers/net/irda/via-ircc.c @@ -1125,7 +1125,7 @@ static int via_ircc_dma_receive_complete(struct via_ircc_cb *self,  		self->stats.rx_bytes += len;  		self->stats.rx_packets++;  		skb->dev = self->netdev; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = htons(ETH_P_IRDA);  		netif_rx(skb);  		return TRUE; @@ -1198,7 +1198,7 @@ F01_E */  		self->stats.rx_bytes += len;  		self->stats.rx_packets++;  		skb->dev = self->netdev; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = htons(ETH_P_IRDA);  		netif_rx(skb); @@ -1244,7 +1244,7 @@ static int upload_rxdata(struct via_ircc_cb *self, int iobase)  	self->stats.rx_bytes += len;  	self->stats.rx_packets++;  	skb->dev = self->netdev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IRDA);  	netif_rx(skb);  	if (st_fifo->len < (MAX_RX_WINDOW + 2)) { @@ -1313,7 +1313,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)  			self->stats.rx_bytes += len;  			self->stats.rx_packets++;  			skb->dev = self->netdev; -			skb->mac.raw = skb->data; +			skb_reset_mac_header(skb);  			skb->protocol = htons(ETH_P_IRDA);  			netif_rx(skb);  		}		//while diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c index 3457e9d8b66..79b407f3a49 100644 --- a/drivers/net/irda/vlsi_ir.c +++ b/drivers/net/irda/vlsi_ir.c @@ -595,7 +595,7 @@ static int vlsi_process_rx(struct vlsi_ring *r, struct ring_descr *rd)  	rd->skb = NULL;  	skb->dev = ndev;  	memcpy(skb_put(skb,len), rd->buf, len); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	if (in_interrupt())  		netif_rx(skb);  	else diff --git a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c index 4212657fa4f..bee44513095 100644 --- a/drivers/net/irda/w83977af_ir.c +++ b/drivers/net/irda/w83977af_ir.c @@ -919,7 +919,7 @@ int w83977af_dma_receive_complete(struct w83977af_ir *self)  			self->stats.rx_packets++;  			skb->dev = self->netdev; -			skb->mac.raw  = skb->data; +			skb_reset_mac_header(skb);  			skb->protocol = htons(ETH_P_IRDA);  			netif_rx(skb);  			self->netdev->last_rx = jiffies; diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c index ee26ef52289..de092658db6 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)  	struct ethhdr *eth;  	unsigned char *rawp; -	skb->mac.raw = (((unsigned char *)skb->data) + MYRI_PAD_LEN); +	skb->mac.raw = skb->data + MYRI_PAD_LEN;  	skb_pull(skb, dev->hard_header_len);  	eth = eth_hdr(skb); diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index ef58e412878..18f1790aab9 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c @@ -1685,7 +1685,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)  			skb_pull_rcsum(skb, 2);  			skb->dev = ppp->dev;  			skb->protocol = htons(npindex_to_ethertype[npi]); -			skb->mac.raw = skb->data; +			skb_reset_mac_header(skb);  			netif_rx(skb);  			ppp->dev->last_rx = jiffies;  		} diff --git a/drivers/net/sb1000.c b/drivers/net/sb1000.c index b9fa4fbb139..1de3eec1a79 100644 --- a/drivers/net/sb1000.c +++ b/drivers/net/sb1000.c @@ -834,7 +834,7 @@ printk("cm0: IP identification: %02x%02x  fragment offset: %02x%02x\n", buffer[3  			goto dropped_frame;  		}  		skb->dev = dev; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = (unsigned short) buffer[NewDatagramHeaderSkip + 16];  		insw(ioaddr, skb_put(skb, NewDatagramDataSize),  			NewDatagramDataSize / 2); diff --git a/drivers/net/tun.c b/drivers/net/tun.c index a57aa010cb2..288d8559f8c 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -256,7 +256,7 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun, struct iovec *iv,  	switch (tun->flags & TUN_TYPE_MASK) {  	case TUN_TUN_DEV: -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->protocol = pi.proto;  		skb->dev = tun->dev;  		break; diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c index 5b82e4fd0d7..c198511ec3f 100644 --- a/drivers/net/wan/cosa.c +++ b/drivers/net/wan/cosa.c @@ -773,7 +773,7 @@ static int sppp_rx_done(struct channel_data *chan)  	}  	chan->rx_skb->protocol = htons(ETH_P_WAN_PPP);  	chan->rx_skb->dev = chan->pppdev.dev; -	chan->rx_skb->mac.raw = chan->rx_skb->data; +	skb_reset_mac_header(chan->rx_skb)  	chan->stats.rx_packets++;  	chan->stats.rx_bytes += chan->cosa->rxsize;  	netif_rx(chan->rx_skb); diff --git a/drivers/net/wan/cycx_x25.c b/drivers/net/wan/cycx_x25.c index a631d1c2fa1..016b3ff3ea5 100644 --- a/drivers/net/wan/cycx_x25.c +++ b/drivers/net/wan/cycx_x25.c @@ -834,7 +834,7 @@ static void cycx_x25_irq_rx(struct cycx_device *card, struct cycx_x25_cmd *cmd)  	++chan->ifstats.rx_packets;  	chan->ifstats.rx_bytes += pktlen; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	netif_rx(skb);  	dev->last_rx = jiffies;		/* timestamp */  } diff --git a/drivers/net/wan/dlci.c b/drivers/net/wan/dlci.c index 73698755943..66be20c292b 100644 --- a/drivers/net/wan/dlci.c +++ b/drivers/net/wan/dlci.c @@ -176,7 +176,7 @@ static void dlci_receive(struct sk_buff *skb, struct net_device *dev)  	if (process)  	{  		/* we've set up the protocol, so discard the header */ -		skb->mac.raw = skb->data;  +		skb_reset_mac_header(skb);  		skb_pull(skb, header);  		dlp->stats.rx_bytes += skb->len;  		netif_rx(skb); diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c index c45d6a83339..58a53b6d9b4 100644 --- a/drivers/net/wan/farsync.c +++ b/drivers/net/wan/farsync.c @@ -864,7 +864,7 @@ fst_tx_dma_complete(struct fst_card_info *card, struct fst_port_info *port,  static __be16 farsync_type_trans(struct sk_buff *skb, struct net_device *dev)  {  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_HOST;  	return htons(ETH_P_CUST);  } diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c index 2b54f1bc3a0..6d288839dda 100644 --- a/drivers/net/wan/lmc/lmc_main.c +++ b/drivers/net/wan/lmc/lmc_main.c @@ -1667,7 +1667,7 @@ static int lmc_rx (struct net_device *dev) /*fold00*/              skb_put (skb, len);              skb->protocol = lmc_proto_type(sc, skb);              skb->protocol = htons(ETH_P_WAN_PPP); -            skb->mac.raw = skb->data; +            skb_reset_mac_header(skb);  //            skb->nh.raw = skb->data;              skb->dev = dev;              lmc_proto_netif(sc, skb); @@ -1705,7 +1705,7 @@ static int lmc_rx (struct net_device *dev) /*fold00*/              memcpy(skb_put(nsb, len), skb->data, len);              nsb->protocol = lmc_proto_type(sc, skb); -            nsb->mac.raw = nsb->data; +            skb_reset_mac_header(nsb);  //            nsb->nh.raw = nsb->data;              nsb->dev = dev;              lmc_proto_netif(sc, nsb); diff --git a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c index 62184dee377..edbc55528be 100644 --- a/drivers/net/wan/pc300_drv.c +++ b/drivers/net/wan/pc300_drv.c @@ -1755,7 +1755,7 @@ cpc_trace(struct net_device *dev, struct sk_buff *skb_main, char rx_tx)  	skb->dev = dev;  	skb->protocol = htons(ETH_P_CUST); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_HOST;  	skb->len = 10 + skb_main->len; diff --git a/drivers/net/wan/pc300_tty.c b/drivers/net/wan/pc300_tty.c index 5873c346e7e..de02a07259c 100644 --- a/drivers/net/wan/pc300_tty.c +++ b/drivers/net/wan/pc300_tty.c @@ -1003,7 +1003,7 @@ static void cpc_tty_trace(pc300dev_t *dev, char* buf, int len, char rxtx)  	skb_put (skb, 10 + len);   	skb->dev = dev->dev;   	skb->protocol = htons(ETH_P_CUST);  -	skb->mac.raw = skb->data;  +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_HOST;   	skb->len = 10 + len;  diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index e50b1482d79..692a23f9834 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -3411,7 +3411,7 @@ badrx:  			OUT4500( apriv, EVACK, EV_RX);  			if (test_bit(FLAG_802_11, &apriv->flags)) { -				skb->mac.raw = skb->data; +				skb_reset_mac_header(skb);  				skb->pkt_type = PACKET_OTHERHOST;  				skb->dev = apriv->wifidev;  				skb->protocol = htons(ETH_P_802_2); @@ -3746,7 +3746,7 @@ void mpi_receive_802_11 (struct airo_info *ai)  		wireless_spy_update(ai->dev, sa, &wstats);  	}  #endif /* IW_WIRELESS_SPY */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_OTHERHOST;  	skb->dev = ai->wifidev;  	skb->protocol = htons(ETH_P_802_2); diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c b/drivers/net/wireless/hostap/hostap_80211_rx.c index f78ee26d787..e4082f9d766 100644 --- a/drivers/net/wireless/hostap/hostap_80211_rx.c +++ b/drivers/net/wireless/hostap/hostap_80211_rx.c @@ -167,7 +167,7 @@ hdr->f.status = s; hdr->f.len = l; hdr->f.data = d  	ret = skb->len - phdrlen;  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, hdrlen);  	if (prism_header)  		skb_pull(skb, phdrlen); @@ -1073,10 +1073,11 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,  	if (skb2 != NULL) {  		/* send to wireless media */ +		skb2->dev = dev;  		skb2->protocol = __constant_htons(ETH_P_802_3); -		skb2->mac.raw = skb2->nh.raw = skb2->data; +		skb_reset_mac_header(skb2); +		skb2->nh.raw = skb2->data;  		/* skb2->nh.raw = skb2->data + ETH_HLEN; */ -		skb2->dev = dev;  		dev_queue_xmit(skb2);  	} diff --git a/drivers/net/wireless/hostap/hostap_80211_tx.c b/drivers/net/wireless/hostap/hostap_80211_tx.c index 4a5be70c041..159baef18e4 100644 --- a/drivers/net/wireless/hostap/hostap_80211_tx.c +++ b/drivers/net/wireless/hostap/hostap_80211_tx.c @@ -237,7 +237,7 @@ int hostap_data_start_xmit(struct sk_buff *skb, struct net_device *dev)  	iface->stats.tx_packets++;  	iface->stats.tx_bytes += skb->len; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	meta = (struct hostap_skb_tx_data *) skb->cb;  	memset(meta, 0, sizeof(*meta));  	meta->magic = HOSTAP_SKB_TX_DATA_MAGIC; diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index efb8cf3bd8a..cc18f9686d2 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c @@ -982,7 +982,8 @@ static void prism2_send_mgmt(struct net_device *dev,  	meta->tx_cb_idx = tx_cb_idx;  	skb->dev = dev; -	skb->mac.raw = skb->nh.raw = skb->data; +	skb_reset_mac_header(skb); +	skb->nh.raw = skb->data;  	dev_queue_xmit(skb);  }  #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index 3079378fb8c..9003ff7d151 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c @@ -2217,7 +2217,7 @@ static void hostap_tx_callback(local_info_t *local,  		memcpy(skb_put(skb, len), payload, len);  	skb->dev = local->dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	cb->func(skb, ok, cb->data);  } diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c index 9077e6edde3..0e29ff76287 100644 --- a/drivers/net/wireless/hostap/hostap_main.c +++ b/drivers/net/wireless/hostap/hostap_main.c @@ -1063,7 +1063,8 @@ int prism2_sta_send_mgmt(local_info_t *local, u8 *dst, u16 stype,  	meta->iface = netdev_priv(dev);  	skb->dev = dev; -	skb->mac.raw = skb->nh.raw = skb->data; +	skb_reset_mac_header(skb); +	skb->nh.raw = skb->data;  	dev_queue_xmit(skb);  	return 0; diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index c878a2f3239..b04c56a25cc 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c @@ -8133,7 +8133,7 @@ static void ipw_handle_mgmt_packet(struct ipw_priv *priv,  		skb->dev = priv->ieee->dev;  		/* Point raw at the ieee80211_stats */ -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->pkt_type = PACKET_OTHERHOST;  		skb->protocol = __constant_htons(ETH_P_80211_STATS); diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c index 3f9d78d059b..f1415bff527 100644 --- a/drivers/net/wireless/orinoco.c +++ b/drivers/net/wireless/orinoco.c @@ -770,7 +770,7 @@ static void orinoco_rx_monitor(struct net_device *dev, u16 rxfid,  	/* Copy the 802.11 header to the skb */  	memcpy(skb_put(skb, hdrlen), &(desc->frame_ctl), hdrlen); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	/* If any, copy the data from the card to the skb */  	if (datalen > 0) { diff --git a/drivers/net/wireless/prism54/islpci_eth.c b/drivers/net/wireless/prism54/islpci_eth.c index fc2e0f3a896..6ebfff03424 100644 --- a/drivers/net/wireless/prism54/islpci_eth.c +++ b/drivers/net/wireless/prism54/islpci_eth.c @@ -303,7 +303,7 @@ islpci_monitor_rx(islpci_private *priv, struct sk_buff **skb)  		skb_pull(*skb, sizeof (struct rfmon_header));  	(*skb)->protocol = htons(ETH_P_802_2); -	(*skb)->mac.raw = (*skb)->data; +	skb_reset_mac_header(*skb);  	(*skb)->pkt_type = PACKET_OTHERHOST;  	return 0; diff --git a/drivers/net/wireless/strip.c b/drivers/net/wireless/strip.c index f5ce1c6063d..2a299a0676a 100644 --- a/drivers/net/wireless/strip.c +++ b/drivers/net/wireless/strip.c @@ -2009,7 +2009,7 @@ static void deliver_packet(struct strip *strip_info, STRIP_Header * header,  		       packetlen);  		skb->dev = get_strip_dev(strip_info);  		skb->protocol = header->protocol; -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		/* Having put a fake header on the front of the sk_buff for the */  		/* benefit of tools like tcpdump, skb_pull now 'consumes' that  */ diff --git a/drivers/s390/net/ctcmain.c b/drivers/s390/net/ctcmain.c index 0d6d5fcc128..787c0131704 100644 --- a/drivers/s390/net/ctcmain.c +++ b/drivers/s390/net/ctcmain.c @@ -455,7 +455,7 @@ ctc_unpack_skb(struct channel *ch, struct sk_buff *pskb)  			return;  		}  		skb_put(pskb, header->length); -		pskb->mac.raw = pskb->data; +		skb_reset_mac_header(pskb);  		len -= header->length;  		skb = dev_alloc_skb(pskb->len);  		if (!skb) { @@ -473,7 +473,7 @@ ctc_unpack_skb(struct channel *ch, struct sk_buff *pskb)  			return;  		}  		memcpy(skb_put(skb, pskb->len), pskb->data, pskb->len); -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->dev = pskb->dev;  		skb->protocol = pskb->protocol;  		pskb->ip_summed = CHECKSUM_UNNECESSARY; diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c index 594320ca1b7..82edf201440 100644 --- a/drivers/s390/net/netiucv.c +++ b/drivers/s390/net/netiucv.c @@ -635,7 +635,7 @@ static void netiucv_unpack_skb(struct iucv_connection *conn,  			return;  		}  		skb_put(pskb, header->next); -		pskb->mac.raw = pskb->data; +		skb_reset_mac_header(pskb);  		skb = dev_alloc_skb(pskb->len);  		if (!skb) {  			PRINT_WARN("%s Out of memory in netiucv_unpack_skb\n", @@ -646,7 +646,7 @@ static void netiucv_unpack_skb(struct iucv_connection *conn,  			return;  		}  		memcpy(skb_put(skb, pskb->len), pskb->data, pskb->len); -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  		skb->dev = pskb->dev;  		skb->protocol = pskb->protocol;  		pskb->ip_summed = CHECKSUM_UNNECESSARY; diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c index 7c735e1fe06..910a8ab66b0 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,  		return -ENOMEM;  	}  	if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { -		skb->mac.raw = (skb->data) + sizeof(struct qeth_hdr); +		skb->mac.raw = skb->data + sizeof(struct qeth_hdr);  		memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN);  #ifdef CONFIG_QETH_VLAN  		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 d502b77adf6..28822025b79 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c @@ -2278,7 +2278,7 @@ qeth_type_trans(struct sk_buff *skb, struct net_device *dev)  	    (card->info.link_type == QETH_LINK_TYPE_LANE_TR))  	 	return tr_type_trans(skb,dev);  #endif /* CONFIG_TR */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ETH_HLEN );  	eth = eth_hdr(skb); @@ -2461,7 +2461,7 @@ qeth_rebuild_skb(struct qeth_card *card, struct sk_buff *skb,  	if (card->options.fake_ll)  		qeth_rebuild_skb_fake_ll(card, skb, hdr);  	else -		skb->mac.raw = skb->data; +		skb_reset_mac_header(skb);  	skb->ip_summed = card->options.checksum_type;  	if (card->options.checksum_type == HW_CHECKSUMMING){  		if ( (hdr->hdr.l3.ext_flags & diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index d4b333938f7..0fe562af9c8 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h @@ -132,8 +132,8 @@ static __inline__ __be16 hdlc_type_trans(struct sk_buff *skb,  {  	hdlc_device *hdlc = dev_to_hdlc(dev); -	skb->mac.raw  = skb->data; -	skb->dev      = dev; +	skb->dev = dev; +	skb_reset_mac_header(skb);  	if (hdlc->proto->type_trans)  		return hdlc->proto->type_trans(skb, dev); diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index df229bd5f1a..748f254b50c 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -960,6 +960,11 @@ static inline void skb_reserve(struct sk_buff *skb, int len)  	skb->tail += len;  } +static inline void skb_reset_mac_header(struct sk_buff *skb) +{ +	skb->mac.raw = skb->data; +} +  /*   * CPUs often take a performance hit when accessing unaligned memory   * locations. The actual performance hit varies, it can be small if the diff --git a/include/net/ax25.h b/include/net/ax25.h index 47ff2f46e90..99a4e364c74 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h @@ -263,8 +263,8 @@ static __inline__ void ax25_cb_put(ax25_cb *ax25)  static inline __be16 ax25_type_trans(struct sk_buff *skb, struct net_device *dev)  {  	skb->dev      = dev; +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_HOST; -	skb->mac.raw  = skb->data;  	return htons(ETH_P_AX25);  } diff --git a/include/net/x25device.h b/include/net/x25device.h index 1d10c879f7e..1415bcf9398 100644 --- a/include/net/x25device.h +++ b/include/net/x25device.h @@ -7,8 +7,8 @@  static inline __be16 x25_type_trans(struct sk_buff *skb, struct net_device *dev)  { -	skb->mac.raw = skb->data;  	skb->dev = dev; +	skb_reset_mac_header(skb);  	skb->pkt_type = PACKET_HOST;  	return htons(ETH_P_X25); diff --git a/net/802/fddi.c b/net/802/fddi.c index f8a0c9f6fec..91dde41b548 100644 --- a/net/802/fddi.c +++ b/net/802/fddi.c @@ -131,7 +131,7 @@ __be16 fddi_type_trans(struct sk_buff *skb, struct net_device *dev)  	 */  	skb->dev = dev; -	skb->mac.raw = skb->data;	/* point to frame control (FC) */ +	skb_reset_mac_header(skb);	/* point to frame control (FC) */  	if(fddi->hdr.llc_8022_1.dsap==0xe0)  	{ diff --git a/net/802/hippi.c b/net/802/hippi.c index 138302c14ee..d87190038ed 100644 --- a/net/802/hippi.c +++ b/net/802/hippi.c @@ -131,7 +131,7 @@ __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev)  	 * set the raw address here.  	 */  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	hip = (struct hippi_hdr *)skb->mac.raw;  	skb_pull(skb, HIPPI_HLEN); diff --git a/net/802/tr.c b/net/802/tr.c index 987d91559bc..eb2de0d1620 100644 --- a/net/802/tr.c +++ b/net/802/tr.c @@ -194,7 +194,7 @@ __be16 tr_type_trans(struct sk_buff *skb, struct net_device *dev)  	unsigned riflen=0;  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	trh = tr_hdr(skb);  	if(trh->saddr[0] & TR_RII) diff --git a/net/atm/br2684.c b/net/atm/br2684.c index c444f5eda22..900d42ca8a5 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)  	/* FIXME: tcpdump shows that pointer to mac header is 2 bytes earlier,  	   than should be. What else should I set? */  	skb_pull(skb, plen); -	skb->mac.raw = ((char *) (skb->data)) - ETH_HLEN; +	skb->mac.raw = skb->data - ETH_HLEN;  	skb->pkt_type = PACKET_HOST;  #ifdef CONFIG_BR2684_FAST_TRANS  	skb->protocol = ((u16 *) skb->data)[-1]; diff --git a/net/atm/clip.c b/net/atm/clip.c index 8c382581608..ccba24ffb96 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c @@ -213,7 +213,7 @@ static void clip_push(struct atm_vcc *vcc, struct sk_buff *skb)  		return;  	}  	ATM_SKB(skb)->vcc = vcc; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	if (!clip_vcc->encap  	    || skb->len < RFC1483LLC_LEN  	    || memcmp(skb->data, llc_oui, sizeof (llc_oui))) diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c index 4a6b26becad..6d11b0633d5 100644 --- a/net/ax25/ax25_in.c +++ b/net/ax25/ax25_in.c @@ -122,7 +122,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb)  		}  		skb_pull(skb, 1);	/* Remove PID */ -		skb->mac.raw  = skb->nh.raw; +		skb_reset_mac_header(skb);  		skb->nh.raw   = skb->data;  		skb->dev      = ax25->ax25_dev->dev;  		skb->pkt_type = PACKET_HOST; diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c index f7ade186bf9..b1c2fa96c69 100644 --- a/net/bluetooth/bnep/core.c +++ b/net/bluetooth/bnep/core.c @@ -326,7 +326,7 @@ static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)  		return 0;  	} -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	/* Verify and pull out header */  	if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK])) diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index 905a39c33a1..b22ada529cc 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -37,7 +37,7 @@ int br_dev_xmit(struct sk_buff *skb, struct net_device *dev)  	br->statistics.tx_packets++;  	br->statistics.tx_bytes += skb->len; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ETH_HLEN);  	if (dest[0] & 1) diff --git a/net/core/dev.c b/net/core/dev.c index 424d6d0e98f..2fcaf5bc4a9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1066,7 +1066,7 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)  			   set by sender, so that the second statement is  			   just protection against buggy protocols.  			 */ -			skb2->mac.raw = skb2->data; +			skb_reset_mac_header(skb2);  			if (skb2->nh.raw < skb2->data ||  			    skb2->nh.raw > skb2->tail) { @@ -1206,7 +1206,7 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)  	BUG_ON(skb_shinfo(skb)->frag_list); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->mac_len = skb->nh.raw - skb->data;  	__skb_pull(skb, skb->mac_len); diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 32a9f80b5f1..0ad3896bbf6 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -324,7 +324,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)  	iph->check    = ip_fast_csum((unsigned char *)iph, iph->ihl);  	eth = (struct ethhdr *) skb_push(skb, ETH_HLEN); -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb->protocol = eth->h_proto = htons(ETH_P_IP);  	memcpy(eth->h_source, np->local_mac, 6);  	memcpy(eth->h_dest, np->remote_mac, 6); diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 336958fbbcb..8f6ebd0d369 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1928,7 +1928,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)  		nskb->mac_len = skb->mac_len;  		skb_reserve(nskb, headroom); -		nskb->mac.raw = nskb->data; +		skb_reset_mac_header(nskb);  		nskb->nh.raw = nskb->data + skb->mac_len;  		nskb->h.raw = nskb->nh.raw + (skb->h.raw - skb->nh.raw);  		memcpy(skb_put(nskb, doffset), skb->data, doffset); diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index c1b5502f195..ef94ca56d7b 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c @@ -1537,7 +1537,7 @@ int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, void *arg)  	skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);  	if (skb == NULL)  		return -ENOBUFS; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	cb = DN_SKB_CB(skb);  	if (rta[RTA_SRC-1]) diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 01ecbe42b1e..0ac2524f3b6 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -157,7 +157,7 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev)  	unsigned char *rawp;  	skb->dev = dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ETH_HLEN);  	eth = eth_hdr(skb); diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c index d5f5c661668..f39bf7c4101 100644 --- a/net/ieee80211/ieee80211_rx.c +++ b/net/ieee80211/ieee80211_rx.c @@ -42,7 +42,7 @@ static void ieee80211_monitor_rx(struct ieee80211_device *ieee,  	u16 fc = le16_to_cpu(hdr->frame_ctl);  	skb->dev = ieee->dev; -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_pull(skb, ieee80211_get_hdrlen(fc));  	skb->pkt_type = PACKET_OTHERHOST;  	skb->protocol = __constant_htons(ETH_P_80211_RAW); @@ -789,10 +789,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,  	if (skb2 != NULL) {  		/* send to wireless media */ +		skb2->dev = dev;  		skb2->protocol = __constant_htons(ETH_P_802_3); -		skb2->mac.raw = skb2->nh.raw = skb2->data; +		skb_reset_mac_header(skb2); +		skb2->nh.raw = skb2->data;  		/* skb2->nh.raw = skb2->data + ETH_HLEN; */ -		skb2->dev = dev;  		dev_queue_xmit(skb2);  	}  #endif diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 9151da64231..88f8aae873f 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -616,7 +616,7 @@ static int ipgre_rcv(struct sk_buff *skb)  				offset += 4;  		} -		skb->mac.raw = skb->nh.raw; +		skb_reset_mac_header(skb);  		skb->nh.raw = __pskb_pull(skb, offset);  		skb_postpull_rcsum(skb, skb->h.raw, offset);  		skb->pkt_type = PACKET_HOST; diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 5db301b3337..ddba857bd24 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c @@ -95,7 +95,7 @@ __inline__ void ip_send_check(struct iphdr *iph)  /* dev_loopback_xmit for use with netfilter. */  static int ip_dev_loopback_xmit(struct sk_buff *newskb)  { -	newskb->mac.raw = newskb->data; +	skb_reset_mac_header(newskb);  	__skb_pull(newskb, newskb->nh.raw - newskb->data);  	newskb->pkt_type = PACKET_LOOPBACK;  	newskb->ip_summed = CHECKSUM_UNNECESSARY; diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 0b3d7bf40f4..29ee7be45aa 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -2747,7 +2747,8 @@ int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void *arg)  	/* Reserve room for dummy headers, this skb can pass  	   through good chunk of routing engine.  	 */ -	skb->mac.raw = skb->nh.raw = skb->data; +	skb_reset_mac_header(skb); +	skb->nh.raw = skb->data;  	/* Bugfix: need to give ip_route_input enough of an IP header to not gag. */  	skb->nh.iph->protocol = IPPROTO_ICMP; diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 7e25043d826..a5f4562b5d2 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -88,7 +88,7 @@ static inline int ip6_output_finish(struct sk_buff *skb)  /* dev_loopback_xmit for use with netfilter. */  static int ip6_dev_loopback_xmit(struct sk_buff *newskb)  { -	newskb->mac.raw = newskb->data; +	skb_reset_mac_header(newskb);  	__skb_pull(newskb, newskb->nh.raw - newskb->data);  	newskb->pkt_type = PACKET_LOOPBACK;  	newskb->ip_summed = CHECKSUM_UNNECESSARY; diff --git a/net/ipv6/route.c b/net/ipv6/route.c index cc08cc48e9e..0aa4762f53f 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2218,7 +2218,7 @@ int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void *arg)  	/* Reserve room for dummy headers, this skb can pass  	   through good chunk of routing engine.  	 */ -	skb->mac.raw = skb->data; +	skb_reset_mac_header(skb);  	skb_reserve(skb, MAX_HEADER + sizeof(struct ipv6hdr));  	rt = (struct rt6_info*) ip6_route_output(NULL, &fl); diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c index 0b04603e9c4..1b7e2490e2e 100644 --- a/net/irda/irlap_frame.c +++ b/net/irda/irlap_frame.c @@ -93,7 +93,8 @@ void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb)  {  	/* Some common init stuff */  	skb->dev = self->netdev; -	skb->h.raw = skb->nh.raw = skb->mac.raw = skb->data; +	skb_reset_mac_header(skb); +	skb->h.raw = skb->nh.raw = skb->data;  	skb->protocol = htons(ETH_P_IRDA);  	skb->priority = TC_PRIO_BESTEFFORT; diff --git a/net/irda/wrapper.c b/net/irda/wrapper.c index 5abfb71aae8..2acc66dfb55 100644 --- a/net/irda/wrapper.c +++ b/net/irda/wrapper.c @@ -256,7 +256,7 @@ async_bump(struct net_device *dev,  	/* Feed it to IrLAP layer */  	dataskb->dev = dev; -	dataskb->mac.raw  = dataskb->data; +	skb_reset_mac_header(dataskb);  	dataskb->protocol = htons(ETH_P_IRDA);  	netif_rx(dataskb); diff --git a/net/llc/llc_output.c b/net/llc/llc_output.c index f4291f349e9..729e2510827 100644 --- a/net/llc/llc_output.c +++ b/net/llc/llc_output.c @@ -52,7 +52,7 @@ int llc_mac_hdr_init(struct sk_buff *skb,  		if (da) {  			memcpy(trh->daddr, da, dev->addr_len);  			tr_source_route(skb, trh, dev); -			skb->mac.raw = skb->data; +			skb_reset_mac_header(skb);  		}  		break;  	} diff --git a/net/netrom/nr_dev.c b/net/netrom/nr_dev.c index 9a97ed6e691..17c3f1ef83e 100644 --- a/net/netrom/nr_dev.c +++ b/net/netrom/nr_dev.c @@ -56,7 +56,7 @@ int nr_rx_ip(struct sk_buff *skb, struct net_device *dev)  	/* Spoof incoming device */  	skb->dev      = dev; -	skb->mac.raw  = skb->nh.raw; +	skb_reset_mac_header(skb);  	skb->nh.raw   = skb->data;  	skb->pkt_type = PACKET_HOST; diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c index 5d2d93dc083..c49e223084f 100644 --- a/net/wanrouter/wanmain.c +++ b/net/wanrouter/wanmain.c @@ -339,7 +339,7 @@ __be16 wanrouter_type_trans(struct sk_buff *skb, struct net_device *dev)  	skb->protocol = ethertype;  	skb->pkt_type = PACKET_HOST;	/*	Physically point to point */  	skb_pull(skb, cnt); -	skb->mac.raw  = skb->data; +	skb_reset_mac_header(skb);  	return ethertype;  }  |