NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-arm/53216 (sunxi awge is unreliable at gigabit speed)



On Mon, Oct 18, 2021 at 07:41:26AM +0000, skrll%NetBSD.org@localhost wrote:
> Synopsis: sunxi awge is unreliable at gigabit speed
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: skrll%NetBSD.org@localhost
> State-Changed-When: Mon, 18 Oct 2021 07:41:25 +0000
> State-Changed-Why:
> Is this still a problem? I see these changes that might help your problem

On netbsd-9 I'm still seeing the strange led behavior but I don't notice
the packet loss any more (maybe I'm just lucky ?).
Anyway the change below doens't explain why it would work fine with a cisco
switch but fail with a dlink ...

> 
> revision 1.67
> date: 2019-10-15 18:19:05 +0100;  author: tnn;  state: Exp;  lines: +4 -5;  commitid: eOp1fNcFFCQafZGB;
> correct pointer arithmetics
> ----------------------------
> revision 1.66
> date: 2019-10-15 17:30:49 +0100;  author: tnn;  state: Exp;  lines: +28 -14;  commitid: t0ylgdxkVARbYYGB;
> awge: fix issue that caused rx packets to be corrupt with DIAGNOSTIC kernel
> 
> It seems the hardware can only reliably do rx DMA to addresses that are
> dcache size aligned. This is hinted at by some GMAC data sheets but hard to
> find an authoritative source.
> 
> on non-DIAGNOSTIC kernels we always implicitly get MCLBYTES-aligned mbuf
> data pointers, but with the reintroduction of POOL_REDZONE for DIAGNOSTIC
> we can get 8-byte alignment due to redzone padding. So align rx pointers to
> 64 bytes which should be good for both arm32 and aarch64.
> 
> While here change some bus_dmamap_load() to bus_dmamap_load_mbuf() and add
> one missing bus_dmamap_sync(). Also fixes the code to not assume that
> MCLBYTES == AWGE_MAX_PACKET. User may override MCLSHIFT in kernel config.
> 
> 

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index