Date: Tue, 20 Jul 2010 04:30:34 +0200 From: Bernd Walter <ticso@cicely7.cicely.de> To: "M. Warner Losh" <imp@bsdimp.com> Cc: freebsd-arm@FreeBSD.org, ticso@cicely.de Subject: Re: at91sam9g20: Upcoming Patches Message-ID: <20100720023034.GS28908@cicely7.cicely.de> In-Reply-To: <20100719.182202.918765004097971572.imp@bsdimp.com> References: <4C444E8B.6090104@ansley.com> <20100719153614.GI28908@cicely7.cicely.de> <AANLkTilj6crfPkCfViYU8LkFxZ6LY8WxRAghiZXaSDn_@mail.gmail.com> <20100719.182202.918765004097971572.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jul 19, 2010 at 06:22:02PM -0600, M. Warner Losh wrote: > In message: <AANLkTilj6crfPkCfViYU8LkFxZ6LY8WxRAghiZXaSDn_@mail.gmail.com> > Yohanes Nugroho <yohanes@gmail.com> writes: > : On Mon, Jul 19, 2010 at 10:36 PM, Bernd Walter <ticso@cicely7.cicely.de> wrote: > : >> if_ate.c: > : >> > : >> * Support for sam9 "EMAC" controller. > : >> * Support for rmii interface to phy. > : > > : > RM9200 ate requires specific DMA alignment, which required a few > : > realign copys. > : > This isn't neccessary for most other AT91 devices and for sure > : > not with any AT91SAM9x device. > : > Not sure if all of them are automatically avoided - you might want > : > to verify the code about this point. > : > There is also RBNA workaround, which should be RM9200 specifc, > : > which shouldn't be triggered with others, but you might want to save > : > a few bytes codespace. > : > : And looking at Linux's code, they separate for the RM9200 driver and > : newer AT9 (macb) drivers. I haven't looked deeply, but it seems that > : if we are going to support all variations of RM9200 PHY for link > : checking purpose, there will a lot of RM9200 specific code. > > Unlike Linux, all that's abstracted out in FreeBSD, so it is easy to > support dozens of different PYHs. In fact, I don't think there's any > PHY specific code in the current ATE driver... No there isn't - at least not with the SAM9260. I know the ATE in SAM7X256/512 very well and beside that some revs of them have broken RMII support it is the same ATE as in SAM9260. > : I agree that there are many things in common between these two > : drivers, but I don't know if it is a good idea to keep everything in > : one file. > > Yea, I worry about the performance on newer parts of the older code, > which has stinky performance due to hardware limitations. The performance has two reasons. First the fact that the RM9200 ATE can't DMA into non 4-byte aligned buffers, which requires copying and memory bandwidth is rather slow, which especially sucks because of the required copy'ing. IP headers are no n*4 bytes, so you want a 2 byte offset in your receive buffers otherwise IP code copy'es received buffers. On sending AFAIK the ATE driver copy'es data into 4 alignment. The memory interface on SAM9 is much faster because it is DDR, higher clocked and with it's bus matrix e.g. DMA can access DDRAM and CPU IO in parallel. I don't see a technical reason to have different source files. A few things can be tuned on compiletime, but this is only a win to save code size - from the runtime point a few rev-checks in hybrid kernel shouldn't hurt. -- B.Walter <bernd@bwct.de> http://www.bwct.de Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100720023034.GS28908>