diff --git a/drivers/netdev_ieee802154_submac/Makefile.dep b/drivers/netdev_ieee802154_submac/Makefile.dep index ded8dc4552..07827af196 100644 --- a/drivers/netdev_ieee802154_submac/Makefile.dep +++ b/drivers/netdev_ieee802154_submac/Makefile.dep @@ -2,4 +2,5 @@ USEMODULE += netdev_ieee802154 USEMODULE += netdev_new_api USEMODULE += ieee802154 USEMODULE += ieee802154_submac +USEMODULE += iolist USEMODULE += ztimer_usec diff --git a/drivers/netdev_ieee802154_submac/netdev_ieee802154_submac.c b/drivers/netdev_ieee802154_submac/netdev_ieee802154_submac.c index 32bc07cc64..0205f605f6 100644 --- a/drivers/netdev_ieee802154_submac/netdev_ieee802154_submac.c +++ b/drivers/netdev_ieee802154_submac/netdev_ieee802154_submac.c @@ -196,7 +196,14 @@ static int _send(netdev_t *netdev, const iolist_t *pkt) * inside the TX Done callback */ netdev_submac->ev = NETDEV_EVENT_TX_STARTED; } - netdev_submac->bytes_tx = res; + if (res == 0) { + uint8_t len = iolist_size(pkt); + if (len > 0) { + len += IEEE802154_FCS_LEN; + } + netdev_submac->bytes_tx = len; + } + return res; } diff --git a/pkg/openthread/contrib/platform_radio.c b/pkg/openthread/contrib/platform_radio.c index e999d174d7..e671aa14ff 100644 --- a/pkg/openthread/contrib/platform_radio.c +++ b/pkg/openthread/contrib/platform_radio.c @@ -189,7 +189,7 @@ void send_pkt(otInstance *aInstance, netdev_t *dev, netdev_event_t event) } else if (res == -EHOSTUNREACH) { otPlatRadioTxDone(aInstance, &sTransmitFrame, NULL, OT_ERROR_NO_ACK); } else { - otPlatRadioTxDone(aInstance, &sTransmitFrame, NULL, OT_ERROR_FAILED); + otPlatRadioTxDone(aInstance, &sTransmitFrame, NULL, OT_ERROR_ABORT); } } #else