[PATCH v6 1/3] wifi: ath12k: prepare vif data structure for MLO handling

Rameshkumar Sundaram quic_ramess at quicinc.com
Thu Aug 8 09:42:26 PDT 2024



On 8/8/2024 4:27 PM, Kalle Valo wrote:
> Kalle Valo <kvalo at kernel.org> writes:
> 
>> Rameshkumar Sundaram <quic_ramess at quicinc.com> writes:
>>
>>> Locking:
>>>   Currently modifications to members of arvif and arsta are protected by ar->conf_mutex
>>>   and it stays as such.
>>>   Now with these hw level structure (ahvif) being introduced, any modifications
>>>   to its members and link objects (i.e., arvifs[] which are dynamically allocated)
>>>   needs to be protected for writing and ah->conf_mutex is used for the same.
>>>   Also, atomic contexts(say WMI events and certain mac_ops) that we currently have in driver
>>>   will not(shouldn't be allowed) do any modifications but can read them and
>>>   rcu_read_lock() is used for the same.
>>
>> Please elaborate more about your locking design. Because of past bad
>> contributions from Qualcomm the bar is really high for adding any new
>> locks. I'm doing the locking analysis right now but it would help a lot
>> if you could provide your own analysis.
>>
The new ah->conf_mutex is particularly introduced to protect the members 
and dynamically allocated link objects of ahvif and ahsta 
(ahvif/sta->links[]) in process context (i.e. between call backs from 
mac80211 and ath12k's workers)
The same is protected by rcu in case of atomic contexts(tasklets of WMI 
and in datapath)

The usage ar->conf_mutex remains as such, and replacing ar->conf_mutex 
with ah->conf_mutex was not considered, as few of the workers(e.g, 
ath12k_sta_rc_update_wk) rely only on ar lock and wouldn't really need 
to wait for other ar's to complete the same task.

>> My first impressions:
>>
>> It's really confusing to have two locks with the same name (conf_mutex
>> in struct ath12k_hw and struct ath12k).
>>
Makes sense we could rename the new lock to distinguish.
>> struct ath12k_hw already has hw_mutex so I'm even more suspicious about
>> this locking design. That's not explained at all in commit messages.
> 
Ah yes, by the time i wrote initial version of the patch hw_mutex wasn't 
there so missed it, Seems we can use the same lock for this too, will 
check the feasibility further and update/send v7.

> I didn't get any replies, and my own analysis is still ongoing,
Sorry, was off for last couple of days and didn't get a chance to check 
this out.
  but the
> more I look at this, the more I feel using two overlapping mutexes is
> overkill. I'm starting to wonder if we would convert to using
> wiphy_lock()? That might simplify things significantly. I should have an
> old patchset doing that stored somewhere.
> 
Hmm, i remember usage of wiphy lock globally had lockup situations in 
ath12k last time around, if we could think of a solution for that i 
guess we could try to replace ah->conf_mutex with combination for 
wiphy_lock and rcu.



More information about the ath12k mailing list