goto drop;
 
                        ret = process_data(local_skb, dev, chan);
-                       if (ret != NET_RX_SUCCESS)
+                       if (ret < 0)
                                goto drop;
 
                        local_skb->protocol = htons(ETH_P_IPV6);
 
                switch (skb->data[0] & 0xe0) {
                case LOWPAN_DISPATCH_IPHC:      /* ipv6 datagram */
                        ret = process_data(skb, &hdr);
-                       if (ret == NET_RX_DROP)
+                       if (ret < 0)
                                goto drop;
 
                        return lowpan_give_skb_to_devices(skb, NULL);
                        ret = lowpan_frag_rcv(skb, LOWPAN_DISPATCH_FRAG1);
                        if (ret == 1) {
                                ret = process_data(skb, &hdr);
-                               if (ret == NET_RX_DROP)
+                               if (ret < 0)
                                        goto drop;
 
                                return lowpan_give_skb_to_devices(skb, NULL);
                        ret = lowpan_frag_rcv(skb, LOWPAN_DISPATCH_FRAGN);
                        if (ret == 1) {
                                ret = process_data(skb, &hdr);
-                               if (ret == NET_RX_DROP)
+                               if (ret < 0)
                                        goto drop;
 
                                return lowpan_give_skb_to_devices(skb, NULL);