From: Kalle Valo <kvalo@codeaurora.org>
To: Jerome Pouiller <Jerome.Pouiller@silabs.com>
Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"David S . Miller" <davem@davemloft.net>,
devicetree@vger.kernel.org, "Rob Herring" <robh+dt@kernel.org>,
linux-mmc@vger.kernel.org, "Pali Rohár" <pali@kernel.org>,
"Ulf Hansson" <ulf.hansson@linaro.org>
Subject: Re: [PATCH v7 09/24] wfx: add hwio.c/hwio.h
Date: Fri, 01 Oct 2021 12:52:20 +0300 [thread overview]
Message-ID: <87k0ixkr6z.fsf@codeaurora.org> (raw)
In-Reply-To: <20210920161136.2398632-10-Jerome.Pouiller@silabs.com> (Jerome Pouiller's message of "Mon, 20 Sep 2021 18:11:21 +0200")
Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> From: Jérôme Pouiller <jerome.pouiller@silabs.com>
>
> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
> ---
> drivers/net/wireless/silabs/wfx/hwio.c | 340 +++++++++++++++++++++++++
> drivers/net/wireless/silabs/wfx/hwio.h | 79 ++++++
[...]
> +static int indirect_read(struct wfx_dev *wdev, int reg, u32 addr,
> + void *buf, size_t len)
> +{
> + int ret;
> + int i;
> + u32 cfg;
> + u32 prefetch;
> +
> + WARN_ON(len >= 0x2000);
A define for the magic value, please. I see this 0x2000 limit multiple
times.
> + WARN_ON(reg != WFX_REG_AHB_DPORT && reg != WFX_REG_SRAM_DPORT);
I see quite a lot of WARN() and WARN_ON() in the driver. Do note that
WARN() and WARN_ON() are a bit dangerous to use in the data path as an
attacker, or even just a bug, might easily spam the kernel log which
might result to host reboots due to watchdog triggering or other
resource starvation. I recommend using some ratelimited versions of
printk() macros, for example dev_*() if they have ratelimits. Not a
blocker, but wanted to point out anyway.
> +int wfx_data_read(struct wfx_dev *wdev, void *buf, size_t len)
> +{
> + int ret;
> +
> + WARN((long)buf & 3, "%s: unaligned buffer", __func__);
IS_ALIGNED()?
> + wdev->hwbus_ops->lock(wdev->hwbus_priv);
> + ret = wdev->hwbus_ops->copy_from_io(wdev->hwbus_priv,
> + WFX_REG_IN_OUT_QUEUE, buf, len);
> + _trace_io_read(WFX_REG_IN_OUT_QUEUE, buf, len);
> + wdev->hwbus_ops->unlock(wdev->hwbus_priv);
> + if (ret)
> + dev_err(wdev->dev, "%s: bus communication error: %d\n",
> + __func__, ret);
> + return ret;
> +}
> +
> +int wfx_data_write(struct wfx_dev *wdev, const void *buf, size_t len)
> +{
> + int ret;
> +
> + WARN((long)buf & 3, "%s: unaligned buffer", __func__);
IS_ALIGNED()?
> --- /dev/null
> +++ b/drivers/net/wireless/silabs/wfx/hwio.h
> @@ -0,0 +1,79 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Low-level I/O functions.
> + *
> + * Copyright (c) 2017-2020, Silicon Laboratories, Inc.
> + * Copyright (c) 2010, ST-Ericsson
> + */
> +#ifndef WFX_HWIO_H
> +#define WFX_HWIO_H
> +
> +#include <linux/types.h>
> +
> +struct wfx_dev;
> +
> +/* Caution: in the functions below, 'buf' will used with a DMA. So, it must be
> + * kmalloc'd (do not use stack allocated buffers). In doubt, enable
> + * CONFIG_DEBUG_SG to detect badly located buffer.
> + */
> +int wfx_data_read(struct wfx_dev *wdev, void *buf, size_t buf_len);
> +int wfx_data_write(struct wfx_dev *wdev, const void *buf, size_t buf_len);
> +
> +int sram_buf_read(struct wfx_dev *wdev, u32 addr, void *buf, size_t len);
> +int sram_buf_write(struct wfx_dev *wdev, u32 addr, const void *buf, size_t len);
> +
> +int ahb_buf_read(struct wfx_dev *wdev, u32 addr, void *buf, size_t len);
> +int ahb_buf_write(struct wfx_dev *wdev, u32 addr, const void *buf, size_t len);
> +
> +int sram_reg_read(struct wfx_dev *wdev, u32 addr, u32 *val);
> +int sram_reg_write(struct wfx_dev *wdev, u32 addr, u32 val);
> +
> +int ahb_reg_read(struct wfx_dev *wdev, u32 addr, u32 *val);
> +int ahb_reg_write(struct wfx_dev *wdev, u32 addr, u32 val);
"wfx_" prefix missing from these functions.
> +int config_reg_read(struct wfx_dev *wdev, u32 *val);
> +int config_reg_write(struct wfx_dev *wdev, u32 val);
> +int config_reg_write_bits(struct wfx_dev *wdev, u32 mask, u32 val);
> +
> +#define CTRL_NEXT_LEN_MASK 0x00000FFF
> +#define CTRL_WLAN_WAKEUP 0x00001000
> +#define CTRL_WLAN_READY 0x00002000
> +int control_reg_read(struct wfx_dev *wdev, u32 *val);
> +int control_reg_write(struct wfx_dev *wdev, u32 val);
> +int control_reg_write_bits(struct wfx_dev *wdev, u32 mask, u32 val);
> +
> +#define IGPR_RW 0x80000000
> +#define IGPR_INDEX 0x7F000000
> +#define IGPR_VALUE 0x00FFFFFF
> +int igpr_reg_read(struct wfx_dev *wdev, int index, u32 *val);
> +int igpr_reg_write(struct wfx_dev *wdev, int index, u32 val);
And these too.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply other threads:[~2021-10-01 9:52 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-20 16:11 [PATCH v7 00/24] wfx: get out from the staging area Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 01/24] mmc: sdio: add SDIO IDs for Silabs WF200 chip Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 02/24] dt-bindings: introduce silabs,wfx.yaml Jerome Pouiller
2021-09-23 17:09 ` Rob Herring
2021-09-20 16:11 ` [PATCH v7 03/24] wfx: add Makefile/Kconfig Jerome Pouiller
2021-10-01 9:04 ` Kalle Valo
2021-10-01 9:06 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 04/24] wfx: add wfx.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 05/24] wfx: add main.c/main.h Jerome Pouiller
2021-10-01 9:22 ` Kalle Valo
2021-10-01 9:44 ` Jérôme Pouiller
2021-10-01 12:18 ` Kalle Valo
2021-10-06 7:32 ` Jérôme Pouiller
2021-10-07 8:35 ` Kalle Valo
2021-10-07 10:00 ` Jérôme Pouiller
2021-10-07 10:41 ` Kalle Valo
2021-10-07 10:49 ` Kalle Valo
2021-10-07 11:22 ` Jérôme Pouiller
2021-11-10 9:58 ` Kalle Valo
2021-11-10 11:10 ` Jérôme Pouiller
2021-10-01 15:29 ` Jérôme Pouiller
2021-10-05 5:56 ` Kalle Valo
2021-10-05 8:12 ` Jérôme Pouiller
2021-09-20 16:11 ` [PATCH v7 06/24] wfx: add bus.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 07/24] wfx: add bus_spi.c Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 08/24] wfx: add bus_sdio.c Jerome Pouiller
2021-09-30 10:07 ` Ulf Hansson
2021-09-30 16:51 ` Jérôme Pouiller
2021-09-30 17:06 ` Pali Rohár
2021-10-01 15:23 ` Ulf Hansson
2021-10-05 8:14 ` Jérôme Pouiller
2021-10-06 15:02 ` Ulf Hansson
2021-10-06 15:42 ` Jérôme Pouiller
2021-10-07 8:26 ` Kalle Valo
2021-10-07 10:24 ` Pali Rohár
2021-10-01 15:37 ` Ulf Hansson
2021-10-05 5:59 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 09/24] wfx: add hwio.c/hwio.h Jerome Pouiller
2021-10-01 9:52 ` Kalle Valo [this message]
2021-10-01 12:39 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 10/24] wfx: add fwio.c/fwio.h Jerome Pouiller
2021-10-01 11:58 ` Kalle Valo
2021-10-01 15:09 ` Jérôme Pouiller
2021-10-01 16:08 ` Pali Rohár
2021-10-01 16:46 ` Jérôme Pouiller
2021-10-07 8:19 ` Kalle Valo
2021-10-07 10:10 ` Pali Rohár
2021-10-07 8:16 ` Kalle Valo
2021-10-07 10:13 ` Pali Rohár
2021-10-07 8:08 ` Kalle Valo
2021-10-07 9:35 ` Jérôme Pouiller
2021-09-20 16:11 ` [PATCH v7 11/24] wfx: add bh.c/bh.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 12/24] wfx: add hif_api_*.h Jerome Pouiller
2021-10-01 11:41 ` Kalle Valo
2021-10-01 11:52 ` Jérôme Pouiller
2021-10-01 12:45 ` Kalle Valo
2021-10-01 11:45 ` Kalle Valo
2021-10-01 11:48 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 13/24] wfx: add hif_tx*.c/hif_tx*.h Jerome Pouiller
2021-10-01 9:55 ` Kalle Valo
2021-10-01 15:17 ` Jérôme Pouiller
2021-10-01 16:13 ` Pali Rohár
2021-10-05 6:12 ` Kalle Valo
2021-10-05 6:44 ` Greg Kroah-Hartman
2021-10-05 8:17 ` Jérôme Pouiller
2021-10-05 8:21 ` Greg Kroah-Hartman
2021-10-05 9:18 ` Jérôme Pouiller
2021-10-05 14:02 ` Jakub Kicinski
2021-09-20 16:11 ` [PATCH v7 14/24] wfx: add key.c/key.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 15/24] wfx: add hif_rx.c/hif_rx.h Jerome Pouiller
2021-10-01 10:09 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 16/24] wfx: add data_rx.c/data_rx.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 17/24] wfx: add queue.c/queue.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 18/24] wfx: add data_tx.c/data_tx.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 19/24] wfx: add sta.c/sta.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 20/24] wfx: add scan.c/scan.h Jerome Pouiller
2021-10-01 9:35 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 21/24] wfx: add debug.c/debug.h Jerome Pouiller
2021-10-01 12:01 ` Kalle Valo
2021-09-20 16:11 ` [PATCH v7 22/24] wfx: add traces.h Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 23/24] wfx: remove from the staging area Jerome Pouiller
2021-09-20 16:11 ` [PATCH v7 24/24] wfx: get out " Jerome Pouiller
2021-10-01 12:42 ` [PATCH v7 00/24] " Kalle Valo
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=87k0ixkr6z.fsf@codeaurora.org \
--to=kvalo@codeaurora.org \
--cc=Jerome.Pouiller@silabs.com \
--cc=davem@davemloft.net \
--cc=devel@driverdev.osuosl.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pali@kernel.org \
--cc=robh+dt@kernel.org \
--cc=ulf.hansson@linaro.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.