net: alx: Work around the DMA RX overflow issue
authorFeng Tang <feng.tang@intel.com>
Sun, 12 Jun 2016 09:36:37 +0000 (17:36 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Jun 2016 19:30:50 +0000 (15:30 -0400)
commit881d0327db37ad917a367c77aff1afa1ee41e0a9
tree467c3a6ecf09440638b43a72da13ffed7a9a4232
parentb46d9f625b07f843c706c2c7d0210a90ccdf143b
net: alx: Work around the DMA RX overflow issue

Commit 26c5f03 uses a new skb allocator to avoid the RFD overflow
issue.

But from debugging without datasheet, we found the error always
happen when the DMA RX address is set to 0x....fc0, which is very
likely to be a HW/silicon problem.

So one idea is instead of adding a new allocator, why not just
hitting the right target by avaiding the error-prone DMA address?

This patch will actually
* Remove the commit 26c5f03
* Apply rx skb with 64 bytes longer space, and if the allocated skb
  has a 0x...fc0 address, it will use skb_resever(skb, 64) to
  advance the address, so that the RX overflow can be avoided.

In theory this method should also apply to atl1c driver, which
I can't find anyone who can help to test on real devices.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
Signed-off-by: Feng Tang <feng.tang@intel.com>
Suggested-by: Eric Dumazet <edumazet@google.com>
Tested-by: Ole Lukoie <olelukoie@mail.ru>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/atheros/alx/alx.h
drivers/net/ethernet/atheros/alx/main.c