summaryrefslogtreecommitdiffstats
path: root/net/ieee802154
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2015-09-02 14:21:21 +0200
committerMarcel Holtmann <marcel@holtmann.org>2015-09-17 13:20:03 +0200
commit989d433dca558fda85e592fc675af2a59af88858 (patch)
treeb33e6f9c324a695cb8ac402d7610d54575bf14d5 /net/ieee802154
parent348a882ea745039295e721ef00f1b46307fb1c88 (diff)
downloadlinux-989d433dca558fda85e592fc675af2a59af88858.tar.bz2
ieee802154: 6lowpan: change if lowpan dev is running
We don't need to check if the wpan interface is running because the lowpan_rcv is the packet layer receive handler for the wpan interface. Instead doing a check if wpan interface is running we should check if the lowpan interface is running before starting 6lowpan adaptation layer. Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com> Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/ieee802154')
-rw-r--r--net/ieee802154/6lowpan/rx.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ieee802154/6lowpan/rx.c b/net/ieee802154/6lowpan/rx.c
index b1442f397cda..c529d9f2561f 100644
--- a/net/ieee802154/6lowpan/rx.c
+++ b/net/ieee802154/6lowpan/rx.c
@@ -65,19 +65,20 @@ static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev,
struct packet_type *pt, struct net_device *orig_wdev)
{
struct ieee802154_hdr hdr;
+ struct net_device *ldev;
int ret;
- if (wdev->type != ARPHRD_IEEE802154 ||
- !wdev->ieee802154_ptr->lowpan_dev)
+ if (wdev->type != ARPHRD_IEEE802154)
+ goto drop;
+
+ ldev = wdev->ieee802154_ptr->lowpan_dev;
+ if (!ldev || !netif_running(ldev))
goto drop;
skb = skb_share_check(skb, GFP_ATOMIC);
if (!skb)
goto drop;
- if (!netif_running(wdev))
- goto drop_skb;
-
if (skb->pkt_type == PACKET_OTHERHOST)
goto drop_skb;