On Mon, 19 Aug 2019 16:55:22 -0700 Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx> wrote: > On Mon, 19 Aug 2019 18:31:33 +0200, Thomas Bogendoerfer wrote: > > Buffers alloacted by alloc_skb() are already cache aligned so there > > is no need for an extra align done by ioc3_alloc_skb. And instead > > of skb_put/skb_trim simply use one skb_put after frame size is known > > during receive. > [...] > > -/* We use this to acquire receive skb's that we can DMA directly into. */ > > - > > -#define IOC3_CACHELINE 128UL > > Is the cache line on the platform this driver works on 128B? right now yes, in theory IOC3 CAD DUO cards might work in SGI O2 systems, but the current Linux PCI implementation for O2 will not detect that card. On X86 usually the BIOS will choke up on that cards. > This looks like a DMA engine alignment requirement, more than an > optimization. that true, there are two constraints for the rx buffers, start must be aligned to 128 bytes and a buffer must not cross a 16kbyte boundary. I was already thinking of allocating pages and chop them up. Is there a Linux API available, which could help for implementing this ? I'll probably drop this patch or only change the skb_put stuff plus RX_BUF_SIZE define. Thomas. -- SUSE Linux GmbH GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 21284 (AG Nürnberg)