From: Li RongQing <[email protected]>
netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
negative value
Signed-off-by: Li RongQing <[email protected]>
---
net/bluetooth/6lowpan.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index c2e0d14..9b5c89b 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -249,19 +249,12 @@ static struct lowpan_dev *lookup_dev(struct l2cap_conn *conn)
static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
{
struct sk_buff *skb_cp;
- int ret;
skb_cp = skb_copy(skb, GFP_ATOMIC);
if (!skb_cp)
return -ENOMEM;
- ret = netif_rx(skb_cp);
- if (ret < 0) {
- BT_DBG("receive skb %d", ret);
- return NET_RX_DROP;
- }
-
- return ret;
+ return netif_rx(skb_cp);
}
static int process_data(struct sk_buff *skb, struct net_device *netdev,
--
1.7.10.4
Hi Jukka,
On Fri, Oct 17, 2014 at 04:10:45PM +0300, Jukka Rissanen wrote:
> Hi,
>
> On to, 2014-10-16 at 10:21 +0800, [email protected] wrote:
> > From: Li RongQing <[email protected]>
> >
> > netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
> > negative value
> >
> > Signed-off-by: Li RongQing <[email protected]>
> > ---
> > net/bluetooth/6lowpan.c | 9 +--------
> > 1 file changed, 1 insertion(+), 8 deletions(-)
> >
> > diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> > index c2e0d14..9b5c89b 100644
> > --- a/net/bluetooth/6lowpan.c
> > +++ b/net/bluetooth/6lowpan.c
> > @@ -249,19 +249,12 @@ static struct lowpan_dev *lookup_dev(struct l2cap_conn *conn)
> > static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
> > {
> > struct sk_buff *skb_cp;
> > - int ret;
> >
> > skb_cp = skb_copy(skb, GFP_ATOMIC);
> > if (!skb_cp)
> > return -ENOMEM;
> >
> > - ret = netif_rx(skb_cp);
> > - if (ret < 0) {
> > - BT_DBG("receive skb %d", ret);
> > - return NET_RX_DROP;
> > - }
> > -
> > - return ret;
> > + return netif_rx(skb_cp);
> > }
> >
> > static int process_data(struct sk_buff *skb, struct net_device *netdev,
>
> Ack to this.
>
Just for notice: this doesn't fix anything, because it's currently
broken.
This is part of issue that lowpan_process_data returns sometimes errno
and (NET_RX_DROP or NET_RX_SUCCESS).
Martin tries to fix this issue, but it seems that this isn't easy.
The lowpan_process_data function still returns sometimes a errno or
NET_RX_DROP. So a check on (ret < 0) or (ret == NET_RX_DROP) doesn't
work. I mean this patch is okay for me, but there still are some
problems around. :-)
Simple we can't return errno or NET_RX_FOO in lowpan_process_data, but I
am sure Martin still working on a fix for this issue. We need to change
everything to returning errno's only.
- Alex
On pe, 2014-10-17 at 16:08 +0200, Marcel Holtmann wrote:
> Hi Jukka,
>
> >> From: Li RongQing <[email protected]>
> >>
> >> netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
> >> negative value
> >>
> >> Signed-off-by: Li RongQing <[email protected]>
> >> ---
> >> net/bluetooth/6lowpan.c | 9 +--------
> >> 1 file changed, 1 insertion(+), 8 deletions(-)
> >>
> >> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> >> index c2e0d14..9b5c89b 100644
> >> --- a/net/bluetooth/6lowpan.c
> >> +++ b/net/bluetooth/6lowpan.c
> >> @@ -249,19 +249,12 @@ static struct lowpan_dev *lookup_dev(struct l2cap_conn *conn)
> >> static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
> >> {
> >> struct sk_buff *skb_cp;
> >> - int ret;
> >>
> >> skb_cp = skb_copy(skb, GFP_ATOMIC);
> >> if (!skb_cp)
> >> return -ENOMEM;
> >>
> >> - ret = netif_rx(skb_cp);
> >> - if (ret < 0) {
> >> - BT_DBG("receive skb %d", ret);
> >> - return NET_RX_DROP;
> >> - }
> >> -
> >> - return ret;
> >> + return netif_rx(skb_cp);
> >> }
> >>
> >> static int process_data(struct sk_buff *skb, struct net_device *netdev,
> >
> > Ack to this.
> >
> > Signed-off-by: Jukka Rissanen <[email protected]>
>
> this should be acked-by or reviewed-by and not signed-off-by. The signed-off-by is only if you would send Roy's original patch on his behalf or you would be in the chain of sending patches along the maintainer trees.
Do'h! Yep, I meant to say Acked-by (too many things going on same
time :)
Acked-by: Jukka Rissanen <[email protected]>
>
> Regards
>
> Marcel
>
Cheers,
Jukka
Hi Roy,
> From: Li RongQing <[email protected]>
>
> netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
> negative value
>
> Signed-off-by: Li RongQing <[email protected]>
> ---
> net/bluetooth/6lowpan.c | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
Hi Jukka,
>> From: Li RongQing <[email protected]>
>>
>> netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
>> negative value
>>
>> Signed-off-by: Li RongQing <[email protected]>
>> ---
>> net/bluetooth/6lowpan.c | 9 +--------
>> 1 file changed, 1 insertion(+), 8 deletions(-)
>>
>> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
>> index c2e0d14..9b5c89b 100644
>> --- a/net/bluetooth/6lowpan.c
>> +++ b/net/bluetooth/6lowpan.c
>> @@ -249,19 +249,12 @@ static struct lowpan_dev *lookup_dev(struct l2cap_conn *conn)
>> static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
>> {
>> struct sk_buff *skb_cp;
>> - int ret;
>>
>> skb_cp = skb_copy(skb, GFP_ATOMIC);
>> if (!skb_cp)
>> return -ENOMEM;
>>
>> - ret = netif_rx(skb_cp);
>> - if (ret < 0) {
>> - BT_DBG("receive skb %d", ret);
>> - return NET_RX_DROP;
>> - }
>> -
>> - return ret;
>> + return netif_rx(skb_cp);
>> }
>>
>> static int process_data(struct sk_buff *skb, struct net_device *netdev,
>
> Ack to this.
>
> Signed-off-by: Jukka Rissanen <[email protected]>
this should be acked-by or reviewed-by and not signed-off-by. The signed-off-by is only if you would send Roy's original patch on his behalf or you would be in the chain of sending patches along the maintainer trees.
Regards
Marcel
Hi,
On to, 2014-10-16 at 10:21 +0800, [email protected] wrote:
> From: Li RongQing <[email protected]>
>
> netif_rx() only returns NET_RX_DROP and NET_RX_SUCCESS, not returns
> negative value
>
> Signed-off-by: Li RongQing <[email protected]>
> ---
> net/bluetooth/6lowpan.c | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
>
> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> index c2e0d14..9b5c89b 100644
> --- a/net/bluetooth/6lowpan.c
> +++ b/net/bluetooth/6lowpan.c
> @@ -249,19 +249,12 @@ static struct lowpan_dev *lookup_dev(struct l2cap_conn *conn)
> static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
> {
> struct sk_buff *skb_cp;
> - int ret;
>
> skb_cp = skb_copy(skb, GFP_ATOMIC);
> if (!skb_cp)
> return -ENOMEM;
>
> - ret = netif_rx(skb_cp);
> - if (ret < 0) {
> - BT_DBG("receive skb %d", ret);
> - return NET_RX_DROP;
> - }
> -
> - return ret;
> + return netif_rx(skb_cp);
> }
>
> static int process_data(struct sk_buff *skb, struct net_device *netdev,
Ack to this.
Signed-off-by: Jukka Rissanen <[email protected]>
Cheers,
Jukka