summaryrefslogtreecommitdiff
path: root/drivers/ipoe/ipoe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ipoe/ipoe.c')
-rw-r--r--drivers/ipoe/ipoe.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/ipoe/ipoe.c b/drivers/ipoe/ipoe.c
index 90b04ca..17aad5b 100644
--- a/drivers/ipoe/ipoe.c
+++ b/drivers/ipoe/ipoe.c
@@ -836,12 +836,12 @@ static rx_handler_result_t ipoe_recv(struct sk_buff **pskb)
if (ipoe_check_exclude(saddr))
return RX_HANDLER_PASS;
- if (ipoe_check_network(saddr)) {
- if (ipoe_queue_u(skb, saddr))
- kfree_skb(skb);
- } else
+ if (ipoe_check_network(saddr) == 0)
return RX_HANDLER_PASS;
+ if (ipoe_queue_u(skb, saddr))
+ kfree_skb(skb);
+
return RX_HANDLER_CONSUMED;
}
} else if (skb->protocol == htons(ETH_P_IPV6)) {
@@ -850,14 +850,16 @@ static rx_handler_result_t ipoe_recv(struct sk_buff **pskb)
ip6h = ipv6_hdr(skb);
- if (ip6h->saddr.s6_addr16[0] == htons(0xfe80))
+ if (ip6h->saddr.s6_addr16[0] == htons(0xfe80)) {
ses = ipoe_lookup_hwaddr(eth->h_source);
- else
+ if (!ses)
+ return RX_HANDLER_PASS;
+ } else {
ses = ipoe_lookup_rt6(skb, &ip6h->saddr, &out);
-
- if (!ses) {
- kfree_skb(skb);
- return RX_HANDLER_CONSUMED;
+ if (!ses) {
+ kfree_skb(skb);
+ return RX_HANDLER_CONSUMED;
+ }
}
} else
return RX_HANDLER_PASS;