Message ID | 20220303182508.288136-10-miquel.raynal@bootlin.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ieee802154: Better Tx error handling | expand |
Hi, On Thu, Mar 3, 2022 at 1:25 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > ieee802154_xmit_error() is the right helper to call when a transmission > has failed. Let's use it instead of open-coding it. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > --- > drivers/net/ieee802154/atusb.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c > index f27a5f535808..9fa7febddff2 100644 > --- a/drivers/net/ieee802154/atusb.c > +++ b/drivers/net/ieee802154/atusb.c > @@ -271,9 +271,8 @@ static void atusb_tx_done(struct atusb *atusb, u8 seq) > * unlikely case now that seq == expect is then true, but can > * happen and fail with a tx_skb = NULL; > */ > - ieee802154_wake_queue(atusb->hw); > - if (atusb->tx_skb) > - dev_kfree_skb_irq(atusb->tx_skb); > + ieee802154_xmit_error(atusb->hw, atusb->tx_skb, > + IEEE802154_MAC_ERROR); I think we should have a consens what kind of 802.15.4 error we deliver in such a case. This is more some kind of bus/device error not related to a 802.15.4 operation, and in this case we should use the SYSTEM_ERROR which 802.15.4 says it can be used for a kind of "user specific error"? I mean it is not user specific but 802.15.4 spec will never reference it to make some special handling if it occurs... just "something failed". - Alex
Hi Alexander, alex.aring@gmail.com wrote on Sun, 13 Mar 2022 16:20:53 -0400: > Hi, > > On Thu, Mar 3, 2022 at 1:25 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > > > ieee802154_xmit_error() is the right helper to call when a transmission > > has failed. Let's use it instead of open-coding it. > > > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > > --- > > drivers/net/ieee802154/atusb.c | 5 ++--- > > 1 file changed, 2 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c > > index f27a5f535808..9fa7febddff2 100644 > > --- a/drivers/net/ieee802154/atusb.c > > +++ b/drivers/net/ieee802154/atusb.c > > @@ -271,9 +271,8 @@ static void atusb_tx_done(struct atusb *atusb, u8 seq) > > * unlikely case now that seq == expect is then true, but can > > * happen and fail with a tx_skb = NULL; > > */ > > - ieee802154_wake_queue(atusb->hw); > > - if (atusb->tx_skb) > > - dev_kfree_skb_irq(atusb->tx_skb); > > + ieee802154_xmit_error(atusb->hw, atusb->tx_skb, > > + IEEE802154_MAC_ERROR); > > I think we should have a consens what kind of 802.15.4 error we > deliver in such a case. This is more some kind of bus/device error not > related to a 802.15.4 operation, and in this case we should use the > SYSTEM_ERROR which 802.15.4 says it can be used for a kind of "user > specific error"? I mean it is not user specific but 802.15.4 spec will > never reference it to make some special handling if it occurs... just > "something failed". Sure, I initially thought "MAC_ERROR" was generic enough, but you're certainly right, it's probably best to switch to SYSTEM_ERROR in this case. Thanks, Miquèl
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c index f27a5f535808..9fa7febddff2 100644 --- a/drivers/net/ieee802154/atusb.c +++ b/drivers/net/ieee802154/atusb.c @@ -271,9 +271,8 @@ static void atusb_tx_done(struct atusb *atusb, u8 seq) * unlikely case now that seq == expect is then true, but can * happen and fail with a tx_skb = NULL; */ - ieee802154_wake_queue(atusb->hw); - if (atusb->tx_skb) - dev_kfree_skb_irq(atusb->tx_skb); + ieee802154_xmit_error(atusb->hw, atusb->tx_skb, + IEEE802154_MAC_ERROR); } }
ieee802154_xmit_error() is the right helper to call when a transmission has failed. Let's use it instead of open-coding it. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/net/ieee802154/atusb.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)