[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <031ca6a8-a720-0e50-f16e-f02029e98547@cogentembedded.com>
Date: Fri, 30 Dec 2016 13:38:46 +0300
From: Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
To: Jeff Kirsher <jeffrey.t.kirsher@...el.com>, davem@...emloft.net
Cc: Emil Tantilov <emil.s.tantilov@...el.com>, netdev@...r.kernel.org,
nhorman@...hat.com, sassmann@...hat.com, jogreene@...hat.com,
guru.anbalagane@...cle.com
Subject: Re: [net-next 12/21] ixgbevf: fix AER error handling
Hello!
On 12/30/2016 12:33 PM, Jeff Kirsher wrote:
> From: Emil Tantilov <emil.s.tantilov@...el.com>
>
> Make sure that we free the IRQs in ixgbevf_io_error_detected() when
> responding to an PCIe AER error and also restore them when the
> interface recovers from it.
>
> Previously it was possible to trigger BUG_ON() check in free_msix_irqs()
> in the case where we call ixgbevf_remove() after a failed recovery from
> AER error because the interrupts were not freed.
>
> Also moved the down and free functions into ixgbevf_close_suspend()
> same as with ixgbe.
>
> Signed-off-by: Emil Tantilov <emil.s.tantilov@...el.com>
> Tested-by: Andrew Bowers <andrewx.bowers@...el.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@...el.com>
> ---
> drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 43 +++++++++++++----------
> 1 file changed, 25 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
> index 8574f21..7dfd1df 100644
> --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
> +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
> @@ -3228,6 +3228,21 @@ int ixgbevf_open(struct net_device *netdev)
> }
>
> /**
> + * ixgbevf_close_suspend - actions necessary to both suspend and close flows
> + * @adapter: the private adapter struct
> + *
> + * This function should contain the necessary work common to both suspending
> + * and closing of the device.
> + */
> +static void ixgbevf_close_suspend(struct ixgbevf_adapter *adapter)
> +{
> + ixgbevf_down(adapter);
> + ixgbevf_free_irq(adapter);
> + ixgbevf_free_all_tx_resources(adapter);
> + ixgbevf_free_all_rx_resources(adapter);
Hum, why 2 tabs?
> +}
> +
> +/**
> * ixgbevf_close - Disables a network interface
> * @netdev: network interface device structure
> *
[...]
MBR, Sergei
Powered by blists - more mailing lists