Commit 4edf46d8 authored by Florian Grandel's avatar Florian Grandel Committed by Carles Cufi
Browse files

net: l2: ieee802154: radio: fix radio utils naming

The IEEE 802.15.4 stack defines radio API helpers that provide
simplified and encapsulated access to radio API features.

These helpers were missing the `_radio_` infix. This infix is introduced
to clearly distinguish between MAC and PHY concerns. While PHY features
may be shared between L2 implementations (including the functions
concerned here), this is not true for MAC features.

Signed-off-by: default avatarFlorian Grandel <fgrandel@code-for-humans.de>
parent 3aa668f3
Loading
Loading
Loading
Loading
+1 −1
Changes for modules/openthread/platform/radio.c: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -842,7 +842,7 @@ void otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
	promiscuous = aEnable;
	/* TODO: Should check whether the radio driver actually supports
	 *       promiscuous mode, see net_if_l2(iface)->get_flags() and
	 *       ieee802154_get_hw_capabilities(iface).
	 *       ieee802154_radio_get_hw_capabilities(iface).
	 */
	radio_api->configure(radio_dev, IEEE802154_CONFIG_PROMISCUOUS, &config);
}
+16 −14
Changes for subsys/net/l2/ieee802154/ieee802154.c: 16 added lines, 14 removed lines.
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ static inline void ieee802154_acknowledge(struct net_if *iface, struct ieee80215
{
	struct net_pkt *pkt;

	if (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_RX_TX_ACK) {
	if (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_RX_TX_ACK) {
		return;
	}

@@ -88,7 +88,7 @@ static inline void ieee802154_acknowledge(struct net_if *iface, struct ieee80215

	if (ieee802154_create_ack_frame(iface, pkt, mpdu->mhr.fs->sequence)) {
		/* ACK frames must not use the CSMA/CA procedure, see section 6.2.5.1. */
		ieee802154_tx(iface, IEEE802154_TX_MODE_DIRECT, pkt, pkt->buffer);
		ieee802154_radio_tx(iface, IEEE802154_TX_MODE_DIRECT, pkt, pkt->buffer);
	}

	net_pkt_unref(pkt);
@@ -101,7 +101,7 @@ inline bool ieee802154_prepare_for_ack(struct net_if *iface, struct net_pkt *pkt
{
	bool ack_required = ieee802154_is_ar_flag_set(frag);

	if (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK) {
	if (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK) {
		return ack_required;
	}

@@ -123,7 +123,7 @@ enum net_verdict ieee802154_handle_ack(struct net_if *iface, struct net_pkt *pkt
{
	struct ieee802154_context *ctx = net_if_l2_data(iface);

	if (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK) {
	if (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK) {
		__ASSERT_NO_MSG(ctx->ack_seq == 0U);
		/* TODO: Release packet in L2 as we're taking ownership. */
		return NET_OK;
@@ -153,7 +153,8 @@ inline int ieee802154_wait_for_ack(struct net_if *iface, bool ack_required)
{
	struct ieee802154_context *ctx = net_if_l2_data(iface);

	if (!ack_required || (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK)) {
	if (!ack_required ||
	    (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK)) {
		__ASSERT_NO_MSG(ctx->ack_seq == 0U);
		return 0;
	}
@@ -178,17 +179,18 @@ int ieee802154_radio_send(struct net_if *iface, struct net_pkt *pkt, struct net_

	NET_DBG("frag %p", frag);

	if (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_RETRANSMISSION) {
	if (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_RETRANSMISSION) {
		/* A driver that claims retransmission capability must also be able
		 * to wait for ACK frames otherwise it could not decide whether or
		 * not retransmission is required in a standard conforming way.
		 */
		__ASSERT_NO_MSG(ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_TX_RX_ACK);
		__ASSERT_NO_MSG(ieee802154_radio_get_hw_capabilities(iface) &
				IEEE802154_HW_TX_RX_ACK);
		remaining_attempts = 1;
	}

	hw_csma = IS_ENABLED(CONFIG_NET_L2_IEEE802154_RADIO_CSMA_CA) &&
		  ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_CSMA;
		  ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_CSMA;

	/* Media access (CSMA, ALOHA, ...) and retransmission, see section 6.7.4.4. */
	while (remaining_attempts) {
@@ -211,7 +213,7 @@ int ieee802154_radio_send(struct net_if *iface, struct net_pkt *pkt, struct net_
		 *  - retransmission on ACK timeout in case the driver has
		 *    IEEE802154_HW_RETRANSMISSION capability.
		 */
		ret = ieee802154_tx(
		ret = ieee802154_radio_tx(
			iface, hw_csma ? IEEE802154_TX_MODE_CSMA_CA : IEEE802154_TX_MODE_DIRECT,
			pkt, frag);
		if (ret) {
@@ -590,10 +592,10 @@ static int ieee802154_enable(struct net_if *iface, bool state)
	k_sem_give(&ctx->ctx_lock);

	if (state) {
		return ieee802154_start(iface);
		return ieee802154_radio_start(iface);
	}

	return ieee802154_stop(iface);
	return ieee802154_radio_stop(iface);
}

static enum net_l2_flags ieee802154_flags(struct net_if *iface)
@@ -630,7 +632,7 @@ void ieee802154_init(struct net_if *iface)

	ctx->channel = IEEE802154_NO_CHANNEL;
	ctx->flags = NET_L2_MULTICAST;
	if (ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_PROMISC) {
	if (ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_PROMISC) {
		ctx->flags |= NET_L2_PROMISC_MODE;
	}

@@ -661,9 +663,9 @@ void ieee802154_init(struct net_if *iface)
#endif

	sys_memcpy_swap(ctx->ext_addr, eui64_be, IEEE802154_EXT_ADDR_LENGTH);
	ieee802154_filter_ieee_addr(iface, ctx->ext_addr);
	ieee802154_radio_filter_ieee_addr(iface, ctx->ext_addr);

	if (!ieee802154_set_tx_power(iface, tx_power)) {
	if (!ieee802154_radio_set_tx_power(iface, tx_power)) {
		ctx->tx_power = tx_power;
	}
}
+14 −14
Changes for subsys/net/l2/ieee802154/ieee802154_mgmt.c: 14 added lines, 14 removed lines.
Original line number Diff line number Diff line
@@ -138,9 +138,9 @@ static int ieee802154_scan(uint32_t mgmt_request, struct net_if *iface,

	ret = 0;

	ieee802154_filter_pan_id(iface, IEEE802154_BROADCAST_PAN_ID);
	ieee802154_radio_filter_pan_id(iface, IEEE802154_BROADCAST_PAN_ID);

	if (ieee802154_start(iface)) {
	if (ieee802154_radio_start(iface)) {
		NET_DBG("Could not start device");
		ret = -EIO;

@@ -157,7 +157,7 @@ static int ieee802154_scan(uint32_t mgmt_request, struct net_if *iface,

		scan->channel = channel;
		NET_DBG("Scanning channel %u", channel);
		ieee802154_set_channel(iface, channel);
		ieee802154_radio_set_channel(iface, channel);

		/* Active scan sends a beacon request */
		if (mgmt_request == NET_REQUEST_IEEE802154_ACTIVE_SCAN) {
@@ -190,8 +190,8 @@ static int ieee802154_scan(uint32_t mgmt_request, struct net_if *iface,

out:
	/* Let's come back to context's settings. */
	ieee802154_filter_pan_id(iface, ctx->pan_id);
	ieee802154_set_channel(iface, ctx->channel);
	ieee802154_radio_filter_pan_id(iface, ctx->pan_id);
	ieee802154_radio_set_channel(iface, ctx->channel);

	ctx->scan_ctx = NULL;
	k_sem_give(&ctx->scan_ctx_lock);
@@ -244,7 +244,7 @@ static inline void set_association(struct net_if *iface, struct ieee802154_conte
	memcpy(ctx->linkaddr.addr, &short_addr_be, IEEE802154_SHORT_ADDR_LENGTH);

	update_net_if_link_addr(iface, ctx);
	ieee802154_filter_short_addr(iface, ctx->short_addr);
	ieee802154_radio_filter_short_addr(iface, ctx->short_addr);
}

/* Requires the context lock to be held. */
@@ -254,7 +254,7 @@ static inline void remove_association(struct net_if *iface, struct ieee802154_co
	memset(ctx->coord_ext_addr, 0, IEEE802154_EXT_ADDR_LENGTH);
	ctx->coord_short_addr = 0U;
	set_linkaddr_to_ext_addr(iface, ctx);
	ieee802154_filter_short_addr(iface, IEEE802154_SHORT_ADDRESS_NOT_ASSOCIATED);
	ieee802154_radio_filter_short_addr(iface, IEEE802154_SHORT_ADDRESS_NOT_ASSOCIATED);
}

/* Requires the context lock to be held. */
@@ -386,7 +386,7 @@ static int ieee802154_associate(uint32_t mgmt_request, struct net_if *iface,

	ieee802154_mac_cmd_finalize(pkt, IEEE802154_CFI_ASSOCIATION_REQUEST);

	ieee802154_filter_pan_id(iface, req->pan_id);
	ieee802154_radio_filter_pan_id(iface, req->pan_id);

	if (net_if_send_data(iface, pkt)) {
		net_pkt_unref(pkt);
@@ -442,7 +442,7 @@ static int ieee802154_associate(uint32_t mgmt_request, struct net_if *iface,

out:
	if (ret < 0) {
		ieee802154_filter_pan_id(iface, 0);
		ieee802154_radio_filter_pan_id(iface, 0);
	}

	k_sem_give(&ctx->ctx_lock);
@@ -567,12 +567,12 @@ static int ieee802154_set_parameters(uint32_t mgmt_request,

	if (mgmt_request == NET_REQUEST_IEEE802154_SET_CHANNEL) {
		if (ctx->channel != value) {
			if (!ieee802154_verify_channel(iface, value)) {
			if (!ieee802154_radio_verify_channel(iface, value)) {
				ret = -EINVAL;
				goto out;
			}

			ret = ieee802154_set_channel(iface, value);
			ret = ieee802154_radio_set_channel(iface, value);
			if (!ret) {
				ctx->channel = value;
			}
@@ -580,7 +580,7 @@ static int ieee802154_set_parameters(uint32_t mgmt_request,
	} else if (mgmt_request == NET_REQUEST_IEEE802154_SET_PAN_ID) {
		if (ctx->pan_id != value) {
			ctx->pan_id = value;
			ieee802154_filter_pan_id(iface, ctx->pan_id);
			ieee802154_radio_filter_pan_id(iface, ctx->pan_id);
		}
	} else if (mgmt_request == NET_REQUEST_IEEE802154_SET_EXT_ADDR) {
		if (len != IEEE802154_EXT_ADDR_LENGTH) {
@@ -599,7 +599,7 @@ static int ieee802154_set_parameters(uint32_t mgmt_request,
				set_linkaddr_to_ext_addr(iface, ctx);
			}

			ieee802154_filter_ieee_addr(iface, ctx->ext_addr);
			ieee802154_radio_filter_ieee_addr(iface, ctx->ext_addr);
		}
	} else if (mgmt_request == NET_REQUEST_IEEE802154_SET_SHORT_ADDR) {
		if (ctx->short_addr != value) {
@@ -611,7 +611,7 @@ static int ieee802154_set_parameters(uint32_t mgmt_request,
		}
	} else if (mgmt_request == NET_REQUEST_IEEE802154_SET_TX_POWER) {
		if (ctx->tx_power != (int16_t)value) {
			ret = ieee802154_set_tx_power(iface, (int16_t)value);
			ret = ieee802154_radio_set_tx_power(iface, (int16_t)value);
			if (!ret) {
				ctx->tx_power = (int16_t)value;
			}
+2 −2
Changes for subsys/net/l2/ieee802154/ieee802154_radio_csma_ca.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ static inline int unslotted_csma_ca_channel_access(struct net_if *iface)
	uint32_t symbol_period, turnaround_time;
	bool is_subg_phy;

	is_subg_phy = ieee802154_get_hw_capabilities(iface) & IEEE802154_HW_SUB_GHZ;
	is_subg_phy = ieee802154_radio_get_hw_capabilities(iface) & IEEE802154_HW_SUB_GHZ;
	/* TODO: Move symbol period calculation to radio driver. */
	symbol_period = IEEE802154_PHY_SYMBOL_PERIOD(is_subg_phy);
	turnaround_time = IEEE802154_PHY_A_TURNAROUND_TIME(is_subg_phy);
@@ -51,7 +51,7 @@ static inline int unslotted_csma_ca_channel_access(struct net_if *iface)
									       symbol_period));
		}

		ret = ieee802154_cca(iface);
		ret = ieee802154_radio_cca(iface);
		if (ret == 0) {
			/* Channel is idle -> CSMA Success */
			return 0;
+16 −26
Changes for subsys/net/l2/ieee802154/ieee802154_utils.h: 16 added lines, 26 removed lines.
Original line number Diff line number Diff line
@@ -14,8 +14,7 @@

#include <zephyr/net/ieee802154_radio.h>

static inline
enum ieee802154_hw_caps ieee802154_get_hw_capabilities(struct net_if *iface)
static inline enum ieee802154_hw_caps ieee802154_radio_get_hw_capabilities(struct net_if *iface)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -27,7 +26,7 @@ enum ieee802154_hw_caps ieee802154_get_hw_capabilities(struct net_if *iface)
	return radio->get_capabilities(net_if_get_device(iface));
}

static inline int ieee802154_cca(struct net_if *iface)
static inline int ieee802154_radio_cca(struct net_if *iface)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -39,7 +38,7 @@ static inline int ieee802154_cca(struct net_if *iface)
	return radio->cca(net_if_get_device(iface));
}

static inline int ieee802154_set_channel(struct net_if *iface, uint16_t channel)
static inline int ieee802154_radio_set_channel(struct net_if *iface, uint16_t channel)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -51,7 +50,7 @@ static inline int ieee802154_set_channel(struct net_if *iface, uint16_t channel)
	return radio->set_channel(net_if_get_device(iface), channel);
}

static inline int ieee802154_set_tx_power(struct net_if *iface, int16_t dbm)
static inline int ieee802154_radio_set_tx_power(struct net_if *iface, int16_t dbm)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -63,10 +62,8 @@ static inline int ieee802154_set_tx_power(struct net_if *iface, int16_t dbm)
	return radio->set_txpower(net_if_get_device(iface), dbm);
}

static inline int ieee802154_tx(struct net_if *iface,
				enum ieee802154_tx_mode mode,
				struct net_pkt *pkt,
				struct net_buf *buf)
static inline int ieee802154_radio_tx(struct net_if *iface, enum ieee802154_tx_mode mode,
				      struct net_pkt *pkt, struct net_buf *buf)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -78,7 +75,7 @@ static inline int ieee802154_tx(struct net_if *iface,
	return radio->tx(net_if_get_device(iface), mode, pkt, buf);
}

static inline int ieee802154_start(struct net_if *iface)
static inline int ieee802154_radio_start(struct net_if *iface)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -90,7 +87,7 @@ static inline int ieee802154_start(struct net_if *iface)
	return radio->start(net_if_get_device(iface));
}

static inline int ieee802154_stop(struct net_if *iface)
static inline int ieee802154_radio_stop(struct net_if *iface)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -108,7 +105,7 @@ static inline int ieee802154_stop(struct net_if *iface)
 * @param iface Pointer to the IEEE 802.15.4 interface
 * @param ieee_addr Pointer to an extended address in little endian byte order
 */
static inline void ieee802154_filter_ieee_addr(struct net_if *iface, uint8_t *ieee_addr)
static inline void ieee802154_radio_filter_ieee_addr(struct net_if *iface, uint8_t *ieee_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -127,8 +124,7 @@ static inline void ieee802154_filter_ieee_addr(struct net_if *iface, uint8_t *ie
	}
}

static inline void ieee802154_filter_short_addr(struct net_if *iface,
						uint16_t short_addr)
static inline void ieee802154_radio_filter_short_addr(struct net_if *iface, uint16_t short_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -147,8 +143,7 @@ static inline void ieee802154_filter_short_addr(struct net_if *iface,
	}
}

static inline void ieee802154_filter_pan_id(struct net_if *iface,
					    uint16_t pan_id)
static inline void ieee802154_radio_filter_pan_id(struct net_if *iface, uint16_t pan_id)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -167,8 +162,7 @@ static inline void ieee802154_filter_pan_id(struct net_if *iface,
	}
}

static inline void ieee802154_filter_src_ieee_addr(struct net_if *iface,
						   uint8_t *ieee_addr)
static inline void ieee802154_radio_filter_src_ieee_addr(struct net_if *iface, uint8_t *ieee_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -187,8 +181,7 @@ static inline void ieee802154_filter_src_ieee_addr(struct net_if *iface,
	}
}

static inline void ieee802154_filter_src_short_addr(struct net_if *iface,
						    uint16_t short_addr)
static inline void ieee802154_radio_filter_src_short_addr(struct net_if *iface, uint16_t short_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -207,8 +200,7 @@ static inline void ieee802154_filter_src_short_addr(struct net_if *iface,
	}
}

static inline void ieee802154_remove_src_ieee_addr(struct net_if *iface,
						   uint8_t *ieee_addr)
static inline void ieee802154_radio_remove_src_ieee_addr(struct net_if *iface, uint8_t *ieee_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -227,8 +219,7 @@ static inline void ieee802154_remove_src_ieee_addr(struct net_if *iface,
	}
}

static inline void ieee802154_remove_src_short_addr(struct net_if *iface,
						    uint16_t short_addr)
static inline void ieee802154_radio_remove_src_short_addr(struct net_if *iface, uint16_t short_addr)
{
	const struct ieee802154_radio_api *radio =
		net_if_get_device(iface)->api;
@@ -247,8 +238,7 @@ static inline void ieee802154_remove_src_short_addr(struct net_if *iface,
	}
}

static inline bool ieee802154_verify_channel(struct net_if *iface,
					     uint16_t channel)
static inline bool ieee802154_radio_verify_channel(struct net_if *iface, uint16_t channel)
{
	if (channel == IEEE802154_NO_CHANNEL) {
		return false;