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

Thomas Monjalon thomas at monjalon.net
Fri Jul 7 12:17:40 CEST 2017


07/07/2017 09:56, Thomas Monjalon:
> 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.

It should be managed at bus layer and not be specific to ethdev only.


More information about the dev mailing list