rtl8169: Defer network packet processing
authorThierry Reding <treding@nvidia.com>
Thu, 28 Aug 2014 10:38:03 +0000 (12:38 +0200)
committerTom Rini <trini@ti.com>
Tue, 16 Sep 2014 16:23:45 +0000 (12:23 -0400)
commit5d9f423ddb2d4739eeee14990f5369508dee5e9d
treece55cb6da0dab90c21d5347223c899b7512f4bf6
parent9f680d2d978a9ab488b210ceeb90354308a0b750
rtl8169: Defer network packet processing

When network protocol errors occur (such as a file not being found on a
TFTP server), the processing done by the NetReceive() function will end
up calling the driver's .halt() implementation. However, after that the
device no longer has access to the memory buffers and will cause errors
such as this in the rtl_recv() function when trying to hand descriptors
back to the device:

pci_hose_bus_to_phys: invalid physical address

This can be fixed by deferring processing of network packets until the
descriptors have been handed back. That way rtl_halt() tearing down
network buffers is not going to prevent access to the buffers.

Reported-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/net/rtl8169.c