drivers: mcr20a: check AR bit and use appropriate TX sequence
Signed-off-by: Johann Fischer <j.fischer@phytec.de>
diff --git a/drivers/ieee802154/ieee802154_mcr20a.c b/drivers/ieee802154/ieee802154_mcr20a.c
index e63da49..c6acefd 100644
--- a/drivers/ieee802154/ieee802154_mcr20a.c
+++ b/drivers/ieee802154/ieee802154_mcr20a.c
@@ -49,9 +49,6 @@
#define _MACACKWAITDURATION (864 / 16) /* 864us * 62500Hz */
#endif
-/* AUTOACK should be enabled by default, disable it only for testing */
-#define MCR20A_AUTOACK_ENABLED (true)
-
#define MCR20A_FCS_LENGTH (2)
#define MCR20A_PSDU_LENGTH (125)
#define MCR20A_GET_SEQ_STATE_RETRIES (3)
@@ -865,6 +862,7 @@
{
return IEEE802154_HW_FCS |
IEEE802154_HW_2_4_GHZ |
+ IEEE802154_HW_TX_RX_ACK |
IEEE802154_HW_FILTER;
}
@@ -1114,8 +1112,8 @@
struct net_buf *frag)
{
struct mcr20a_context *mcr20a = dev->driver_data;
- u8_t seq = MCR20A_AUTOACK_ENABLED ? MCR20A_XCVSEQ_TX_RX :
- MCR20A_XCVSEQ_TX;
+ u8_t seq = ieee802154_is_ar_flag_set(pkt) ? MCR20A_XCVSEQ_TX_RX :
+ MCR20A_XCVSEQ_TX;
int retval;
k_mutex_lock(&mcr20a->phy_mutex, K_FOREVER);
@@ -1348,11 +1346,9 @@
write_reg_rx_wtr_mark(&mcr20a->spi, 8);
/* Configure PHY behaviour */
- tmp = MCR20A_PHY_CTRL1_CCABFRTX;
- if (MCR20A_AUTOACK_ENABLED) {
- tmp |= MCR20A_PHY_CTRL1_AUTOACK |
- MCR20A_PHY_CTRL1_RXACKRQD;
- }
+ tmp = MCR20A_PHY_CTRL1_CCABFRTX |
+ MCR20A_PHY_CTRL1_AUTOACK |
+ MCR20A_PHY_CTRL1_RXACKRQD;
write_reg_phy_ctrl1(&mcr20a->spi, tmp);
/* Enable Sequence-end interrupt */