summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ipoe/ipoe.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/ipoe/ipoe.c b/drivers/ipoe/ipoe.c
index bc6796ab..260df5eb 100644
--- a/drivers/ipoe/ipoe.c
+++ b/drivers/ipoe/ipoe.c
@@ -489,28 +489,13 @@ static netdev_tx_t ipoe_xmit(struct sk_buff *skb, struct net_device *dev)
ip_local_out(skb);
return NETDEV_TX_OK;
- }
- } /*else if (skb->protocol == htons(ETH_P_ARP)) {
- if (!pskb_may_pull(skb, arp_hdr_len(dev) + noff))
- goto drop;
+ } else {
+ struct ethhdr *eth = (struct ethhdr *)skb->data;
- arp = arp_hdr(skb);
- arp_ptr = (unsigned char *)(arp + 1);
-
- if (arp->ar_op == htons(ARPOP_REQUEST)) {
- memcpy(&tip, arp_ptr + ETH_ALEN + 4 + ETH_ALEN, 4);
- if (tip == ses->addr) {
- if (skb_cloned(skb) &&
- !skb_clone_writable(skb, arp_hdr_len(dev) + noff) &&
- pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
- goto drop;
-
- arp = arp_hdr(skb);
- arp_ptr = (unsigned char *)(arp + 1);
- memcpy(arp_ptr + ETH_ALEN + 4 + ETH_ALEN, &ses->peer_addr, 4);
- }
+ memcpy(eth->h_dest, ses->hwaddr, ETH_ALEN);
+ memcpy(eth->h_source, ses->link_dev->dev_addr, ETH_ALEN);
}
- }*/
+ }
if (ses->link_dev) {
cb_ptr = skb->cb + sizeof(skb->cb) - 2;