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

Alexey Dobriyan
2008-04-28T05:47:29Z

On Fri, Apr 25, 2008 at 07:57:43PM -0500, Jay Cliburn wrote:
> 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?

I've tried it and it doesn't help.
http://marc.info/?l=linux-netdev&m=120888791230434&w=2

> > --- 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;