diff --git a/drivers/ieee802154/ieee802154_nrf5.c b/drivers/ieee802154/ieee802154_nrf5.c index 230aa1bc2e9..296559293d6 100644 --- a/drivers/ieee802154/ieee802154_nrf5.c +++ b/drivers/ieee802154/ieee802154_nrf5.c @@ -358,10 +358,16 @@ static int nrf5_set_txpower(const struct device *dev, int16_t dbm) static int handle_ack(struct nrf5_802154_data *nrf5_radio) { - uint8_t ack_len = nrf5_radio->ack_frame.psdu[0] - NRF5_FCS_LENGTH; + uint8_t ack_len; struct net_pkt *ack_pkt; int err = 0; + if (IS_ENABLED(CONFIG_IEEE802154_RAW_MODE) || IS_ENABLED(CONFIG_NET_L2_OPENTHREAD)) { + ack_len = nrf5_radio->ack_frame.psdu[0]; + } else { + ack_len = nrf5_radio->ack_frame.psdu[0] - NRF5_FCS_LENGTH; + } + ack_pkt = net_pkt_alloc_with_buffer(nrf5_radio->iface, ack_len, AF_UNSPEC, 0, K_NO_WAIT); if (!ack_pkt) { diff --git a/subsys/net/lib/openthread/platform/radio.c b/subsys/net/lib/openthread/platform/radio.c index d9ab1d23708..395b4dc4da5 100644 --- a/subsys/net/lib/openthread/platform/radio.c +++ b/subsys/net/lib/openthread/platform/radio.c @@ -42,7 +42,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME, CONFIG_OPENTHREAD_L2_LOG_LEVEL); #if defined(CONFIG_IEEE802154_2015) #define ACK_PKT_LENGTH 127 #else -#define ACK_PKT_LENGTH 3 +#define ACK_PKT_LENGTH 5 #endif #define FRAME_TYPE_MASK 0x07