Skip to content

Commit 4113a43

Browse files
lmaciejonczykjukkar
authored andcommitted
drivers: ieee802154: fix serialization issue in nRF5
Function 'nrf_802154_transmitted_timestamp_raw' is not serialized and connot be used for multi-core devices yet. Signed-off-by: Lukasz Maciejonczyk <[email protected]>
1 parent 2f409f4 commit 4113a43

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

drivers/ieee802154/ieee802154_nrf5.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ static int handle_ack(struct nrf5_802154_data *nrf5_radio)
389389
net_pkt_set_ieee802154_lqi(ack_pkt, nrf5_radio->ack_frame.lqi);
390390
net_pkt_set_ieee802154_rssi(ack_pkt, nrf5_radio->ack_frame.rssi);
391391

392-
#if defined(CONFIG_NET_PKT_TIMESTAMP) && !defined(CONFIG_NRF_802154_SER_HOST)
392+
#if defined(CONFIG_NET_PKT_TIMESTAMP)
393393
struct net_ptp_time timestamp = {
394394
.second = nrf5_radio->ack_frame.time / USEC_PER_SEC,
395395
.nanosecond = (nrf5_radio->ack_frame.time % USEC_PER_SEC) * NSEC_PER_USEC
@@ -764,8 +764,21 @@ void nrf_802154_tx_ack_started(const uint8_t *data)
764764
data[FRAME_PENDING_BYTE] & FRAME_PENDING_BIT;
765765
}
766766

767-
void nrf_802154_transmitted_timestamp_raw(const uint8_t *frame, uint8_t *ack,
768-
int8_t power, uint8_t lqi, uint32_t ack_time)
767+
#if defined(CONFIG_NRF_802154_SER_HOST)
768+
void nrf_802154_transmitted_raw(const uint8_t *frame, uint8_t *ack, int8_t power, uint8_t lqi)
769+
{
770+
ARG_UNUSED(frame);
771+
772+
nrf5_data.tx_result = NRF_802154_TX_ERROR_NONE;
773+
nrf5_data.ack_frame.psdu = ack;
774+
nrf5_data.ack_frame.rssi = power;
775+
nrf5_data.ack_frame.lqi = lqi;
776+
777+
k_sem_give(&nrf5_data.tx_wait);
778+
}
779+
#else
780+
void nrf_802154_transmitted_timestamp_raw(const uint8_t *frame, uint8_t *ack, int8_t power,
781+
uint8_t lqi, uint32_t ack_time)
769782
{
770783
ARG_UNUSED(frame);
771784
ARG_UNUSED(ack_time);
@@ -775,13 +788,14 @@ void nrf_802154_transmitted_timestamp_raw(const uint8_t *frame, uint8_t *ack,
775788
nrf5_data.ack_frame.rssi = power;
776789
nrf5_data.ack_frame.lqi = lqi;
777790

778-
#if defined(CONFIG_NET_PKT_TIMESTAMP) && !defined(CONFIG_NRF_802154_SER_HOST)
791+
#if defined(CONFIG_NET_PKT_TIMESTAMP)
779792
nrf5_data.ack_frame.time =
780793
nrf_802154_first_symbol_timestamp_get(ack_time, nrf5_data.ack_frame.psdu[0]);
781794
#endif
782795

783796
k_sem_give(&nrf5_data.tx_wait);
784797
}
798+
#endif
785799

786800
void nrf_802154_transmit_failed(const uint8_t *frame,
787801
nrf_802154_tx_error_t error)

0 commit comments

Comments
 (0)