hinic3: Fix netif_queue_set_napi queue_index input parameter error
Incorrectly transmitted interrupt number instead of queue number
when using netif_queue_set_napi. Besides, move this to appropriate
code location to set napi.
Remove redundant netif_stop_subqueue beacuase it is not part of the
hinic3_send_one_skb process.
Fixes: 17fcb3dc12 ("hinic3: module initialization and tx/rx logic")
Co-developed-by: Zhu Yikai <zhuyikai1@h-partners.com>
Signed-off-by: Zhu Yikai <zhuyikai1@h-partners.com>
Signed-off-by: Fan Gong <gongfan1@huawei.com>
Link: https://patch.msgid.link/7b8e4eb5c53cbd873ee9aaefeb3d9dbbaff52deb.1769070766.git.zhuyikai1@h-partners.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
master
parent
9146fe2829
commit
fb2bb2a1eb
|
|
@ -43,21 +43,12 @@ static void qp_add_napi(struct hinic3_irq_cfg *irq_cfg)
|
|||
struct hinic3_nic_dev *nic_dev = netdev_priv(irq_cfg->netdev);
|
||||
|
||||
netif_napi_add(nic_dev->netdev, &irq_cfg->napi, hinic3_poll);
|
||||
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
|
||||
NETDEV_QUEUE_TYPE_RX, &irq_cfg->napi);
|
||||
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
|
||||
NETDEV_QUEUE_TYPE_TX, &irq_cfg->napi);
|
||||
napi_enable(&irq_cfg->napi);
|
||||
}
|
||||
|
||||
static void qp_del_napi(struct hinic3_irq_cfg *irq_cfg)
|
||||
{
|
||||
napi_disable(&irq_cfg->napi);
|
||||
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
|
||||
NETDEV_QUEUE_TYPE_RX, NULL);
|
||||
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
|
||||
NETDEV_QUEUE_TYPE_TX, NULL);
|
||||
netif_stop_subqueue(irq_cfg->netdev, irq_cfg->irq_id);
|
||||
netif_napi_del(&irq_cfg->napi);
|
||||
}
|
||||
|
||||
|
|
@ -150,6 +141,11 @@ int hinic3_qps_irq_init(struct net_device *netdev)
|
|||
goto err_release_irqs;
|
||||
}
|
||||
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_RX, &irq_cfg->napi);
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_TX, &irq_cfg->napi);
|
||||
|
||||
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,
|
||||
irq_cfg->msix_entry_idx,
|
||||
HINIC3_SET_MSIX_AUTO_MASK);
|
||||
|
|
@ -164,6 +160,10 @@ err_release_irqs:
|
|||
q_id--;
|
||||
irq_cfg = &nic_dev->q_params.irq_cfg[q_id];
|
||||
qp_del_napi(irq_cfg);
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_RX, NULL);
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_TX, NULL);
|
||||
hinic3_set_msix_state(nic_dev->hwdev, irq_cfg->msix_entry_idx,
|
||||
HINIC3_MSIX_DISABLE);
|
||||
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,
|
||||
|
|
@ -184,6 +184,10 @@ void hinic3_qps_irq_uninit(struct net_device *netdev)
|
|||
for (q_id = 0; q_id < nic_dev->q_params.num_qps; q_id++) {
|
||||
irq_cfg = &nic_dev->q_params.irq_cfg[q_id];
|
||||
qp_del_napi(irq_cfg);
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_RX, NULL);
|
||||
netif_queue_set_napi(irq_cfg->netdev, q_id,
|
||||
NETDEV_QUEUE_TYPE_TX, NULL);
|
||||
hinic3_set_msix_state(nic_dev->hwdev, irq_cfg->msix_entry_idx,
|
||||
HINIC3_MSIX_DISABLE);
|
||||
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue