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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox