devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Nemanov, Michael" <michael.nemanov@ti.com>
To: Johannes Berg <johannes@sipsolutions.net>,
	Kalle Valo <kvalo@kernel.org>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	<linux-wireless@vger.kernel.org>, <netdev@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Cc: Sabeeh Khan <sabeeh-khan@ti.com>
Subject: Re: [PATCH v5 09/17] wifi: cc33xx: Add main.c
Date: Sun, 1 Dec 2024 19:09:38 +0200	[thread overview]
Message-ID: <39af5076-7e96-4968-943d-bb33359f0573@ti.com> (raw)
In-Reply-To: <685d782d68bfc664c4fcc594dff96546ffc30e5f.camel@sipsolutions.net>

On 11/8/2024 1:42 PM, Johannes Berg wrote:
>> +static void cc33xx_rc_update_work(struct work_struct *work)
>> +{
>> +	struct cc33xx_vif *wlvif = container_of(work, struct cc33xx_vif,
>> +						rc_update_work);
>> +	struct cc33xx *cc = wlvif->cc;
>> +	struct ieee80211_vif *vif = cc33xx_wlvif_to_vif(wlvif);
>> +
>> +	mutex_lock(&cc->mutex);
> 
> Given the way the wiphy mutex now works, I'd strongly recommend not
> having your own mutex any more - it's a huge simplification in a lot of
> places, and there's very little downside since everything coming from
> higher layers holds the wiphy mutex already (and almost certainly needs
> to acquire your own mutex.)

Yeah I see how it simplifies things. I'll get rid of cc->mutex and use 
wiphy_lock() for whatever code that is not called exclusively from 
ieee80211_ops.

>> +static void cc33xx_recovery_work(struct work_struct *work)
>> +{
>> +	struct cc33xx *cc = container_of(work, struct cc33xx, recovery_work);
>> +	struct cc33xx_vif *wlvif;
>> +	struct ieee80211_vif *vif;
>> +
>> +	cc33xx_notice("CC33xx driver attempting recovery");
>> +
>> +	if (cc->conf.core.no_recovery) {
>> +		cc33xx_info("Recovery disabled by configuration, driver will not restart.");
>> +		return;
>> +	}
>> +
>> +	if (test_bit(CC33XX_FLAG_DRIVER_REMOVED, &cc->flags)) {
>> +		cc33xx_info("Driver being removed, recovery disabled");
>> +		return;
>> +	}
>> +
>> +	cc->state = CC33XX_STATE_RESTARTING;
>> +	set_bit(CC33XX_FLAG_RECOVERY_IN_PROGRESS, &cc->flags);
>> +
>> +	mutex_lock(&cc->mutex);
>> +	while (!list_empty(&cc->wlvif_list)) {
>> +		wlvif = list_first_entry(&cc->wlvif_list,
>> +					 struct cc33xx_vif, list);
>> +		vif = cc33xx_wlvif_to_vif(wlvif);
>> +
>> +		if (test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
>> +			ieee80211_connection_loss(vif);
>> +
>> +		__cc33xx_op_remove_interface(cc, vif, false);
>> +	}
>> +	mutex_unlock(&cc->mutex);
>> +
>> +	cc33xx_turn_off(cc);
>> +	msleep(500);
>> +
>> +	mutex_lock(&cc->mutex);
>> +	cc33xx_init_fw(cc);
>> +	mutex_unlock(&cc->mutex);
>> +
>> +	ieee80211_restart_hw(cc->hw);
>> +
>> +	mutex_lock(&cc->mutex);
>> +	clear_bit(CC33XX_FLAG_RECOVERY_IN_PROGRESS, &cc->flags);
>> +	mutex_unlock(&cc->mutex);
> 
> even more so with the awful locking/unlocking/... here (also no need to
> unlock to call restart_hw, I think?)
> 
> and using both a mutex and atomic ops seems ... odd?

cc33xx_turn_off() is called in the driver remove path so it expects the 
mutex to be unlocked while cc33xx_init_fw() touches many driver members 
and requires the lock.
OK if i keep it?

Mutex protection for the flags is indeed redundant and will be removed.

>> +unlock:
>> +	mutex_unlock(&cc->mutex);
>> +
>> +	cancel_work_sync(&wlvif->rc_update_work);
>> +	cancel_delayed_work_sync(&wlvif->connection_loss_work);
>> +	cancel_delayed_work_sync(&wlvif->channel_switch_work);
>> +	cancel_delayed_work_sync(&wlvif->pending_auth_complete_work);
>> +	cancel_delayed_work_sync(&wlvif->roc_timeout_work);
>> +
>> +	mutex_lock(&cc->mutex);
> 
> also this kind of thing ... just use wiphy mutex/work
>
Yeah all this work use cc->mutex so it seems safe, will do.

Thanks and regards,
Michael.

  parent reply	other threads:[~2024-12-01 17:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-07 12:51 [PATCH v5 00/17] wifi: cc33xx: Add driver for new TI CC33xx wireless device family Michael Nemanov
2024-11-07 12:51 ` [PATCH v5 01/17] dt-bindings: net: wireless: cc33xx: Add ti,cc33xx.yaml Michael Nemanov
2024-11-08 12:02   ` Krzysztof Kozlowski
2024-11-12  6:45     ` Nemanov, Michael
2024-11-19  9:15       ` Krzysztof Kozlowski
2024-11-19 12:10         ` Nemanov, Michael
2024-11-08 12:07   ` Krzysztof Kozlowski
2024-11-07 12:51 ` [PATCH v5 02/17] wifi: cc33xx: Add cc33xx.h, cc33xx_i.h Michael Nemanov
2024-11-07 12:51 ` [PATCH v5 03/17] wifi: cc33xx: Add debug.h Michael Nemanov
2024-11-07 12:51 ` [PATCH v5 04/17] wifi: cc33xx: Add sdio.c, io.c, io.h Michael Nemanov
2024-11-07 12:51 ` [PATCH v5 05/17] wifi: cc33xx: Add cmd.c, cmd.h Michael Nemanov
2024-11-08 16:25   ` Markus Elfring
2024-11-07 12:51 ` [PATCH v5 06/17] wifi: cc33xx: Add acx.c, acx.h Michael Nemanov
2024-11-07 12:51 ` [PATCH v5 07/17] wifi: cc33xx: Add event.c, event.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 08/17] wifi: cc33xx: Add boot.c, boot.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 09/17] wifi: cc33xx: Add main.c Michael Nemanov
2024-11-08 11:42   ` Johannes Berg
2024-11-11 11:38     ` Kalle Valo
2024-11-12 15:34     ` Nemanov, Michael
2024-11-12 15:39       ` Johannes Berg
2024-11-14 17:44     ` Nemanov, Michael
2024-12-01  9:47     ` Nemanov, Michael
2024-12-01 17:09     ` Nemanov, Michael [this message]
2024-11-07 12:52 ` [PATCH v5 10/17] wifi: cc33xx: Add rx.c, rx.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 11/17] wifi: cc33xx: Add tx.c, tx.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 12/17] wifi: cc33xx: Add init.c, init.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 13/17] wifi: cc33xx: Add scan.c, scan.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 14/17] wifi: cc33xx: Add conf.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 15/17] wifi: cc33xx: Add ps.c, ps.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 16/17] wifi: cc33xx: Add testmode.c, testmode.h Michael Nemanov
2024-11-07 12:52 ` [PATCH v5 17/17] wifi: cc33xx: Add Kconfig, Makefile Michael Nemanov
2025-04-29 16:38 ` [PATCH v5 00/17] wifi: cc33xx: Add driver for new TI CC33xx wireless device family Ezra Buehler

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=39af5076-7e96-4968-943d-bb33359f0573@ti.com \
    --to=michael.nemanov@ti.com \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=johannes@sipsolutions.net \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=robh@kernel.org \
    --cc=sabeeh-khan@ti.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;
as well as URLs for NNTP newsgroup(s).