|
@@ -85,10 +85,13 @@
|
|
|
#define REG_INTSTAT 0x31 /* Interrupt Status */
|
|
|
#define BIT_TXNIF BIT(0)
|
|
|
#define BIT_RXIF BIT(3)
|
|
|
+#define BIT_SECIF BIT(4)
|
|
|
+#define BIT_SECIGNORE BIT(7)
|
|
|
|
|
|
#define REG_INTCON 0x32 /* Interrupt Control */
|
|
|
#define BIT_TXNIE BIT(0)
|
|
|
#define BIT_RXIE BIT(3)
|
|
|
+#define BIT_SECIE BIT(4)
|
|
|
|
|
|
#define REG_GPIO 0x33 /* GPIO */
|
|
|
#define REG_TRISGPIO 0x34 /* GPIO direction */
|
|
@@ -616,7 +619,7 @@ static int mrf24j40_start(struct ieee802154_hw *hw)
|
|
|
|
|
|
/* Clear TXNIE and RXIE. Enable interrupts */
|
|
|
return regmap_update_bits(devrec->regmap_short, REG_INTCON,
|
|
|
- BIT_TXNIE | BIT_RXIE, 0);
|
|
|
+ BIT_TXNIE | BIT_RXIE | BIT_SECIE, 0);
|
|
|
}
|
|
|
|
|
|
static void mrf24j40_stop(struct ieee802154_hw *hw)
|
|
@@ -1025,6 +1028,11 @@ static void mrf24j40_intstat_complete(void *context)
|
|
|
|
|
|
enable_irq(devrec->spi->irq);
|
|
|
|
|
|
+ /* Ignore Rx security decryption */
|
|
|
+ if (intstat & BIT_SECIF)
|
|
|
+ regmap_write_async(devrec->regmap_short, REG_SECCON0,
|
|
|
+ BIT_SECIGNORE);
|
|
|
+
|
|
|
/* Check for TX complete */
|
|
|
if (intstat & BIT_TXNIF)
|
|
|
ieee802154_xmit_complete(devrec->hw, devrec->tx_skb, false);
|