From: Lukasz Stelmach <l.stelmach@samsung.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>,
"Andrew Lunn" <andrew@lunn.ch>,
jim.cromie@gmail.com, "Heiner Kallweit" <hkallweit1@gmail.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Kukjin Kim" <kgene@kernel.org>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Russell King" <linux@armlinux.org.uk>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
"Bartłomiej Żolnierkiewicz" <b.zolnierkie@samsung.com>,
"Marek Szyprowski" <m.szyprowski@samsung.com>
Subject: Re: [PATCH net-next v16 3/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver
Date: Wed, 13 Oct 2021 23:14:20 +0200 [thread overview]
Message-ID: <dleftj1r4osk43.fsf%l.stelmach@samsung.com> (raw)
In-Reply-To: <20211001153940.28c5d60d@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> (Jakub Kicinski's message of "Fri, 1 Oct 2021 15:39:40 -0700")
[-- Attachment #1: Type: text/plain, Size: 2482 bytes --]
It was <2021-10-01 pią 15:39>, when Jakub Kicinski wrote:
> On Wed, 29 Sep 2021 16:08:54 +0200 Łukasz Stelmach wrote:
>> +static char *no_regs_list = "80018001,e1918001,8001a001,fc0d0000";
>
> static const char ...
>
>> +static int
>> +ax88796c_close(struct net_device *ndev)
>> +{
>> + struct ax88796c_device *ax_local = to_ax88796c_device(ndev);
>> +
>> + netif_stop_queue(ndev);
>
> This can run concurrently with the work which restarts the queue.
> You should take the mutex and purge the queue here, so that there
> is no chance queue will get restarted by the work right after.
>> + phy_stop(ndev->phydev);
>> +
>> + mutex_lock(&ax_local->spi_lock);
This was a bit tricky. The function now looks like this (details in the
comments). In theory there is a chance of dropping a packet if the
ax88796c_work() runs between phy_stop() and mutex_lock(), but I'd say
the overall risk is negligible.
--8<---------------cut here---------------start------------->8---
static int
ax88796c_close(struct net_device *ndev)
{
struct ax88796c_device *ax_local = to_ax88796c_device(ndev);
phy_stop(ndev->phydev);
/* We lock the mutex early not only to protect the device
* against concurrent access, but also avoid waking up the
* queue in ax88796c_work(). phy_stop() needs to be called
* before because it locks the mutex to access SPI.
*/
mutex_lock(&ax_local->spi_lock);
netif_stop_queue(ndev);
/* No more work can be scheduled now. Make any pending work,
* including one already waiting for the mutex to be unlocked,
* NOP.
*/
clear_bit(EVENT_SET_MULTI, &ax_local->flags);
clear_bit(EVENT_INTR, &ax_local->flags);
clear_bit(EVENT_TX, &ax_local->flags);
/* Disable MAC interrupts */
AX_WRITE(&ax_local->ax_spi, IMR_MASKALL, P0_IMR);
__skb_queue_purge(&ax_local->tx_wait_q);
ax88796c_soft_reset(ax_local);
mutex_unlock(&ax_local->spi_lock);
cancel_work_sync(&ax_local->ax_work);
free_irq(ndev->irq, ndev);
return 0;
}
--8<---------------cut here---------------end--------------->8---
>> +MODULE_AUTHOR("ASIX");
>
> You can drop this, author should be human.
I looked at diff --stat and decided it is OK to put my name there (-;
--
Łukasz Stelmach
Samsung R&D Institute Poland
Samsung Electronics
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
prev parent reply other threads:[~2021-10-13 21:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20210929140912eucas1p2c3a4eac8b6fadd635aec3bbb44e8882e@eucas1p2.samsung.com>
2021-09-29 14:08 ` [PATCH net-next v16 0/3] AX88796C SPI Ethernet Adapter Łukasz Stelmach
[not found] ` <CGME20210929140912eucas1p2a4a14d3f865dcfad98a21235fbc500bc@eucas1p2.samsung.com>
2021-09-29 14:08 ` [PATCH net-next v16 1/3] dt-bindings: vendor-prefixes: Add asix prefix Łukasz Stelmach
[not found] ` <CGME20210929140913eucas1p19ae6de17520916149879be71a33291c7@eucas1p1.samsung.com>
2021-09-29 14:08 ` [PATCH net-next v16 2/3] dt-bindings: net: Add bindings for AX88796C SPI Ethernet Adapter Łukasz Stelmach
[not found] ` <CGME20210929140913eucas1p2e76ab9b78b12d456dc74ab7d54ea81ac@eucas1p2.samsung.com>
2021-09-29 14:08 ` [PATCH net-next v16 3/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Łukasz Stelmach
2021-10-01 22:39 ` Jakub Kicinski
[not found] ` <CGME20211013211432eucas1p2cb6a119feec2c1a2c067d2753d69509d@eucas1p2.samsung.com>
2021-10-13 21:14 ` Lukasz Stelmach [this message]
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=dleftj1r4osk43.fsf%l.stelmach@samsung.com \
--to=l.stelmach@samsung.com \
--cc=andrew@lunn.ch \
--cc=b.zolnierkie@samsung.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=hkallweit1@gmail.com \
--cc=jim.cromie@gmail.com \
--cc=kgene@kernel.org \
--cc=krzk@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=m.szyprowski@samsung.com \
--cc=netdev@vger.kernel.org \
--cc=robh+dt@kernel.org \
/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).