at86rf230: fix state change handling on error
authorAlexander Aring <aar@pengutronix.de>
Fri, 19 Feb 2016 08:59:13 +0000 (09:59 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 23 Feb 2016 19:29:39 +0000 (20:29 +0100)
This patch force always to set "is_tx_from_off", when calibration
timeout was not occurred. In case of error handling the is_tx_from_off
can be inside in an invalid state.

Signed-off-by: Alexander Aring <aar@pengutronix.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/at86rf230.c

index bf3cfe4..cb9e9fe 100644 (file)
@@ -902,14 +902,12 @@ at86rf230_xmit_start(void *context)
        struct at86rf230_local *lp = ctx->lp;
 
        /* check if we change from off state */
-       if (lp->is_tx_from_off) {
-               lp->is_tx_from_off = false;
+       if (lp->is_tx_from_off)
                at86rf230_async_state_change(lp, ctx, STATE_TX_ARET_ON,
                                             at86rf230_write_frame);
-       } else {
+       else
                at86rf230_async_state_change(lp, ctx, STATE_TX_ON,
                                             at86rf230_xmit_tx_on);
-       }
 }
 
 static int
@@ -933,6 +931,7 @@ at86rf230_xmit(struct ieee802154_hw *hw, struct sk_buff *skb)
                at86rf230_async_state_change(lp, ctx, STATE_TRX_OFF,
                                             at86rf230_xmit_start);
        } else {
+               lp->is_tx_from_off = false;
                at86rf230_xmit_start(ctx);
        }