Karthikeyan Periyasamy <quic_periyasa@xxxxxxxxxxx> writes: > Currently, in multi wiphy models, radio/link level synchronization is > sufficient for MAC hardware (ieee80211_hw) reconfigure/recovery procedures > since each radio/link is exposed as a MAC hardware (ieee80211_hw). However, > in single wiphy models, multiple radio/links is exposed as a MAC hardware > (ieee80211_hw) through the driver hardware abstraction (ath12k_hw) layer. > In such scenario, we need synchronization between the reconfigure/recovery > callback operations (i.e., ath12k_core_post_reconfigure_recovery(), > ieee80211_ops->start(), ieee80211_ops->reconfig_complete(), > ieee80211_ops->stop()) at the driver hardware abstraction (ath12k_hw) layer > instead of radio/link (ath12k) layer. Therefore, introduce a new mutex in > the ath12k_hw layer. This approach ensures compatibility of the hardware > recovery procedure with both multi wiphy models and future single wiphy > models. > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@xxxxxxxxxxx> [...] > --- a/drivers/net/wireless/ath/ath12k/core.h > +++ b/drivers/net/wireless/ath/ath12k/core.h > @@ -600,7 +600,12 @@ struct ath12k { > struct ath12k_hw { > struct ieee80211_hw *hw; > > + /* To synchronize hardware restart operation */ > + struct mutex conf_mutex; As we discussed already offline, there's a high bar for adding new mutexes. I would rather remove the existing conf_mutex than add a new one. Also having two mutexes named 'conf_mutex' in the same driver is risky, it would be very easy to confuse the two. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches