diff --git a/drivers/ieee802154/ieee802154_cc2520.c b/drivers/ieee802154/ieee802154_cc2520.c index 1696c600fd5..9e0a7c6fcf2 100644 --- a/drivers/ieee802154/ieee802154_cc2520.c +++ b/drivers/ieee802154/ieee802154_cc2520.c @@ -1075,11 +1075,10 @@ static int cc2520_init(struct device *dev) return -EIO; } - k_thread_spawn(cc2520->cc2520_rx_stack, - CONFIG_IEEE802154_CC2520_RX_STACK_SIZE, - (k_thread_entry_t)cc2520_rx, - dev, NULL, NULL, - K_PRIO_COOP(2), 0, 0); + k_thread_create(&cc2520->cc2520_rx_thread, cc2520->cc2520_rx_stack, + CONFIG_IEEE802154_CC2520_RX_STACK_SIZE, + (k_thread_entry_t)cc2520_rx, + dev, NULL, NULL, K_PRIO_COOP(2), 0, 0); SYS_LOG_INF("CC2520 initialized"); diff --git a/drivers/ieee802154/ieee802154_cc2520.h b/drivers/ieee802154/ieee802154_cc2520.h index 755f9dcc805..ec4332636c2 100644 --- a/drivers/ieee802154/ieee802154_cc2520.h +++ b/drivers/ieee802154/ieee802154_cc2520.h @@ -41,6 +41,7 @@ struct cc2520_context { atomic_t tx; /************RX************/ char __stack cc2520_rx_stack[CONFIG_IEEE802154_CC2520_RX_STACK_SIZE]; + struct k_thread cc2520_rx_thread; struct k_sem rx_lock; #ifdef CONFIG_IEEE802154_CC2520_CRYPTO struct k_sem access_lock; diff --git a/drivers/ieee802154/ieee802154_mcr20a.c b/drivers/ieee802154/ieee802154_mcr20a.c index 7ab2eca4406..f03455bad4c 100644 --- a/drivers/ieee802154/ieee802154_mcr20a.c +++ b/drivers/ieee802154/ieee802154_mcr20a.c @@ -1405,11 +1405,10 @@ static int mcr20a_init(struct device *dev) return -EIO; } - k_thread_spawn(mcr20a->mcr20a_rx_stack, - CONFIG_IEEE802154_MCR20A_RX_STACK_SIZE, - (k_thread_entry_t)mcr20a_thread_main, - dev, NULL, NULL, - K_PRIO_COOP(2), 0, 0); + k_thread_create(&mcr20a->mcr20a_rx_thread, mcr20a->mcr20a_rx_stack, + CONFIG_IEEE802154_MCR20A_RX_STACK_SIZE, + (k_thread_entry_t)mcr20a_thread_main, + dev, NULL, NULL, K_PRIO_COOP(2), 0, 0); return 0; } diff --git a/drivers/ieee802154/ieee802154_mcr20a.h b/drivers/ieee802154/ieee802154_mcr20a.h index 2fd96b8f5fc..01c822ccc20 100644 --- a/drivers/ieee802154/ieee802154_mcr20a.h +++ b/drivers/ieee802154/ieee802154_mcr20a.h @@ -43,6 +43,7 @@ struct mcr20a_context { atomic_t seq_retval; /************RX************/ char __stack mcr20a_rx_stack[CONFIG_IEEE802154_MCR20A_RX_STACK_SIZE]; + struct k_thread mcr20a_rx_thread; u8_t lqi; }; diff --git a/drivers/ieee802154/ieee802154_nrf5.c b/drivers/ieee802154/ieee802154_nrf5.c index 993b9b8ae06..f44d7d0b811 100644 --- a/drivers/ieee802154/ieee802154_nrf5.c +++ b/drivers/ieee802154/ieee802154_nrf5.c @@ -335,11 +335,10 @@ static int nrf5_init(struct device *dev) nrf5_radio_cfg->irq_config_func(dev); - k_thread_spawn(nrf5_radio->rx_stack, - CONFIG_IEEE802154_NRF5_RX_STACK_SIZE, - nrf5_rx_thread, - dev, NULL, NULL, - K_PRIO_COOP(2), 0, 0); + k_thread_create(&nrf5_radio->rx_thread, nrf5_radio->rx_stack, + CONFIG_IEEE802154_NRF5_RX_STACK_SIZE, + nrf5_rx_thread, dev, NULL, NULL, + K_PRIO_COOP(2), 0, 0); SYS_LOG_INF("nRF5 802154 radio initialized"); diff --git a/drivers/ieee802154/ieee802154_nrf5.h b/drivers/ieee802154/ieee802154_nrf5.h index 8a0a17a5268..1f0fd9dbeb6 100644 --- a/drivers/ieee802154/ieee802154_nrf5.h +++ b/drivers/ieee802154/ieee802154_nrf5.h @@ -28,6 +28,8 @@ struct nrf5_802154_data { u8_t mac[8]; /* RX thread stack. */ char __stack rx_stack[CONFIG_IEEE802154_NRF5_RX_STACK_SIZE]; + /* RX thread control block */ + struct k_thread rx_thread; /* CCA complete sempahore. Unlocked when CCA is complete. */ struct k_sem cca_wait;