net: ieee802154: Drop duration settings when the core does it already
authorMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 1 Feb 2022 18:06:29 +0000 (19:06 +0100)
committerStefan Schmidt <stefan@datenfreihafen.org>
Thu, 10 Feb 2022 14:41:58 +0000 (15:41 +0100)
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>
Acked-by: Alexander Aring <aahringo@redhat.com>
Link: https://lore.kernel.org/r/20220201180629.93410-5-miquel.raynal@bootlin.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
drivers/net/ieee802154/at86rf230.c
drivers/net/ieee802154/atusb.c
drivers/net/ieee802154/ca8210.c
drivers/net/ieee802154/mcr20a.c

index 0264e43a1080b0d0b9c49c4fa567f1762b1a34e3..563031ce76f0b14d072800974cb037fbab78bc7b 100644 (file)
@@ -1064,36 +1064,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);
 }
 
@@ -1569,7 +1539,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
                lp->data = &at86rf231_data;
                lp->hw->phy->supported.channels[0] = 0x7FFF800;
                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;
@@ -1582,7 +1551,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
                lp->hw->phy->supported.channels[0] = 0x00007FF;
                lp->hw->phy->supported.channels[2] = 0x00007FF;
                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);
@@ -1594,7 +1562,6 @@ at86rf230_detect_device(struct at86rf230_local *lp)
                lp->data = &at86rf233_data;
                lp->hw->phy->supported.channels[0] = 0x7FFF800;
                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;
index abe27d1c51ca404999a238f838d029e37fb0e0ea..9b41c7654f6b03da7e3145e8a8e0771f603ac475 100644 (file)
@@ -614,36 +614,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);
 }
 
@@ -869,7 +839,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
                chip = "AT86RF230";
                atusb->hw->phy->supported.channels[0] = 0x7FFF800;
                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;
@@ -879,7 +848,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
                chip = "AT86RF231";
                atusb->hw->phy->supported.channels[0] = 0x7FFF800;
                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;
@@ -891,7 +859,6 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
                atusb->hw->phy->supported.channels[0] = 0x00007FF;
                atusb->hw->phy->supported.channels[2] = 0x00007FF;
                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);
index e88cdbf6673b00111ab18f6a7e30b46091b2cbfd..fc74fa0f1ddd74497e20a166a116692c3e5aaeda 100644 (file)
@@ -2974,9 +2974,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->symbol_duration;
-       ca8210_hw->phy->sifs_period = 12 * ca8210_hw->phy->symbol_duration;
        ca8210_hw->flags =
                IEEE802154_HW_AFILT |
                IEEE802154_HW_OMIT_CKSUM |
index c925e629ddf33365c0ea2d9ac071fad38153cc70..2b4ba3f9ecd79a222eaabb3e5965ba31449d47c6 100644 (file)
@@ -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;
@@ -1006,7 +1002,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];