Revert "drivers: ieee802154: nrf: cache radio channel"
This reverts commit 780b12854c.
"drivers: ieee802154: nrf: cache radio channel"
Implementation affected RCP devices in openthread as MAC layer
does not call `Receive()` functions after transmit is done.
Additionally, after sending a frame to a new channel (for example
while discovery operation), radio switches to RX state immediately
after TX, but continues to listen on old channel for about 5ms,
until MAC layer calls `Receive` operation, forcing to change the
channel.
Signed-off-by: Maciej Baczmanski <maciej.baczmanski@nordicsemi.no>
This commit is contained in:
parent
3bf19d9f03
commit
dbe74b3299
2 changed files with 2 additions and 19 deletions
|
|
@ -255,8 +255,6 @@ static int nrf5_cca(const struct device *dev)
|
||||||
{
|
{
|
||||||
struct nrf5_802154_data *nrf5_radio = NRF5_802154_DATA(dev);
|
struct nrf5_802154_data *nrf5_radio = NRF5_802154_DATA(dev);
|
||||||
|
|
||||||
nrf_802154_channel_set(nrf5_data.channel);
|
|
||||||
|
|
||||||
if (!nrf_802154_cca()) {
|
if (!nrf_802154_cca()) {
|
||||||
LOG_DBG("CCA failed");
|
LOG_DBG("CCA failed");
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
@ -282,7 +280,7 @@ static int nrf5_set_channel(const struct device *dev, uint16_t channel)
|
||||||
return channel < 11 ? -ENOTSUP : -EINVAL;
|
return channel < 11 ? -ENOTSUP : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nrf5_data.channel = channel;
|
nrf_802154_channel_set(channel);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -295,8 +293,6 @@ static int nrf5_energy_scan_start(const struct device *dev,
|
||||||
|
|
||||||
ARG_UNUSED(dev);
|
ARG_UNUSED(dev);
|
||||||
|
|
||||||
nrf_802154_channel_set(nrf5_data.channel);
|
|
||||||
|
|
||||||
if (nrf5_data.energy_scan_done == NULL) {
|
if (nrf5_data.energy_scan_done == NULL) {
|
||||||
nrf5_data.energy_scan_done = done_cb;
|
nrf5_data.energy_scan_done = done_cb;
|
||||||
|
|
||||||
|
|
@ -462,10 +458,6 @@ static bool nrf5_tx_immediate(struct net_pkt *pkt, uint8_t *payload, bool cca)
|
||||||
.use_metadata_value = true,
|
.use_metadata_value = true,
|
||||||
.power = nrf5_data.txpwr,
|
.power = nrf5_data.txpwr,
|
||||||
},
|
},
|
||||||
.tx_channel = {
|
|
||||||
.use_metadata_value = true,
|
|
||||||
.channel = nrf5_data.channel,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return nrf_802154_transmit_raw(payload, &metadata);
|
return nrf_802154_transmit_raw(payload, &metadata);
|
||||||
|
|
@ -483,10 +475,6 @@ static bool nrf5_tx_csma_ca(struct net_pkt *pkt, uint8_t *payload)
|
||||||
.use_metadata_value = true,
|
.use_metadata_value = true,
|
||||||
.power = nrf5_data.txpwr,
|
.power = nrf5_data.txpwr,
|
||||||
},
|
},
|
||||||
.tx_channel = {
|
|
||||||
.use_metadata_value = true,
|
|
||||||
.channel = nrf5_data.channel,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return nrf_802154_transmit_csma_ca_raw(payload, &metadata);
|
return nrf_802154_transmit_csma_ca_raw(payload, &metadata);
|
||||||
|
|
@ -526,7 +514,7 @@ static bool nrf5_tx_at(struct nrf5_802154_data *nrf5_radio, struct net_pkt *pkt,
|
||||||
.dynamic_data_is_set = net_pkt_ieee802154_mac_hdr_rdy(pkt),
|
.dynamic_data_is_set = net_pkt_ieee802154_mac_hdr_rdy(pkt),
|
||||||
},
|
},
|
||||||
.cca = cca,
|
.cca = cca,
|
||||||
.channel = nrf5_data.channel,
|
.channel = nrf_802154_channel_get(),
|
||||||
.tx_power = {
|
.tx_power = {
|
||||||
.use_metadata_value = true,
|
.use_metadata_value = true,
|
||||||
.power = nrf5_data.txpwr,
|
.power = nrf5_data.txpwr,
|
||||||
|
|
@ -668,7 +656,6 @@ static int nrf5_start(const struct device *dev)
|
||||||
ARG_UNUSED(dev);
|
ARG_UNUSED(dev);
|
||||||
|
|
||||||
nrf_802154_tx_power_set(nrf5_data.txpwr);
|
nrf_802154_tx_power_set(nrf5_data.txpwr);
|
||||||
nrf_802154_channel_set(nrf5_data.channel);
|
|
||||||
|
|
||||||
if (!nrf_802154_receive()) {
|
if (!nrf_802154_receive()) {
|
||||||
LOG_ERR("Failed to enter receive state");
|
LOG_ERR("Failed to enter receive state");
|
||||||
|
|
@ -713,7 +700,6 @@ static int nrf5_continuous_carrier(const struct device *dev)
|
||||||
ARG_UNUSED(dev);
|
ARG_UNUSED(dev);
|
||||||
|
|
||||||
nrf_802154_tx_power_set(nrf5_data.txpwr);
|
nrf_802154_tx_power_set(nrf5_data.txpwr);
|
||||||
nrf_802154_channel_set(nrf5_data.channel);
|
|
||||||
|
|
||||||
if (!nrf_802154_continuous_carrier()) {
|
if (!nrf_802154_continuous_carrier()) {
|
||||||
LOG_ERR("Failed to enter continuous carrier state");
|
LOG_ERR("Failed to enter continuous carrier state");
|
||||||
|
|
|
||||||
|
|
@ -100,9 +100,6 @@ struct nrf5_802154_data {
|
||||||
/* The TX power in dBm. */
|
/* The TX power in dBm. */
|
||||||
int8_t txpwr;
|
int8_t txpwr;
|
||||||
|
|
||||||
/* The radio channel. */
|
|
||||||
uint8_t channel;
|
|
||||||
|
|
||||||
#if defined(CONFIG_NRF_802154_SER_HOST) && defined(CONFIG_IEEE802154_CSL_ENDPOINT)
|
#if defined(CONFIG_NRF_802154_SER_HOST) && defined(CONFIG_IEEE802154_CSL_ENDPOINT)
|
||||||
/* The last configured value of CSL period in units of 10 symbols. */
|
/* The last configured value of CSL period in units of 10 symbols. */
|
||||||
uint32_t csl_period;
|
uint32_t csl_period;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue