On Mon, 28 Jul 2025 17:05:06 +0800
[email protected] wrote:

> +static s32 sxe_dev_start(struct rte_eth_dev *dev)
> +{
> +     s32 ret;
> +     struct sxe_adapter *adapter = dev->data->dev_private;
> +     struct sxe_hw *hw = &adapter->hw;
> +     struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +     struct rte_intr_handle *handle = SXE_PCI_INTR_HANDLE(pci_dev);
> +     struct sxe_irq_context *irq = &adapter->irq_ctxt;
> +
> +     ret = sxe_fw_time_sync(hw);
> +
> +     rte_intr_disable(handle);
> +
> +     ret = sxe_hw_reset(hw);
> +     if (ret < 0) {
> +             PMD_LOG_ERR(INIT, "hw init failed, ret=%d", ret);
> +             goto l_end;
> +     }
> +
> +     sxe_hw_start(hw);
> +
> +     ret = sxe_irq_configure(dev);
> +     if (ret) {
> +             PMD_LOG_ERR(INIT, "irq config fail.");
> +             goto l_error;
> +     }
> +
> +l_end:
> +     return ret;
> +
> +l_error:
> +     PMD_LOG_ERR(INIT, "dev start err, ret=%d", ret);
> +     sxe_irq_vec_free(handle);
> +     ret = -EIO;
> +     goto l_end;
> +}
> +

Since this device is supporting per-queue start/stop, it should support 
defer_start.
The semantic in DPDK is that when device is started, all non defered queues 
should be
auto started. Looks like this driver is assuming application will call 
tx/rx_queue_start
on each queue.

Reply via email to