hinic: modify irq name
authorLuo bin <luobin9@huawei.com>
Fri, 18 Sep 2020 09:23:22 +0000 (17:23 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Sep 2020 21:34:24 +0000 (14:34 -0700)
Make a distinction between different irqs by netdev name or pci name.

Signed-off-by: Luo bin <luobin9@huawei.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h
drivers/net/ethernet/huawei/hinic/hinic_rx.c
drivers/net/ethernet/huawei/hinic/hinic_tx.c

index 0501856..f108b0c 100644 (file)
@@ -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");
index 43065fc..2f32221 100644 (file)
@@ -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;
index 5bee951..f403a67 100644 (file)
@@ -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;
 
index 502f00e..c249b7e 100644 (file)
@@ -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);