[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20200223.205415.225744319800955337.davem@davemloft.net>
Date: Sun, 23 Feb 2020 20:54:15 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: marex@...x.de
Cc: netdev@...r.kernel.org, lukas@...ner.de, ynezz@...e.cz,
yuehaibing@...wei.com
Subject: Re: [PATCH] net: ks8851-ml: Fix IRQ handling and locking
From: Marek Vasut <marex@...x.de>
Date: Sun, 23 Feb 2020 14:38:40 +0100
> The KS8851 requires that packet RX and TX are mutually exclusive.
> Currently, the driver hopes to achieve this by disabling interrupt
> from the card by writing the card registers and by disabling the
> interrupt on the interrupt controller. This however is racy on SMP.
>
> Replace this approach by expanding the spinlock used around the
> ks_start_xmit() TX path to ks_irq() RX path to assure true mutual
> exclusion and remove the interrupt enabling/disabling, which is
> now not needed anymore. Furthermore, disable interrupts also in
> ks_net_stop(), which was missing before.
>
> Note that a massive improvement here would be to re-use the KS8851
> driver approach, which is to move the TX path into a worker thread,
> interrupt handling to threaded interrupt, and synchronize everything
> with mutexes, but that would be a much bigger rework, for a separate
> patch.
>
> Signed-off-by: Marek Vasut <marex@...x.de>
This looks find as a fix for 'net', applied, thanks.
Powered by blists - more mailing lists