Make a distinction between different irqs by netdev name or pci name.

Signed-off-by: Luo bin <luob...@huawei.com>
---
 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c | 15 +++++++++------
 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h |  1 +
 drivers/net/ethernet/huawei/hinic/hinic_rx.c     |  2 +-
 drivers/net/ethernet/huawei/hinic/hinic_tx.c     |  4 ++--
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c 
b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
index 05018562222f..f108b0c9228e 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
@@ -793,12 +793,15 @@ static int init_eq(struct hinic_eq *eq, struct hinic_hwif 
*hwif,
                            HINIC_EQ_MSIX_LLI_CREDIT_LIMIT_DEFAULT,
                            HINIC_EQ_MSIX_RESEND_TIMER_DEFAULT);
 
-       if (type == HINIC_AEQ)
-               err = request_irq(entry.vector, aeq_interrupt, 0,
-                                 "hinic_aeq", eq);
-       else if (type == HINIC_CEQ)
-               err = request_irq(entry.vector, ceq_interrupt, 0,
-                                 "hinic_ceq", eq);
+       if (type == HINIC_AEQ) {
+               snprintf(eq->irq_name, sizeof(eq->irq_name), 
"hinic_aeq%d@pci:%s", eq->q_id,
+                        pci_name(pdev));
+               err = request_irq(entry.vector, aeq_interrupt, 0, eq->irq_name, 
eq);
+       } else if (type == HINIC_CEQ) {
+               snprintf(eq->irq_name, sizeof(eq->irq_name), 
"hinic_ceq%d@pci:%s", eq->q_id,
+                        pci_name(pdev));
+               err = request_irq(entry.vector, ceq_interrupt, 0, eq->irq_name, 
eq);
+       }
 
        if (err) {
                dev_err(&pdev->dev, "Failed to request irq for the EQ\n");
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h 
b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h
index 43065fc70869..2f3222174fc7 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h
@@ -186,6 +186,7 @@ struct hinic_eq {
        int                     num_elem_in_pg;
 
        struct msix_entry       msix_entry;
+       char                    irq_name[64];
 
        dma_addr_t              *dma_addr;
        void                    **virt_addr;
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_rx.c 
b/drivers/net/ethernet/huawei/hinic/hinic_rx.c
index 5bee951fe9d4..f403a6711e97 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_rx.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_rx.c
@@ -588,7 +588,7 @@ int hinic_init_rxq(struct hinic_rxq *rxq, struct hinic_rq 
*rq,
        rxq_stats_init(rxq);
 
        rxq->irq_name = devm_kasprintf(&netdev->dev, GFP_KERNEL,
-                                      "hinic_rxq%d", qp->q_id);
+                                      "%s_rxq%d", netdev->name, qp->q_id);
        if (!rxq->irq_name)
                return -ENOMEM;
 
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_tx.c 
b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
index 502f00e1e2d0..c249b7e6e432 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_tx.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
@@ -894,14 +894,14 @@ int hinic_init_txq(struct hinic_txq *txq, struct hinic_sq 
*sq,
                goto err_alloc_free_sges;
        }
 
-       irqname_len = snprintf(NULL, 0, "hinic_txq%d", qp->q_id) + 1;
+       irqname_len = snprintf(NULL, 0, "%s_txq%d", netdev->name, qp->q_id) + 1;
        txq->irq_name = devm_kzalloc(&netdev->dev, irqname_len, GFP_KERNEL);
        if (!txq->irq_name) {
                err = -ENOMEM;
                goto err_alloc_irqname;
        }
 
-       sprintf(txq->irq_name, "hinic_txq%d", qp->q_id);
+       sprintf(txq->irq_name, "%s_txq%d", netdev->name, qp->q_id);
 
        err = hinic_hwdev_hw_ci_addr_set(hwdev, sq, CI_UPDATE_NO_PENDING,
                                         CI_UPDATE_NO_COALESC);
-- 
2.17.1

Reply via email to