[SK_BUFF]: Introduce skb_mac_header()

For the places where we need a pointer to the mac header, it is still legal to
touch skb->mac.raw directly if just adding to, subtracting from or setting it
to another layer header.

This one also converts some more cases to skb_reset_mac_header() that my
regex missed as it had no spaces before nor after '=', ugh.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Arnaldo Carvalho de Melo
2007-03-19 15:33:04 -07:00
committed by David S. Miller
parent 31713c333d
commit 98e399f82a
49 changed files with 108 additions and 88 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ static int daemon_read(int fd, struct sk_buff **skb,
{ {
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
if(*skb == NULL) return(-ENOMEM); if(*skb == NULL) return(-ENOMEM);
return(net_recvfrom(fd, (*skb)->mac.raw, return(net_recvfrom(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + ETH_HEADER_OTHER)); (*skb)->dev->mtu + ETH_HEADER_OTHER));
} }
+1 -1
View File
@@ -50,7 +50,7 @@ static int mcast_read(int fd, struct sk_buff **skb, struct uml_net_private *lp)
{ {
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
if(*skb == NULL) return(-ENOMEM); if(*skb == NULL) return(-ENOMEM);
return(net_recvfrom(fd, (*skb)->mac.raw, return(net_recvfrom(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + ETH_HEADER_OTHER)); (*skb)->dev->mtu + ETH_HEADER_OTHER));
} }
+1 -1
View File
@@ -36,7 +36,7 @@ static int pcap_read(int fd, struct sk_buff **skb,
{ {
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
if(*skb == NULL) return(-ENOMEM); if(*skb == NULL) return(-ENOMEM);
return(pcap_user_read(fd, (*skb)->mac.raw, return(pcap_user_read(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + ETH_HEADER_OTHER, (*skb)->dev->mtu + ETH_HEADER_OTHER,
(struct pcap_data *) &lp->user)); (struct pcap_data *) &lp->user));
} }
+1 -1
View File
@@ -49,7 +49,7 @@ static unsigned short slip_protocol(struct sk_buff *skbuff)
static int slip_read(int fd, struct sk_buff **skb, static int slip_read(int fd, struct sk_buff **skb,
struct uml_net_private *lp) struct uml_net_private *lp)
{ {
return(slip_user_read(fd, (*skb)->mac.raw, (*skb)->dev->mtu, return(slip_user_read(fd, skb_mac_header(*skb), (*skb)->dev->mtu,
(struct slip_data *) &lp->user)); (struct slip_data *) &lp->user));
} }
+1 -1
View File
@@ -53,7 +53,7 @@ static unsigned short slirp_protocol(struct sk_buff *skbuff)
static int slirp_read(int fd, struct sk_buff **skb, static int slirp_read(int fd, struct sk_buff **skb,
struct uml_net_private *lp) struct uml_net_private *lp)
{ {
return(slirp_user_read(fd, (*skb)->mac.raw, (*skb)->dev->mtu, return(slirp_user_read(fd, skb_mac_header(*skb), (*skb)->dev->mtu,
(struct slirp_data *) &lp->user)); (struct slirp_data *) &lp->user));
} }
+1 -1
View File
@@ -43,7 +43,7 @@ static int etap_read(int fd, struct sk_buff **skb, struct uml_net_private *lp)
*skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP); *skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP);
if(*skb == NULL) return(-ENOMEM); if(*skb == NULL) return(-ENOMEM);
len = net_recvfrom(fd, (*skb)->mac.raw, len = net_recvfrom(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP); (*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP);
if(len <= 0) return(len); if(len <= 0) return(len);
skb_pull(*skb, 2); skb_pull(*skb, 2);
+1 -1
View File
@@ -43,7 +43,7 @@ static int tuntap_read(int fd, struct sk_buff **skb,
{ {
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
if(*skb == NULL) return(-ENOMEM); if(*skb == NULL) return(-ENOMEM);
return(net_read(fd, (*skb)->mac.raw, return(net_read(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + ETH_HEADER_OTHER)); (*skb)->dev->mtu + ETH_HEADER_OTHER));
} }
+1 -1
View File
@@ -53,7 +53,7 @@ struct aoe_hdr {
static inline struct aoe_hdr *aoe_hdr(const struct sk_buff *skb) static inline struct aoe_hdr *aoe_hdr(const struct sk_buff *skb)
{ {
return (struct aoe_hdr *)skb->mac.raw; return (struct aoe_hdr *)skb_mac_header(skb);
} }
#endif #endif
+1 -1
View File
@@ -90,7 +90,7 @@ struct eth1394hdr {
static inline struct eth1394hdr *eth1394_hdr(const struct sk_buff *skb) static inline struct eth1394hdr *eth1394_hdr(const struct sk_buff *skb)
{ {
return (struct eth1394hdr *)skb->mac.raw; return (struct eth1394hdr *)skb_mac_header(skb);
} }
#endif #endif
+1 -1
View File
@@ -174,7 +174,7 @@ static unsigned short dvb_net_eth_type_trans(struct sk_buff *skb,
struct ethhdr *eth; struct ethhdr *eth;
unsigned char *rawp; unsigned char *rawp;
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
skb_pull(skb,dev->hard_header_len); skb_pull(skb,dev->hard_header_len);
eth = eth_hdr(skb); eth = eth_hdr(skb);
+14 -12
View File
@@ -714,6 +714,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
LANSendRequest_t *pSendReq; LANSendRequest_t *pSendReq;
SGETransaction32_t *pTrans; SGETransaction32_t *pTrans;
SGESimple64_t *pSimple; SGESimple64_t *pSimple;
const unsigned char *mac;
dma_addr_t dma; dma_addr_t dma;
unsigned long flags; unsigned long flags;
int ctx; int ctx;
@@ -784,6 +785,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
// IOC_AND_NETDEV_NAMES_s_s(dev), // IOC_AND_NETDEV_NAMES_s_s(dev),
// ctx, skb, skb->data)); // ctx, skb, skb->data));
mac = skb_mac_header(skb);
#ifdef QLOGIC_NAA_WORKAROUND #ifdef QLOGIC_NAA_WORKAROUND
{ {
struct NAA_Hosed *nh; struct NAA_Hosed *nh;
@@ -793,12 +795,12 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
drops. */ drops. */
read_lock_irq(&bad_naa_lock); read_lock_irq(&bad_naa_lock);
for (nh = mpt_bad_naa; nh != NULL; nh=nh->next) { for (nh = mpt_bad_naa; nh != NULL; nh=nh->next) {
if ((nh->ieee[0] == skb->mac.raw[0]) && if ((nh->ieee[0] == mac[0]) &&
(nh->ieee[1] == skb->mac.raw[1]) && (nh->ieee[1] == mac[1]) &&
(nh->ieee[2] == skb->mac.raw[2]) && (nh->ieee[2] == mac[2]) &&
(nh->ieee[3] == skb->mac.raw[3]) && (nh->ieee[3] == mac[3]) &&
(nh->ieee[4] == skb->mac.raw[4]) && (nh->ieee[4] == mac[4]) &&
(nh->ieee[5] == skb->mac.raw[5])) { (nh->ieee[5] == mac[5])) {
cur_naa = nh->NAA; cur_naa = nh->NAA;
dlprintk ((KERN_INFO "mptlan/sdu_send: using NAA value " dlprintk ((KERN_INFO "mptlan/sdu_send: using NAA value "
"= %04x.\n", cur_naa)); "= %04x.\n", cur_naa));
@@ -810,12 +812,12 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
#endif #endif
pTrans->TransactionDetails[0] = cpu_to_le32((cur_naa << 16) | pTrans->TransactionDetails[0] = cpu_to_le32((cur_naa << 16) |
(skb->mac.raw[0] << 8) | (mac[0] << 8) |
(skb->mac.raw[1] << 0)); (mac[1] << 0));
pTrans->TransactionDetails[1] = cpu_to_le32((skb->mac.raw[2] << 24) | pTrans->TransactionDetails[1] = cpu_to_le32((mac[2] << 24) |
(skb->mac.raw[3] << 16) | (mac[3] << 16) |
(skb->mac.raw[4] << 8) | (mac[4] << 8) |
(skb->mac.raw[5] << 0)); (mac[5] << 0));
pSimple = (SGESimple64_t *) &pTrans->TransactionDetails[2]; pSimple = (SGESimple64_t *) &pTrans->TransactionDetails[2];
+2 -2
View File
@@ -123,7 +123,7 @@ static void rx(struct net_device *dev, int bufnum,
skb_put(skb, length + ARC_HDR_SIZE + sizeof(int)); skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));
skb->dev = dev; skb->dev = dev;
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
pkt = (struct archdr *)skb->mac.raw; pkt = (struct archdr *)skb_mac_header(skb);
skb_pull(skb, ARC_HDR_SIZE); skb_pull(skb, ARC_HDR_SIZE);
/* up to sizeof(pkt->soft) has already been copied from the card */ /* up to sizeof(pkt->soft) has already been copied from the card */
@@ -269,7 +269,7 @@ static int ack_tx(struct net_device *dev, int acked)
ackskb->dev = dev; ackskb->dev = dev;
skb_reset_mac_header(ackskb); skb_reset_mac_header(ackskb);
ackpkt = (struct archdr *)ackskb->mac.raw; ackpkt = (struct archdr *)skb_mac_header(ackskb);
/* skb_pull(ackskb, ARC_HDR_SIZE); */ /* skb_pull(ackskb, ARC_HDR_SIZE); */
+1 -1
View File
@@ -546,7 +546,7 @@ static __be16 plip_type_trans(struct sk_buff *skb, struct net_device *dev)
struct ethhdr *eth; struct ethhdr *eth;
unsigned char *rawp; unsigned char *rawp;
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
skb_pull(skb,dev->hard_header_len); skb_pull(skb,dev->hard_header_len);
eth = eth_hdr(skb); eth = eth_hdr(skb);
+1 -1
View File
@@ -363,7 +363,7 @@ sl_bump(struct slip *sl)
} }
skb->dev = sl->dev; skb->dev = sl->dev;
memcpy(skb_put(skb,count), sl->rbuff, count); memcpy(skb_put(skb,count), sl->rbuff, count);
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
skb->protocol=htons(ETH_P_IP); skb->protocol=htons(ETH_P_IP);
netif_rx(skb); netif_rx(skb);
sl->dev->last_rx = jiffies; sl->dev->last_rx = jiffies;
+1 -1
View File
@@ -59,7 +59,7 @@ static void hostess_input(struct z8530_channel *c, struct sk_buff *skb)
/* Drop the CRC - it's not a good idea to try and negotiate it ;) */ /* Drop the CRC - it's not a good idea to try and negotiate it ;) */
skb_trim(skb, skb->len-2); skb_trim(skb, skb->len-2);
skb->protocol=__constant_htons(ETH_P_WAN_PPP); skb->protocol=__constant_htons(ETH_P_WAN_PPP);
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
skb->dev=c->netdevice; skb->dev=c->netdevice;
/* /*
* Send it to the PPP layer. We don't have time to process * Send it to the PPP layer. We don't have time to process
+1 -1
View File
@@ -61,7 +61,7 @@ static void sealevel_input(struct z8530_channel *c, struct sk_buff *skb)
/* Drop the CRC - it's not a good idea to try and negotiate it ;) */ /* Drop the CRC - it's not a good idea to try and negotiate it ;) */
skb_trim(skb, skb->len-2); skb_trim(skb, skb->len-2);
skb->protocol=htons(ETH_P_WAN_PPP); skb->protocol=htons(ETH_P_WAN_PPP);
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
skb->dev=c->netdevice; skb->dev=c->netdevice;
/* /*
* Send it to the PPP layer. We don't have time to process * Send it to the PPP layer. We don't have time to process
+1 -1
View File
@@ -227,7 +227,7 @@ static void sppp_input (struct net_device *dev, struct sk_buff *skb)
unsigned long flags; unsigned long flags;
skb->dev=dev; skb->dev=dev;
skb->mac.raw=skb->data; skb_reset_mac_header(skb);
if (dev->flags & IFF_RUNNING) if (dev->flags & IFF_RUNNING)
{ {
+1 -1
View File
@@ -2444,7 +2444,7 @@ static int add_airo_dev( struct net_device *dev );
static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr) static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr)
{ {
memcpy(haddr, skb->mac.raw + 10, ETH_ALEN); memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN);
return ETH_ALEN; return ETH_ALEN;
} }
+7 -7
View File
@@ -590,20 +590,20 @@ void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)
int hostap_80211_header_parse(struct sk_buff *skb, unsigned char *haddr) int hostap_80211_header_parse(struct sk_buff *skb, unsigned char *haddr)
{ {
memcpy(haddr, skb->mac.raw + 10, ETH_ALEN); /* addr2 */ memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
return ETH_ALEN; return ETH_ALEN;
} }
int hostap_80211_prism_header_parse(struct sk_buff *skb, unsigned char *haddr) int hostap_80211_prism_header_parse(struct sk_buff *skb, unsigned char *haddr)
{ {
if (*(u32 *)skb->mac.raw == LWNG_CAP_DID_BASE) { const unsigned char *mac = skb_mac_header(skb);
memcpy(haddr, skb->mac.raw +
sizeof(struct linux_wlan_ng_prism_hdr) + 10, if (*(u32 *)mac == LWNG_CAP_DID_BASE) {
memcpy(haddr, mac + sizeof(struct linux_wlan_ng_prism_hdr) + 10,
ETH_ALEN); /* addr2 */ ETH_ALEN); /* addr2 */
} else { /* (*(u32 *)skb->mac.raw == htonl(LWNG_CAPHDR_VERSION)) */ } else { /* (*(u32 *)mac == htonl(LWNG_CAPHDR_VERSION)) */
memcpy(haddr, skb->mac.raw + memcpy(haddr, mac + sizeof(struct linux_wlan_ng_cap_hdr) + 10,
sizeof(struct linux_wlan_ng_cap_hdr) + 10,
ETH_ALEN); /* addr2 */ ETH_ALEN); /* addr2 */
} }
return ETH_ALEN; return ETH_ALEN;
+1 -1
View File
@@ -689,7 +689,7 @@ static void orinoco_stat_gather(struct net_device *dev,
/* Note : gcc will optimise the whole section away if /* Note : gcc will optimise the whole section away if
* WIRELESS_SPY is not defined... - Jean II */ * WIRELESS_SPY is not defined... - Jean II */
if (SPY_NUMBER(priv)) { if (SPY_NUMBER(priv)) {
orinoco_spy_gather(dev, skb->mac.raw + ETH_ALEN, orinoco_spy_gather(dev, skb_mac_header(skb) + ETH_ALEN,
desc->signal, desc->silence); desc->signal, desc->silence);
} }
} }

Some files were not shown because too many files have changed in this diff Show More