linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Alexander Aring <alex.aring@gmail.com>,
	Stefan Schmidt <stefan@datenfreihafen.org>,
	linux-wpan@vger.kernel.org
Cc: netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	David Girault <david.girault@qorvo.com>,
	Romuald Despres <romuald.despres@qorvo.com>,
	Frederic Blain <frederic.blain@qorvo.com>,
	Nicolas Schodet <nico@ni.fr.eu.org>,
	Michael Hennerich <michael.hennerich@analog.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Varka Bhadram <varkabhadram@gmail.com>,
	Xue Liu <liuxuenetmail@gmail.com>, Alan Ott <alan@signal11.us>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH v3 10/41] net: ieee802154: Drop duration settings when the core does it already
Date: Mon, 17 Jan 2022 12:54:09 +0100	[thread overview]
Message-ID: <20220117115440.60296-11-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20220117115440.60296-1-miquel.raynal@bootlin.com>

The core now knows how to set the symbol duration in a few cases, when
drivers correctly advertise the protocols used on each channel. For
these drivers, there is no more need to bother with symbol duration,
lifs and sifs periods so just drop the duplicated code.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 drivers/net/ieee802154/at86rf230.c | 33 ------------------------------
 drivers/net/ieee802154/atusb.c     | 33 ------------------------------
 drivers/net/ieee802154/ca8210.c    |  1 -
 drivers/net/ieee802154/mcr20a.c    |  5 -----
 4 files changed, 72 deletions(-)

diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c
index e58b0dc64364..583f835c317a 100644
--- a/drivers/net/ieee802154/at86rf230.c
+++ b/drivers/net/ieee802154/at86rf230.c
@@ -1055,36 +1055,6 @@ at86rf212_set_channel(struct at86rf230_local *lp, u8 page, u8 channel)
 	if (rc < 0)
 		return rc;
 
-	/* This sets the symbol_duration according frequency on the 212.
-	 * TODO move this handling while set channel and page in cfg802154.
-	 * We can do that, this timings are according 802.15.4 standard.
-	 * If we do that in cfg802154, this is a more generic calculation.
-	 *
-	 * This should also protected from ifs_timer. Means cancel timer and
-	 * init with a new value. For now, this is okay.
-	 */
-	if (channel == 0) {
-		if (page == 0) {
-			/* SUB:0 and BPSK:0 -> BPSK-20 */
-			lp->hw->phy->symbol_duration = 50 * NSEC_PER_USEC;
-		} else {
-			/* SUB:1 and BPSK:0 -> BPSK-40 */
-			lp->hw->phy->symbol_duration = 25 * NSEC_PER_USEC;
-		}
-	} else {
-		if (page == 0)
-			/* SUB:0 and BPSK:1 -> OQPSK-100/200/400 */
-			lp->hw->phy->symbol_duration = 40 * NSEC_PER_USEC;
-		else
-			/* SUB:1 and BPSK:1 -> OQPSK-250/500/1000 */
-			lp->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
-	}
-
-	lp->hw->phy->lifs_period =
-		(IEEE802154_LIFS_PERIOD * lp->hw->phy->symbol_duration) / 1000;
-	lp->hw->phy->sifs_period =
-		(IEEE802154_SIFS_PERIOD * lp->hw->phy->symbol_duration) / 1000;
-
 	return at86rf230_write_subreg(lp, SR_CHANNEL, channel);
 }
 
@@ -1563,7 +1533,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
 		lp->hw->phy->supported.page[0].chunk[0].protocol = IEEE802154_OQPSK_PHY;
 		lp->hw->phy->supported.page[0].chunk[0].band = IEEE802154_2400_MHZ_BAND;
 		lp->hw->phy->current_channel = 11;
-		lp->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
 		lp->hw->phy->supported.tx_powers = at86rf231_powers;
 		lp->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf231_powers);
 		lp->hw->phy->supported.cca_ed_levels = at86rf231_ed_levels;
@@ -1595,7 +1564,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
 		lp->hw->phy->supported.page[2].chunk[1].band = IEEE802154_915_MHZ_BAND;
 
 		lp->hw->phy->current_channel = 5;
-		lp->hw->phy->symbol_duration = 25 * NSEC_PER_USEC;
 		lp->hw->phy->supported.lbt = NL802154_SUPPORTED_BOOL_BOTH;
 		lp->hw->phy->supported.tx_powers = at86rf212_powers;
 		lp->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf212_powers);
@@ -1610,7 +1578,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
 		lp->hw->phy->supported.page[0].chunk[0].protocol = IEEE802154_OQPSK_PHY;
 		lp->hw->phy->supported.page[0].chunk[0].band = IEEE802154_2400_MHZ_BAND;
 		lp->hw->phy->current_channel = 13;
-		lp->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
 		lp->hw->phy->supported.tx_powers = at86rf233_powers;
 		lp->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf233_powers);
 		lp->hw->phy->supported.cca_ed_levels = at86rf233_ed_levels;
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 80382919520e..1a56073c1c52 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -667,36 +667,6 @@ static int hulusb_set_channel(struct ieee802154_hw *hw, u8 page, u8 channel)
 	if (rc < 0)
 		return rc;
 
-	/* This sets the symbol_duration according frequency on the 212.
-	 * TODO move this handling while set channel and page in cfg802154.
-	 * We can do that, this timings are according 802.15.4 standard.
-	 * If we do that in cfg802154, this is a more generic calculation.
-	 *
-	 * This should also protected from ifs_timer. Means cancel timer and
-	 * init with a new value. For now, this is okay.
-	 */
-	if (channel == 0) {
-		if (page == 0) {
-			/* SUB:0 and BPSK:0 -> BPSK-20 */
-			lp->hw->phy->symbol_duration = 50 * NSEC_PER_USEC;
-		} else {
-			/* SUB:1 and BPSK:0 -> BPSK-40 */
-			lp->hw->phy->symbol_duration = 25 * NSEC_PER_USEC;
-		}
-	} else {
-		if (page == 0)
-			/* SUB:0 and BPSK:1 -> OQPSK-100/200/400 */
-			lp->hw->phy->symbol_duration = 40 * NSEC_PER_USEC;
-		else
-			/* SUB:1 and BPSK:1 -> OQPSK-250/500/1000 */
-			lp->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
-	}
-
-	lp->hw->phy->lifs_period =
-		(IEEE802154_LIFS_PERIOD * lp->hw->phy->symbol_duration) / 1000;
-	lp->hw->phy->sifs_period =
-		(IEEE802154_SIFS_PERIOD * lp->hw->phy->symbol_duration) / 1000;
-
 	return atusb_write_subreg(lp, SR_CHANNEL, channel);
 }
 
@@ -919,7 +889,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
 		atusb->hw->phy->supported.page[0].chunk[0].protocol = IEEE802154_OQPSK_PHY;
 		atusb->hw->phy->supported.page[0].chunk[0].band = IEEE802154_2400_MHZ_BAND;
 		atusb->hw->phy->current_channel = 11;	/* reset default */
-		atusb->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
 		atusb->hw->phy->supported.tx_powers = atusb_powers;
 		atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
 		hw->phy->supported.cca_ed_levels = atusb_ed_levels;
@@ -932,7 +901,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
 		atusb->hw->phy->supported.page[0].chunk[0].protocol = IEEE802154_OQPSK_PHY;
 		atusb->hw->phy->supported.page[0].chunk[0].band = IEEE802154_2400_MHZ_BAND;
 		atusb->hw->phy->current_channel = 11;	/* reset default */
-		atusb->hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
 		atusb->hw->phy->supported.tx_powers = atusb_powers;
 		atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
 		hw->phy->supported.cca_ed_levels = atusb_ed_levels;
@@ -963,7 +931,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
 		atusb->hw->phy->supported.page[2].chunk[1].band = IEEE802154_915_MHZ_BAND;
 
 		atusb->hw->phy->current_channel = 5;
-		atusb->hw->phy->symbol_duration = 25 * NSEC_PER_USEC;
 		atusb->hw->phy->supported.lbt = NL802154_SUPPORTED_BOOL_BOTH;
 		atusb->hw->phy->supported.tx_powers = at86rf212_powers;
 		atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf212_powers);
diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c
index 6bd970d26220..d3a9e4fe05f4 100644
--- a/drivers/net/ieee802154/ca8210.c
+++ b/drivers/net/ieee802154/ca8210.c
@@ -2977,7 +2977,6 @@ static void ca8210_hw_setup(struct ieee802154_hw *ca8210_hw)
 	ca8210_hw->phy->cca.mode = NL802154_CCA_ENERGY_CARRIER;
 	ca8210_hw->phy->cca.opt = NL802154_CCA_OPT_ENERGY_CARRIER_AND;
 	ca8210_hw->phy->cca_ed_level = -9800;
-	ca8210_hw->phy->symbol_duration = 16 * NSEC_PER_USEC;
 	ca8210_hw->phy->lifs_period = 40;
 	ca8210_hw->phy->sifs_period = 12;
 	ca8210_hw->flags =
diff --git a/drivers/net/ieee802154/mcr20a.c b/drivers/net/ieee802154/mcr20a.c
index 34063b7e663e..8d12c2968302 100644
--- a/drivers/net/ieee802154/mcr20a.c
+++ b/drivers/net/ieee802154/mcr20a.c
@@ -975,10 +975,6 @@ static void mcr20a_hw_setup(struct mcr20a_local *lp)
 
 	dev_dbg(printdev(lp), "%s\n", __func__);
 
-	phy->symbol_duration = 16 * NSEC_PER_USEC;
-	phy->lifs_period = (40 * phy->symbol_duration) / NSEC_PER_USEC;
-	phy->sifs_period = (12 * phy->symbol_duration) / NSEC_PER_USEC;
-
 	hw->flags = IEEE802154_HW_TX_OMIT_CKSUM |
 			IEEE802154_HW_AFILT |
 			IEEE802154_HW_PROMISCUOUS;
@@ -1010,7 +1006,6 @@ static void mcr20a_hw_setup(struct mcr20a_local *lp)
 	phy->current_page = 0;
 	/* MCR20A default reset value */
 	phy->current_channel = 20;
-	phy->symbol_duration = 16 * NSEC_PER_USEC;
 	phy->supported.tx_powers = mcr20a_powers;
 	phy->supported.tx_powers_size = ARRAY_SIZE(mcr20a_powers);
 	phy->cca_ed_level = phy->supported.cca_ed_levels[75];
-- 
2.27.0


  parent reply	other threads:[~2022-01-17 11:55 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-17 11:53 [PATCH v3 00/41] IEEE 802.15.4 scan support Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 01/41] MAINTAINERS: Remove Harry Morris bouncing address Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 02/41] net: ieee802154: hwsim: Ensure proper channel selection at probe time Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 03/41] net: ieee802154: hwsim: Ensure frame checksum are valid Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 04/41] net: ieee802154: Use the IEEE802154_MAX_PAGE define when relevant Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 05/41] net: ieee802154: Improve the way supported channels are declared Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 06/41] net: ieee802154: Give more details to the core about the channel configurations Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 07/41] net: ieee802154: mcr20a: Fix lifs/sifs periods Miquel Raynal
2022-01-17 22:52   ` Alexander Aring
2022-01-18 18:20     ` Miquel Raynal
2022-01-18 22:53       ` Alexander Aring
2022-01-17 11:54 ` [PATCH v3 08/41] net: mac802154: Convert the symbol duration into nanoseconds Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 09/41] net: mac802154: Set the symbol duration automatically Miquel Raynal
2022-01-17 11:54 ` Miquel Raynal [this message]
2022-01-17 11:54 ` [PATCH v3 11/41] net: ieee802154: Move IEEE 802.15.4 Kconfig main entry Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 12/41] net: mac802154: Include the softMAC stack inside the IEEE 802.15.4 menu Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 13/41] net: ieee802154: Move the address structure earlier Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 14/41] net: ieee802154: Add a kernel doc header to the ieee802154_addr structure Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 15/41] net: ieee802154: Return meaningful error codes from the netlink helpers Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 16/41] net: mac802154: Explain the use of ieee802154_wake/stop_queue() Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 17/41] net: ieee802154: at86rf230: Call the complete helper when a transmission is over Miquel Raynal
2022-01-17 22:58   ` Alexander Aring
2022-01-18  0:34   ` Alexander Aring
2022-01-18  0:36     ` Alexander Aring
2022-01-18 18:22       ` Miquel Raynal
2022-01-19 22:45       ` Miquel Raynal
2022-01-19 22:56       ` Miquel Raynal
2022-01-19 23:34         ` Alexander Aring
2022-01-20  0:19           ` Alexander Aring
2022-01-17 11:54 ` [PATCH v3 18/41] net: ieee802154: atusb: " Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 19/41] net: ieee802154: ca8210: " Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 20/41] net: mac802154: Stop exporting ieee802154_wake/stop_queue() Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 21/41] net: mac802154: Rename the synchronous xmit worker Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 22/41] net: mac802154: Rename the main tx_work struct Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 23/41] net: mac802154: Follow the count of ongoing transmissions Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 24/41] net: mac802154: Hold the transmit queue when relevant Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 25/41] net: mac802154: Create a hot tx path Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 26/41] net: mac802154: Add a warning in the hot path Miquel Raynal
2022-01-17 23:14   ` Alexander Aring
2022-01-18 18:20     ` Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 27/41] net: mac802154: Introduce a tx queue flushing mechanism Miquel Raynal
2022-01-17 22:43   ` Alexander Aring
2022-01-18 18:14     ` Miquel Raynal
2022-01-18 23:16       ` Alexander Aring
2022-01-17 11:54 ` [PATCH v3 28/41] net: mac802154: Introduce a synchronous API for MLME commands Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 29/41] net: ieee802154: Add support for internal PAN management Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 30/41] net: ieee802154: Define a beacon frame header Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 31/41] net: ieee802154: Define frame types Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 32/41] net: ieee802154: Add support for scanning requests Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 33/41] net: mac802154: Handle scan requests Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 34/41] net: ieee802154: Full PAN management Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 35/41] net: ieee802154: Add beacons support Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 36/41] net: mac802154: Handle beacons requests Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 37/41] net: ieee802154: Trace the registration of new PANs Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 38/41] net: mac802154: Add support for active scans Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 39/41] net: mac802154: Add support for processing beacon requests Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 40/41] net: ieee802154: Handle limited devices with only datagram support Miquel Raynal
2022-01-17 11:54 ` [PATCH v3 41/41] net: ieee802154: ca8210: Flag the driver as being limited Miquel Raynal
2022-01-17 23:02 ` [PATCH v3 00/41] IEEE 802.15.4 scan support Alexander Aring
2022-01-18 10:40   ` Miquel Raynal
2022-01-18 23:12     ` Alexander Aring
2022-01-20  0:24       ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220117115440.60296-11-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=alan@signal11.us \
    --cc=alex.aring@gmail.com \
    --cc=david.girault@qorvo.com \
    --cc=frederic.blain@qorvo.com \
    --cc=kuba@kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linux-wpan@vger.kernel.org \
    --cc=liuxuenetmail@gmail.com \
    --cc=michael.hennerich@analog.com \
    --cc=netdev@vger.kernel.org \
    --cc=nico@ni.fr.eu.org \
    --cc=romuald.despres@qorvo.com \
    --cc=stefan@datenfreihafen.org \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=varkabhadram@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).