Skip to content

Commit cc9f7f6

Browse files
Jiawen WuPaolo Abeni
authored andcommitted
net: txgbe: request MISC IRQ in ndo_open
Move the creating of irq_domain for MISC IRQ from .probe to .ndo_open, and free it in .ndo_stop, to maintain consistency with the queue IRQs. This it for subsequent adjustments to the IRQ vectors. Fixes: aefd013 ("net: txgbe: use irq_domain for interrupt controller") Cc: [email protected] Signed-off-by: Jiawen Wu <[email protected]> Reviewed-by: Michal Swiatkowski <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent b0727b0 commit cc9f7f6

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ int txgbe_request_queue_irqs(struct wx *wx)
7878
free_irq(wx->msix_q_entries[vector].vector,
7979
wx->q_vector[vector]);
8080
}
81-
wx_reset_interrupt_capability(wx);
8281
return err;
8382
}
8483

@@ -211,6 +210,7 @@ void txgbe_free_misc_irq(struct txgbe *txgbe)
211210
free_irq(txgbe->link_irq, txgbe);
212211
free_irq(txgbe->misc.irq, txgbe);
213212
txgbe_del_irq_domain(txgbe);
213+
txgbe->wx->misc_irq_domain = false;
214214
}
215215

216216
int txgbe_setup_misc_irq(struct txgbe *txgbe)

drivers/net/ethernet/wangxun/txgbe/txgbe_main.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -458,10 +458,14 @@ static int txgbe_open(struct net_device *netdev)
458458

459459
wx_configure(wx);
460460

461-
err = txgbe_request_queue_irqs(wx);
461+
err = txgbe_setup_misc_irq(wx->priv);
462462
if (err)
463463
goto err_free_resources;
464464

465+
err = txgbe_request_queue_irqs(wx);
466+
if (err)
467+
goto err_free_misc_irq;
468+
465469
/* Notify the stack of the actual queue counts. */
466470
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
467471
if (err)
@@ -479,6 +483,9 @@ static int txgbe_open(struct net_device *netdev)
479483

480484
err_free_irq:
481485
wx_free_irq(wx);
486+
err_free_misc_irq:
487+
txgbe_free_misc_irq(wx->priv);
488+
wx_reset_interrupt_capability(wx);
482489
err_free_resources:
483490
wx_free_resources(wx);
484491
err_reset:
@@ -519,6 +526,7 @@ static int txgbe_close(struct net_device *netdev)
519526
wx_ptp_stop(wx);
520527
txgbe_down(wx);
521528
wx_free_irq(wx);
529+
txgbe_free_misc_irq(wx->priv);
522530
wx_free_resources(wx);
523531
txgbe_fdir_filter_exit(wx);
524532
wx_control_hw(wx, false);
@@ -564,7 +572,6 @@ static void txgbe_shutdown(struct pci_dev *pdev)
564572
int txgbe_setup_tc(struct net_device *dev, u8 tc)
565573
{
566574
struct wx *wx = netdev_priv(dev);
567-
struct txgbe *txgbe = wx->priv;
568575

569576
/* Hardware has to reinitialize queues and interrupts to
570577
* match packet buffer alignment. Unfortunately, the
@@ -575,7 +582,6 @@ int txgbe_setup_tc(struct net_device *dev, u8 tc)
575582
else
576583
txgbe_reset(wx);
577584

578-
txgbe_free_misc_irq(txgbe);
579585
wx_clear_interrupt_scheme(wx);
580586

581587
if (tc)
@@ -584,7 +590,6 @@ int txgbe_setup_tc(struct net_device *dev, u8 tc)
584590
netdev_reset_tc(dev);
585591

586592
wx_init_interrupt_scheme(wx);
587-
txgbe_setup_misc_irq(txgbe);
588593

589594
if (netif_running(dev))
590595
txgbe_open(dev);
@@ -882,13 +887,9 @@ static int txgbe_probe(struct pci_dev *pdev,
882887

883888
txgbe_init_fdir(txgbe);
884889

885-
err = txgbe_setup_misc_irq(txgbe);
886-
if (err)
887-
goto err_release_hw;
888-
889890
err = txgbe_init_phy(txgbe);
890891
if (err)
891-
goto err_free_misc_irq;
892+
goto err_release_hw;
892893

893894
err = register_netdev(netdev);
894895
if (err)
@@ -916,8 +917,6 @@ static int txgbe_probe(struct pci_dev *pdev,
916917

917918
err_remove_phy:
918919
txgbe_remove_phy(txgbe);
919-
err_free_misc_irq:
920-
txgbe_free_misc_irq(txgbe);
921920
err_release_hw:
922921
wx_clear_interrupt_scheme(wx);
923922
wx_control_hw(wx, false);
@@ -957,7 +956,6 @@ static void txgbe_remove(struct pci_dev *pdev)
957956
unregister_netdev(netdev);
958957

959958
txgbe_remove_phy(txgbe);
960-
txgbe_free_misc_irq(txgbe);
961959
wx_free_isb_resources(wx);
962960

963961
pci_release_selected_regions(pdev,

0 commit comments

Comments
 (0)