From: Kalle Valo <kvalo@kernel.org>
To: Harshitha Prem <quic_hprem@quicinc.com>
Cc: ath12k@lists.infradead.org, linux-wireless@vger.kernel.org,
Karthikeyan Periyasamy <quic_periyasa@quicinc.com>,
Jeff Johnson <quic_jjohnson@quicinc.com>
Subject: Re: [PATCH v8 6/8] wifi: ath12k: Introduce device group abstraction
Date: Thu, 06 Jun 2024 16:20:37 +0300 [thread overview]
Message-ID: <87le3iqkbe.fsf@kernel.org> (raw)
In-Reply-To: <20240531180411.1149605-7-quic_hprem@quicinc.com> (Harshitha Prem's message of "Fri, 31 May 2024 23:34:09 +0530")
Harshitha Prem <quic_hprem@quicinc.com> writes:
> From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
>
> Currently, single device is probed and once firmware is ready, the device
> is registered to mac80211. For multi-link operation, different bands of
> different devices or same device would be part of a single wiphy and for
> this, hardware device group abstraction would be helpful.
>
> Hardware device group abstraction - when there are multiple devices (with
> single radio or dual radio) that are connected by any means of interface
> for communicating between them, then these devices can be combined
> together as a single group using a group id to form a group abstraction
> and register to mac80211.
>
> The grouping information of multiple devices would be based on device tree
> during device probe. If no such information is available then a single
> device will be part of group abstraction and registered to mac80211 else
> multiple devices advertised in device tree are combined and then registered
> to mac80211.
>
> For device group abstraction, a base structure named ath12k_hw_group (ag)
> and the following helpers are introduced:
> ath12k_core_hw_group_alloc() : allocate ath12k_hw_group (ag)
> based on group id and number
> of devices that are going to
> be part of this group.
> ath12k_core_hw_group_free() : free ag during deinit.
> ath12k_core_assign_hw_group() : assign/map the details of group
> to ath12k_base (ab).
> ath12k_core_unassign_hw_group() : unassign/unmap the details of ag
> in ath12k_base (ab).
> ath12k_core_hw_group_create() : create the devices which are part
> of group (ag).
> ath12k_core_hw_group_destroy() : cleanup the devices in ag
>
> These helpers are used during device probe and mapping the group to the
> devices involved.
>
> Please find the illustration of how multiple devices might be combined
> together in future based on group id.
>
> Grouping of multiple devices (in future)
>
> +------------------------------------------------------------------------+
> | +-------------------------------------+ +-------------------+ |
> | | +-----------+ | | +-----------+ | | +-----------+ | |
> | | | ar (2GHz) | | | | ar (5GHz) | | | | ar (6GHz) | | |
> | | +-----------+ | | +-----------+ | | +-----------+ | |
> | | ath12k_base (ab) | | ath12k_base (ab) | |
> | | (Dual band device) | | | |
> | +-------------------------------------+ +-------------------+ |
> | ath12k_hw_group (ag) based on group id |
> +------------------------------------------------------------------------+
This is a good diagram, thanks for that. But how does struct ath12k_hw
fit into the diagram?
> In the above representation, two devices are combined into single group
> based on group id.
>
> Add base code changes where single device would be part of a group with an
> invalid group id forming an group abstraction. Multi device grouping will
> be introduced in future.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI
> WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
>
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
> Co-developed-by: Harshitha Prem <quic_hprem@quicinc.com>
> Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Like I have said before, for adding any new locks there needs to be a
proper analysis for the locking and good justifications why new locks
are needed. I don't see any of that above.
BTW I will from now on require proper analysis also for additions to
enum ath12k_dev_flags.
> --- a/drivers/net/wireless/ath/ath12k/core.c
> +++ b/drivers/net/wireless/ath/ath12k/core.c
> @@ -21,6 +21,9 @@ unsigned int ath12k_debug_mask;
> module_param_named(debug_mask, ath12k_debug_mask, uint, 0644);
> MODULE_PARM_DESC(debug_mask, "Debugging mask");
>
> +static DEFINE_MUTEX(ath12k_hw_lock);
> +static struct list_head ath12k_hw_groups = LIST_HEAD_INIT(ath12k_hw_groups);
I can somehow understand/guess why this mutex is needed (even though
there's no documentation) but the naming is not really clear as we
already have struct ath12k_hw::hw_mutex.
> +/* Holds info on the group of devices that are registered as a single wiphy */
> +struct ath12k_hw_group {
> + struct list_head list;
> + u8 id;
> + u8 num_devices;
> + u8 num_probed;
> + struct ath12k_base *ab[ATH12K_MAX_SOCS];
> + /* To synchronize group create, assign, start, stop */
> + struct mutex mutex_lock;
> +};
But why we really need this mutex? And does it really justify the extra
complexity it creates?
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply other threads:[~2024-06-06 13:20 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-31 18:04 [PATCH v8 0/8] wifi: ath12k: Introduce device group abstraction Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 1/8] wifi: ath12k: Refactor core start api Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 2/8] wifi: ath12k: Add helpers to get or set ath12k_hw Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 3/8] wifi: ath12k: Add ath12k_get_num_hw api Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 4/8] wifi: ath12k: Introduce QMI firmware ready flag Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 5/8] wifi: ath12k: move ATH12K_FLAG_REGISTERED flag set to mac_register api Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 6/8] wifi: ath12k: Introduce device group abstraction Harshitha Prem
2024-06-06 13:20 ` Kalle Valo [this message]
2024-06-07 13:29 ` Harshitha Prem
2024-07-03 16:35 ` Kalle Valo
2024-06-06 15:58 ` Kalle Valo
2024-05-31 18:04 ` [PATCH v8 7/8] wifi: ath12k: refactor core start based on hardware group Harshitha Prem
2024-06-06 13:04 ` Kalle Valo
2024-06-07 13:49 ` Harshitha Prem
2024-07-03 16:28 ` Kalle Valo
2024-07-09 10:14 ` Harshitha Prem
2024-08-06 6:03 ` Kalle Valo
2024-08-06 11:43 ` Harshitha Prem
2024-05-31 18:04 ` [PATCH v8 8/8] wifi: ath12k: move ath12k_hw from per device to group Harshitha Prem
2024-06-03 16:11 ` [PATCH v8 0/8] wifi: ath12k: Introduce device group abstraction Jeff Johnson
2024-06-07 13:50 ` Harshitha Prem
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=87le3iqkbe.fsf@kernel.org \
--to=kvalo@kernel.org \
--cc=ath12k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_hprem@quicinc.com \
--cc=quic_jjohnson@quicinc.com \
--cc=quic_periyasa@quicinc.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 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.