[dpdk-dev] [PATCH v3 2/2] net/i40e: add hot plug monitor in i40e

Thomas Monjalon thomas at monjalon.net
Fri Jul 7 09:56:15 CEST 2017


29/06/2017 07:01, Jeff Guo:
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -1283,6 +1283,7 @@ static inline void i40e_GLQF_reg_init(struct i40e_hw *hw)
>  
>  	/* enable uio intr after callback register */
>  	rte_intr_enable(intr_handle);
> +
>  	/*
>  	 * Add an ethertype filter to drop all flow control frames transmitted
>  	 * from VSIs. By doing so, we stop VF from sending out PAUSE or PFC
> @@ -5832,11 +5833,29 @@ struct i40e_vsi *
>  {
>  	struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
>  	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
> +	struct rte_uevent event;
>  	uint32_t icr0;
> +	struct rte_pci_device *pci_dev;
> +	struct rte_intr_handle *intr_handle;
> +
> +	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	intr_handle = &pci_dev->intr_handle;
>  
>  	/* Disable interrupt */
>  	i40e_pf_disable_irq0(hw);
>  
> +	/* check device uevent */
> +	if (rte_uevent_get(intr_handle->uevent_fd, &event) == 0) {
> +		if (event.subsystem == RTE_UEVENT_SUBSYSTEM_UIO) {
> +			if (event.action == RTE_UEVENT_REMOVE) {
> +				_rte_eth_dev_callback_process(dev,
> +					RTE_ETH_EVENT_INTR_RMV, NULL);
> +				return;
> +			}
> +		}
> +		goto done;
> +	}

There is nothing specific to i40e in this patch.
It seems wrong to add such generic code in every drivers.


More information about the dev mailing list