mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
octeon_ep: initialise control mbox tasks before using APIs
Initialise various workqueue tasks and queue interrupt poll task
before the first invocation of any control net APIs. Since
octep_ctrl_net_get_info was called before the control net receive
work task was initialised or even the interrupt poll task was
queued, the function call wasn't returning actual firmware
info queried from Octeon.
Fixes: 8d6198a14e
("octeon_ep: support to fetch firmware info")
Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
Reviewed-by: Michal Schmidt <mschmidt@redhat.com>
Link: https://lore.kernel.org/r/20231206135228.2591659-1-srasheed@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c12296bbec
commit
a1664b991a
1 changed files with 13 additions and 9 deletions
|
@ -1193,6 +1193,13 @@ int octep_device_setup(struct octep_device *oct)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
INIT_WORK(&oct->tx_timeout_task, octep_tx_timeout_task);
|
||||
INIT_WORK(&oct->ctrl_mbox_task, octep_ctrl_mbox_task);
|
||||
INIT_DELAYED_WORK(&oct->intr_poll_task, octep_intr_poll_task);
|
||||
oct->poll_non_ioq_intr = true;
|
||||
queue_delayed_work(octep_wq, &oct->intr_poll_task,
|
||||
msecs_to_jiffies(OCTEP_INTR_POLL_TIME_MSECS));
|
||||
|
||||
atomic_set(&oct->hb_miss_cnt, 0);
|
||||
INIT_DELAYED_WORK(&oct->hb_task, octep_hb_timeout_task);
|
||||
|
||||
|
@ -1325,21 +1332,18 @@ static int octep_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
goto err_octep_config;
|
||||
}
|
||||
|
||||
octep_ctrl_net_get_info(octep_dev, OCTEP_CTRL_NET_INVALID_VFID,
|
||||
&octep_dev->conf->fw_info);
|
||||
err = octep_ctrl_net_get_info(octep_dev, OCTEP_CTRL_NET_INVALID_VFID,
|
||||
&octep_dev->conf->fw_info);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "Failed to get firmware info\n");
|
||||
goto register_dev_err;
|
||||
}
|
||||
dev_info(&octep_dev->pdev->dev, "Heartbeat interval %u msecs Heartbeat miss count %u\n",
|
||||
octep_dev->conf->fw_info.hb_interval,
|
||||
octep_dev->conf->fw_info.hb_miss_count);
|
||||
queue_delayed_work(octep_wq, &octep_dev->hb_task,
|
||||
msecs_to_jiffies(octep_dev->conf->fw_info.hb_interval));
|
||||
|
||||
INIT_WORK(&octep_dev->tx_timeout_task, octep_tx_timeout_task);
|
||||
INIT_WORK(&octep_dev->ctrl_mbox_task, octep_ctrl_mbox_task);
|
||||
INIT_DELAYED_WORK(&octep_dev->intr_poll_task, octep_intr_poll_task);
|
||||
octep_dev->poll_non_ioq_intr = true;
|
||||
queue_delayed_work(octep_wq, &octep_dev->intr_poll_task,
|
||||
msecs_to_jiffies(OCTEP_INTR_POLL_TIME_MSECS));
|
||||
|
||||
netdev->netdev_ops = &octep_netdev_ops;
|
||||
octep_set_ethtool_ops(netdev);
|
||||
netif_carrier_off(netdev);
|
||||
|
|
Loading…
Reference in a new issue