Skip to content

Commit fb2bb2a

Browse files
Fan Gongkuba-moo
authored andcommitted
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: 17fcb3d ("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>
1 parent 9146fe2 commit fb2bb2a

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

drivers/net/ethernet/huawei/hinic3/hinic3_irq.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,12 @@ static void qp_add_napi(struct hinic3_irq_cfg *irq_cfg)
4343
struct hinic3_nic_dev *nic_dev = netdev_priv(irq_cfg->netdev);
4444

4545
netif_napi_add(nic_dev->netdev, &irq_cfg->napi, hinic3_poll);
46-
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
47-
NETDEV_QUEUE_TYPE_RX, &irq_cfg->napi);
48-
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
49-
NETDEV_QUEUE_TYPE_TX, &irq_cfg->napi);
5046
napi_enable(&irq_cfg->napi);
5147
}
5248

5349
static void qp_del_napi(struct hinic3_irq_cfg *irq_cfg)
5450
{
5551
napi_disable(&irq_cfg->napi);
56-
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
57-
NETDEV_QUEUE_TYPE_RX, NULL);
58-
netif_queue_set_napi(irq_cfg->netdev, irq_cfg->irq_id,
59-
NETDEV_QUEUE_TYPE_TX, NULL);
60-
netif_stop_subqueue(irq_cfg->netdev, irq_cfg->irq_id);
6152
netif_napi_del(&irq_cfg->napi);
6253
}
6354

@@ -150,6 +141,11 @@ int hinic3_qps_irq_init(struct net_device *netdev)
150141
goto err_release_irqs;
151142
}
152143

144+
netif_queue_set_napi(irq_cfg->netdev, q_id,
145+
NETDEV_QUEUE_TYPE_RX, &irq_cfg->napi);
146+
netif_queue_set_napi(irq_cfg->netdev, q_id,
147+
NETDEV_QUEUE_TYPE_TX, &irq_cfg->napi);
148+
153149
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,
154150
irq_cfg->msix_entry_idx,
155151
HINIC3_SET_MSIX_AUTO_MASK);
@@ -164,6 +160,10 @@ int hinic3_qps_irq_init(struct net_device *netdev)
164160
q_id--;
165161
irq_cfg = &nic_dev->q_params.irq_cfg[q_id];
166162
qp_del_napi(irq_cfg);
163+
netif_queue_set_napi(irq_cfg->netdev, q_id,
164+
NETDEV_QUEUE_TYPE_RX, NULL);
165+
netif_queue_set_napi(irq_cfg->netdev, q_id,
166+
NETDEV_QUEUE_TYPE_TX, NULL);
167167
hinic3_set_msix_state(nic_dev->hwdev, irq_cfg->msix_entry_idx,
168168
HINIC3_MSIX_DISABLE);
169169
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,
@@ -184,6 +184,10 @@ void hinic3_qps_irq_uninit(struct net_device *netdev)
184184
for (q_id = 0; q_id < nic_dev->q_params.num_qps; q_id++) {
185185
irq_cfg = &nic_dev->q_params.irq_cfg[q_id];
186186
qp_del_napi(irq_cfg);
187+
netif_queue_set_napi(irq_cfg->netdev, q_id,
188+
NETDEV_QUEUE_TYPE_RX, NULL);
189+
netif_queue_set_napi(irq_cfg->netdev, q_id,
190+
NETDEV_QUEUE_TYPE_TX, NULL);
187191
hinic3_set_msix_state(nic_dev->hwdev, irq_cfg->msix_entry_idx,
188192
HINIC3_MSIX_DISABLE);
189193
hinic3_set_msix_auto_mask_state(nic_dev->hwdev,

0 commit comments

Comments
 (0)