Re: atl1 64-bit => 32-bit DMA borkage (reproducible, bisected)

Jay Cliburn
2008-04-26T00:58:14Z

On Mon, 21 Apr 2008 21:08:21 -0500
Jay Cliburn <jacliburn@bellsouth.net> wrote:

>
> Alexey, can you please try this (very minimally tested) patch?

Alexey, have you found time to try this patch yet?

Thanks.

>
> diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
> index 5586fc6..07fe5c0 100644
> --- a/drivers/net/atlx/atl1.c
> +++ b/drivers/net/atlx/atl1.c
> @@ -1115,9 +1115,6 @@ static void atl1_free_ring_resources(struct
> atl1_adapter *adapter) struct atl1_rrd_ring *rrd_ring =
> &adapter->rrd_ring; struct atl1_ring_header *ring_header =
> &adapter->ring_header;
> - atl1_clean_tx_ring(adapter);
> - atl1_clean_rx_ring(adapter);
> -
> kfree(tpd_ring->buffer_info);
> pci_free_consistent(pdev, ring_header->size,
> ring_header->desc, ring_header->dma);
> @@ -3423,6 +3420,8 @@ static int atl1_set_ringparam(struct net_device
> *netdev, adapter->rrd_ring = rrd_old;
> adapter->tpd_ring = tpd_old;
> adapter->ring_header = rhdr_old;
> + atl1_clean_tx_ring(adapter);
> + atl1_clean_rx_ring(adapter);
> atl1_free_ring_resources(adapter);
> adapter->rfd_ring = rfd_new;
> adapter->rrd_ring = rrd_new;