mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
net: rtl8169: Add processing when OWNbit did't enable in rtl_recv()
When rtl_recv() of rtl8169 is called, OWNbit of status register is not enable occasionally. rtl_recv() doesn't work normally when the driver doesn't do appropriate processing. This patch fix this problem. Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
This commit is contained in:
parent
377151c817
commit
d75469d48c
1 changed files with 14 additions and 0 deletions
|
@ -247,6 +247,15 @@ static struct {
|
|||
} rtl_chip_info[] = {
|
||||
{"RTL-8169", 0x00, 0xff7e1880,},
|
||||
{"RTL-8169", 0x04, 0xff7e1880,},
|
||||
{"RTL-8169", 0x00, 0xff7e1880,},
|
||||
{"RTL-8169s/8110s", 0x02, 0xff7e1880,},
|
||||
{"RTL-8169s/8110s", 0x04, 0xff7e1880,},
|
||||
{"RTL-8169sb/8110sb", 0x10, 0xff7e1880,},
|
||||
{"RTL-8169sc/8110sc", 0x18, 0xff7e1880,},
|
||||
{"RTL-8168b/8111sb", 0x30, 0xff7e1880,},
|
||||
{"RTL-8168b/8111sb", 0x38, 0xff7e1880,},
|
||||
{"RTL-8101e", 0x34, 0xff7e1880,},
|
||||
{"RTL-8100e", 0x32, 0xff7e1880,},
|
||||
};
|
||||
|
||||
enum _DescStatusBit {
|
||||
|
@ -312,6 +321,7 @@ static const unsigned int rtl8169_rx_config =
|
|||
(RX_FIFO_THRESH << RxCfgFIFOShift) | (RX_DMA_BURST << RxCfgDMAShift);
|
||||
|
||||
static struct pci_device_id supported[] = {
|
||||
{PCI_VENDOR_ID_REALTEK, 0x8167},
|
||||
{PCI_VENDOR_ID_REALTEK, 0x8169},
|
||||
{}
|
||||
};
|
||||
|
@ -433,6 +443,10 @@ static int rtl_recv(struct eth_device *dev)
|
|||
tpc->cur_rx = cur_rx;
|
||||
return 1;
|
||||
|
||||
} else {
|
||||
ushort sts = RTL_R8(IntrStatus);
|
||||
RTL_W8(IntrStatus, sts & ~(TxErr | RxErr | SYSErr));
|
||||
udelay(100); /* wait */
|
||||
}
|
||||
tpc->cur_rx = cur_rx;
|
||||
return (0); /* initially as this is called to flush the input */
|
||||
|
|
Loading…
Reference in a new issue