[PATCH] r8169: incoming frame length check
authorFrancois Romieu <romieu@fr.zoreil.com>
Fri, 13 May 2005 00:09:17 +0000 (20:09 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Fri, 13 May 2005 00:09:17 +0000 (20:09 -0400)
commit126fa4b9ca5d9d7cb7d46f779ad3bd3631ca387c
tree74d19e344c90a64c4b6638c0ba994ce19e193714
parent88d7bd8cb9eb8d64bf7997600b0d64f7834047c5
  [PATCH] r8169: incoming frame length check

  The size of the incoming frame is not correctly checked.

  The RxMaxSize register (0xDA) does not work as expected and incoming
  frames whose size exceeds the MTU actually end spanning multiple
  descriptors. The first Rx descriptor contains the size of the whole
  frame (or some garbage in its place). The driver does not expect
  something above the space allocated to the current skb and crashes
  loudly when it issues a skb_put.

  The fix contains two parts:
  - disable hardware Rx size filtering: so far it only proved to be able
    to trigger some new fancy errors;
  - drop multi-descriptors frame: as the driver allocates MTU sized Rx
    buffers, it provides an adequate filtering.

  As a bonus, wrong descriptors were not returned to the asic after their
  processing.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/net/r8169.c