at86rf230: interrupt tx with force trx_off
authorAlexander Aring <alex.aring@gmail.com>
Thu, 27 Aug 2015 19:49:18 +0000 (21:49 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 17 Sep 2015 11:20:05 +0000 (13:20 +0200)
To abort a TX_ARET_BUSY state it's recommended to switch into TRX_OFF
state by doing STATE_TRX_FORCE_OFF. This patch will do always a TRX_OFF
state change when the transceiver stucks in any state. From TRX_OFF we
can switch to the states which are also possible by TX_ON state.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/at86rf230.c

index 39485d06bea178a0bdccf6d3fff46420a32823c4..1e71a9781f3325f562ce311e861ee35f4c662233 100644 (file)
@@ -377,14 +377,6 @@ at86rf230_async_read_reg(struct at86rf230_local *lp, const u8 reg,
        }
 }
 
-static inline u8 at86rf230_state_to_force(u8 state)
-{
-       if (state == STATE_TX_ON)
-               return STATE_FORCE_TX_ON;
-       else
-               return STATE_FORCE_TRX_OFF;
-}
-
 static void
 at86rf230_async_state_assert(void *context)
 {
@@ -426,7 +418,7 @@ at86rf230_async_state_assert(void *context)
                                u8 state = ctx->to_state;
 
                                if (lp->tx_retry >= AT86RF2XX_MAX_TX_RETRIES)
-                                       state = at86rf230_state_to_force(state);
+                                       state = STATE_FORCE_TRX_OFF;
                                lp->tx_retry++;
 
                                at86rf230_async_state_change(lp, ctx, state,