@@ -174,6 +174,7 @@ static int _send(netdev_t *netdev, const iolist_t *pkt)
174174 * inside the TX Done callback */
175175 netdev_submac -> ev = NETDEV_EVENT_TX_STARTED ;
176176 }
177+ netdev_submac -> bytes_tx = res ;
177178 return res ;
178179}
179180
@@ -280,21 +281,14 @@ static void submac_tx_done(ieee802154_submac_t *submac, int status,
280281 }
281282
282283 netdev_submac -> dispatch = true;
284+ netdev_submac -> ev = NETDEV_EVENT_TX_COMPLETE ;
283285
284286 switch (status ) {
285- case TX_STATUS_SUCCESS :
286- netdev_submac -> ev = NETDEV_EVENT_TX_COMPLETE ;
287- break ;
288- case TX_STATUS_FRAME_PENDING :
289- netdev_submac -> ev = NETDEV_EVENT_TX_COMPLETE_DATA_PENDING ;
290- break ;
291287 case TX_STATUS_MEDIUM_BUSY :
292- netdev_submac -> ev = NETDEV_EVENT_TX_MEDIUM_BUSY ;
288+ netdev_submac -> bytes_tx = - EBUSY ;
293289 break ;
294290 case TX_STATUS_NO_ACK :
295- netdev_submac -> ev = NETDEV_EVENT_TX_NOACK ;
296- break ;
297- default :
291+ netdev_submac -> bytes_tx = - EHOSTUNREACH ;
298292 break ;
299293 }
300294}
@@ -377,6 +371,16 @@ static int _init(netdev_t *netdev)
377371 return 0 ;
378372}
379373
374+ static int _confirm_send (netdev_t * netdev , void * info )
375+ {
376+ (void )info ;
377+ netdev_ieee802154_t * netdev_ieee802154 = container_of (netdev , netdev_ieee802154_t , netdev );
378+ netdev_ieee802154_submac_t * netdev_submac = container_of (netdev_ieee802154 ,
379+ netdev_ieee802154_submac_t ,
380+ dev );
381+ return netdev_submac -> bytes_tx ;
382+ }
383+
380384int netdev_ieee802154_submac_init (netdev_ieee802154_submac_t * netdev_submac )
381385{
382386 netdev_t * netdev = & netdev_submac -> dev .netdev ;
@@ -402,6 +406,7 @@ static const netdev_driver_t netdev_submac_driver = {
402406 .recv = _recv ,
403407 .isr = _isr ,
404408 .init = _init ,
409+ .confirm_send = _confirm_send ,
405410};
406411
407412/** @} */
0 commit comments