aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/gateway_client.c
diff options
context:
space:
mode:
authorLinus Lüssing <linus.luessing@web.de>2014-01-19 16:22:45 -0500
committerAntonio Quartulli <antonio@meshcoding.com>2014-03-22 03:50:26 -0400
commit927c2ed7e5879a96759aadda94404d516ce9fb42 (patch)
treefea8526ec7713221769eaf1bdc34533c45bbb4bb /net/batman-adv/gateway_client.c
parentabae9479ca9fa5616ae0debfbda54bf5424001df (diff)
batman-adv: use vlan_/eth_hdr() instead of skb->data in interface_tx path
Our .ndo_start_xmit handler (batadv_interface_tx()) can rely on having the skb mac header pointer set correctly since the following commit present in kernels >= 3.9: "net: reset mac header in dev_start_xmit()" (6d1ccff627) Therefore we can safely use eth_hdr() and vlan_eth_hdr() instead of skb->data now, which spares us some ugly type casts. At the same time set the mac_header in batadv_dat_snoop_incoming_arp_request() before sending the skb along the TX path. Signed-off-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
Diffstat (limited to 'net/batman-adv/gateway_client.c')
-rw-r--r--net/batman-adv/gateway_client.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index d7fafc1009a0..07c7f2177648 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -678,7 +678,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
678 if (!pskb_may_pull(skb, *header_len + ETH_HLEN)) 678 if (!pskb_may_pull(skb, *header_len + ETH_HLEN))
679 return BATADV_DHCP_NO; 679 return BATADV_DHCP_NO;
680 680
681 ethhdr = (struct ethhdr *)skb->data; 681 ethhdr = eth_hdr(skb);
682 proto = ethhdr->h_proto; 682 proto = ethhdr->h_proto;
683 *header_len += ETH_HLEN; 683 *header_len += ETH_HLEN;
684 684
@@ -687,7 +687,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
687 if (!pskb_may_pull(skb, *header_len + VLAN_HLEN)) 687 if (!pskb_may_pull(skb, *header_len + VLAN_HLEN))
688 return BATADV_DHCP_NO; 688 return BATADV_DHCP_NO;
689 689
690 vhdr = (struct vlan_ethhdr *)skb->data; 690 vhdr = vlan_eth_hdr(skb);
691 proto = vhdr->h_vlan_encapsulated_proto; 691 proto = vhdr->h_vlan_encapsulated_proto;
692 *header_len += VLAN_HLEN; 692 *header_len += VLAN_HLEN;
693 } 693 }
@@ -726,7 +726,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
726 return BATADV_DHCP_NO; 726 return BATADV_DHCP_NO;
727 727
728 /* skb->data might have been reallocated by pskb_may_pull() */ 728 /* skb->data might have been reallocated by pskb_may_pull() */
729 ethhdr = (struct ethhdr *)skb->data; 729 ethhdr = eth_hdr(skb);
730 if (ntohs(ethhdr->h_proto) == ETH_P_8021Q) 730 if (ntohs(ethhdr->h_proto) == ETH_P_8021Q)
731 ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN); 731 ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
732 732