Subject: Re: Regression: ixgb warning on MTU change

From: Breno Leitao <[email-masked]>
Date: Wed, 01 Oct 2008 11:32:45 -0300

Hi Jesse, 

Brandeburg, Jesse wrote:
> On Wed, 24 Sep 2008, Breno Leitao wrote:
> Thanks for the report, I think this patch should fix it.  Please test and 
> let us know.  This was compile tested only.
I just tested this patch and it fixed that problem.  

Thanks

> ----
> 
> From: Jesse Brandeburg <[email-masked]>
> 
> ixgb: fix bug when freeing resources
> 
> It was pointed out by Breno Leitao <[email-masked]> that
> ixgb would crash on PPC when an IOMMU was in use, if change_mtu was
> called.
> 
> It appears to be a pretty simple issue in the driver that wasn't discovered
> because most systems don't run with an IOMMU.  The driver needs to only unmap
> buffers that are mapped (duh).
> 
> CC: Breno Leitao <[email-masked]>
> 
> Signed-off-by: Jesse Brandeburg <[email-masked]>
> ---
>  drivers/net/ixgb/ixgb_main.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
> index aa75385..be3c7dc 100644
> --- a/drivers/net/ixgb/ixgb_main.c
> +++ b/drivers/net/ixgb/ixgb_main.c
> @@ -977,15 +977,17 @@ ixgb_clean_rx_ring(struct ixgb_adapter *adapter)
> 
>  	for (i = 0; i < rx_ring->count; i++) {
>  		buffer_info = &rx_ring->buffer_info[i];
> -		if (buffer_info->skb) {
> -
> +		if (buffer_info->dma) {
>  			pci_unmap_single(pdev,
>  					 buffer_info->dma,
>  					 buffer_info->length,
>  					 PCI_DMA_FROMDEVICE);
> +			buffer_info->dma = 0;
> +			buffer_info->length = 0;
> +		}
> 
> +		if (buffer_info->skb) {
>  			dev_kfree_skb(buffer_info->skb);
> -
>  			buffer_info->skb = NULL;
>  		}
>  	}
>