Subject: Re: [PATCH v4 09/17] wifi: cc33xx: Add main.c

From: Simon Horman <[email-masked]>
Date: Sat, 2 Nov 2024 13:25:32 +0000

On Tue, Oct 29, 2024 at 07:23:46PM +0200, Michael Nemanov wrote:
> General code and structures.
> Notably:
> 
> cc33xx_irq - Handles IRQs received from the device.
> 
> process_core_status - Core status is a new concept in CC33xx.
> it's a structure that is appended to each transfer from the device and
> contains its most up-to-date status report (IRQs, buffers, etc.).
> See struct core_status for details.
> 
> process_event_and_cmd_result - Responses to driver commands and
> FW events both arrive asynchronously. Therefore, driver cannot know what
> he read from HW until inspecting the payload. This code reads and
> dispatches the data accordingly.
> 
> cc33xx_recovery_work - Driver supports basic recovery on FW crash and
> other illegal conditions. This implements the recovery flow
> (Remove all vifs, turn device off and on, download FW,
> let ieee80211_restart_hw do the rest).
> 
> irq_deferred_work - Does irq-related work that requires holding the
> cc->mutex. Thisd is mostly in response to HW's Tx/Rx IRQs.
> 
> cc33xx_nvs_cb - Callback for the NVS FW request API. Similar to wlcore,
> this is where the init of the HW is performed.
> 
> cc33xx_load_ini_bin_file - Loads a configuration file from user-space
> via the request FW API. The structure is described in a separate patch.
> 
> cc33xx_op_X - MAC80211 operation handlers.
> 
> Signed-off-by: Michael Nemanov <[email-masked]>
> ---
>  drivers/net/wireless/ti/cc33xx/main.c | 5689 +++++++++++++++++++++++++
>  1 file changed, 5689 insertions(+)
>  create mode 100644 drivers/net/wireless/ti/cc33xx/main.c
> 
> diff --git a/drivers/net/wireless/ti/cc33xx/main.c b/drivers/net/wireless/ti/cc33xx/main.c

...

> +static struct ieee80211_sband_iftype_data iftype_data_2ghz[] = {{

Hi Michael,

Sparse seems a bit unhappy about this:

.../main.c:332:24: warning: incorrect type in initializer (different address spaces)
.../main.c:332:24:    expected struct ieee80211_sband_iftype_data const [noderef] __iftype_data *iftype_data
.../main.c:332:24:    got struct ieee80211_sband_iftype_data *

So perhaps it should be:

static const struct ieee80211_sband_iftype_data __iftd iftype_data_2ghz[] = {{

Likewise for iftype_data_5ghz.

...