Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[NET]: Wrap hard_header_parse

Wrap the hard_header_parse function to simplify next step of
header_ops conversion.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Stephen Hemminger and committed by
David S. Miller
b95cce35 0c4e8581

+40 -44
+5 -5
drivers/ieee1394/eth1394.c
··· 162 162 unsigned short type, void *daddr, void *saddr, 163 163 unsigned len); 164 164 static int ether1394_rebuild_header(struct sk_buff *skb); 165 - static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr); 165 + static int ether1394_header_parse(const struct sk_buff *skb, 166 + unsigned char *haddr); 166 167 static int ether1394_header_cache(struct neighbour *neigh, struct hh_cache *hh); 167 168 static void ether1394_header_cache_update(struct hh_cache *hh, 168 169 struct net_device *dev, ··· 752 751 return 0; 753 752 } 754 753 755 - static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr) 754 + static int ether1394_header_parse(const struct sk_buff *skb, 755 + unsigned char *haddr) 756 756 { 757 - struct net_device *dev = skb->dev; 758 - 759 - memcpy(haddr, dev->dev_addr, ETH1394_ALEN); 757 + memcpy(haddr, skb->dev->dev_addr, ETH1394_ALEN); 760 758 return ETH1394_ALEN; 761 759 } 762 760
+1 -6
drivers/net/wireless/airo.c
··· 2481 2481 2482 2482 EXPORT_SYMBOL(stop_airo_card); 2483 2483 2484 - static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr) 2484 + static int wll_header_parse(const struct sk_buff *skb, unsigned char *haddr) 2485 2485 { 2486 2486 memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); 2487 2487 return ETH_ALEN; ··· 2698 2698 2699 2699 static void wifi_setup(struct net_device *dev) 2700 2700 { 2701 - dev->hard_header = NULL; 2702 - dev->rebuild_header = NULL; 2703 - dev->hard_header_cache = NULL; 2704 - dev->header_cache_update= NULL; 2705 - 2706 2701 dev->hard_header_parse = wll_header_parse; 2707 2702 dev->hard_start_xmit = &airo_start_xmit11; 2708 2703 dev->get_stats = &airo_get_stats;
+3 -3
drivers/s390/net/qeth_main.c
··· 6561 6561 }; 6562 6562 6563 6563 static int 6564 - qeth_hard_header_parse(struct sk_buff *skb, unsigned char *haddr) 6564 + qeth_hard_header_parse(const struct sk_buff *skb, unsigned char *haddr) 6565 6565 { 6566 - struct qeth_card *card; 6567 - struct ethhdr *eth; 6566 + const struct qeth_card *card; 6567 + const struct ethhdr *eth; 6568 6568 6569 6569 card = qeth_get_card_from_dev(skb->dev); 6570 6570 if (card->options.layer2)
+11 -1
include/linux/netdevice.h
··· 657 657 void (*vlan_rx_kill_vid)(struct net_device *dev, 658 658 unsigned short vid); 659 659 660 - int (*hard_header_parse)(struct sk_buff *skb, 660 + int (*hard_header_parse)(const struct sk_buff *skb, 661 661 unsigned char *haddr); 662 662 int (*neigh_setup)(struct net_device *dev, struct neigh_parms *); 663 663 #ifdef CONFIG_NETPOLL ··· 807 807 if (!dev->hard_header) 808 808 return 0; 809 809 return dev->hard_header(skb, dev, type, daddr, saddr, len); 810 + } 811 + 812 + static inline int dev_parse_header(const struct sk_buff *skb, 813 + unsigned char *haddr) 814 + { 815 + const struct net_device *dev = skb->dev; 816 + 817 + if (!dev->hard_header_parse) 818 + return 0; 819 + return dev->hard_header_parse(skb, haddr); 810 820 } 811 821 812 822 typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
+2 -2
net/ethernet/eth.c
··· 207 207 * @skb: packet to extract header from 208 208 * @haddr: destination buffer 209 209 */ 210 - static int eth_header_parse(struct sk_buff *skb, unsigned char *haddr) 210 + static int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr) 211 211 { 212 - struct ethhdr *eth = eth_hdr(skb); 212 + const struct ethhdr *eth = eth_hdr(skb); 213 213 memcpy(haddr, eth->h_source, ETH_ALEN); 214 214 return ETH_ALEN; 215 215 }
+2 -4
net/ipv4/netfilter/ip_queue.c
··· 250 250 251 251 if (entry->info->indev && entry->skb->dev) { 252 252 pmsg->hw_type = entry->skb->dev->type; 253 - if (entry->skb->dev->hard_header_parse) 254 - pmsg->hw_addrlen = 255 - entry->skb->dev->hard_header_parse(entry->skb, 256 - pmsg->hw_addr); 253 + pmsg->hw_addrlen = dev_parse_header(entry->skb, 254 + pmsg->hw_addr); 257 255 } 258 256 259 257 if (data_len)
+1 -4
net/ipv6/netfilter/ip6_queue.c
··· 248 248 249 249 if (entry->info->indev && entry->skb->dev) { 250 250 pmsg->hw_type = entry->skb->dev->type; 251 - if (entry->skb->dev->hard_header_parse) 252 - pmsg->hw_addrlen = 253 - entry->skb->dev->hard_header_parse(entry->skb, 254 - pmsg->hw_addr); 251 + pmsg->hw_addrlen = dev_parse_header(entry->skb, pmsg->hw_addr); 255 252 } 256 253 257 254 if (data_len)
+1 -1
net/mac80211/ieee80211.c
··· 47 47 48 48 /* common interface routines */ 49 49 50 - static int header_parse_80211(struct sk_buff *skb, unsigned char *haddr) 50 + static int header_parse_80211(const struct sk_buff *skb, unsigned char *haddr) 51 51 { 52 52 memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */ 53 53 return ETH_ALEN;
+2 -6
net/packet/af_packet.c
··· 519 519 sll->sll_ifindex = orig_dev->ifindex; 520 520 else 521 521 sll->sll_ifindex = dev->ifindex; 522 - sll->sll_halen = 0; 523 522 524 - if (dev->hard_header_parse) 525 - sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr); 523 + sll->sll_halen = dev_parse_header(skb, sll->sll_addr); 526 524 527 525 PACKET_SKB_CB(skb)->origlen = skb->len; 528 526 ··· 656 658 h->tp_usec = tv.tv_usec; 657 659 658 660 sll = (struct sockaddr_ll*)((u8*)h + TPACKET_ALIGN(sizeof(*h))); 659 - sll->sll_halen = 0; 660 - if (dev->hard_header_parse) 661 - sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr); 661 + sll->sll_halen = dev_parse_header(skb, sll->sll_addr); 662 662 sll->sll_family = AF_PACKET; 663 663 sll->sll_hatype = dev->type; 664 664 sll->sll_protocol = skb->protocol;