Skip to content

Commit fbb7937

Browse files
lategoodbyejfvogel
authored andcommitted
net: vertexcom: mse102x: Fix possible stuck of SPI interrupt
[ Upstream commit 55f362885951b2d00fd7fbb02ef0227deea572c2 ] The MSE102x doesn't provide any SPI commands for interrupt handling. So in case the interrupt fired before the driver requests the IRQ, the interrupt will never fire again. In order to fix this always poll for pending packets after opening the interface. Fixes: 2f207cb ("net: vertexcom: Add MSE102x SPI support") Signed-off-by: Stefan Wahren <[email protected]> Reviewed-by: Andrew Lunn <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]> Signed-off-by: Sasha Levin <[email protected]> (cherry picked from commit 6abbffa736473db6da38e1ca04d5522e80bb4c2d) Signed-off-by: Jack Vogel <[email protected]>
1 parent 2f68bee commit fbb7937

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/net/ethernet/vertexcom/mse102x.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,7 @@ static irqreturn_t mse102x_irq(int irq, void *_mse)
509509
static int mse102x_net_open(struct net_device *ndev)
510510
{
511511
struct mse102x_net *mse = netdev_priv(ndev);
512+
struct mse102x_net_spi *mses = to_mse102x_spi(mse);
512513
int ret;
513514

514515
ret = request_threaded_irq(ndev->irq, NULL, mse102x_irq, IRQF_ONESHOT,
@@ -524,6 +525,13 @@ static int mse102x_net_open(struct net_device *ndev)
524525

525526
netif_carrier_on(ndev);
526527

528+
/* The SPI interrupt can stuck in case of pending packet(s).
529+
* So poll for possible packet(s) to re-arm the interrupt.
530+
*/
531+
mutex_lock(&mses->lock);
532+
mse102x_rx_pkt_spi(mse);
533+
mutex_unlock(&mses->lock);
534+
527535
netif_dbg(mse, ifup, ndev, "network device up\n");
528536

529537
return 0;

0 commit comments

Comments
 (0)