mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-28 01:51:33 +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_chip_info[] = {
|
||||||
{"RTL-8169", 0x00, 0xff7e1880,},
|
{"RTL-8169", 0x00, 0xff7e1880,},
|
||||||
{"RTL-8169", 0x04, 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 {
|
enum _DescStatusBit {
|
||||||
|
@ -312,6 +321,7 @@ static const unsigned int rtl8169_rx_config =
|
||||||
(RX_FIFO_THRESH << RxCfgFIFOShift) | (RX_DMA_BURST << RxCfgDMAShift);
|
(RX_FIFO_THRESH << RxCfgFIFOShift) | (RX_DMA_BURST << RxCfgDMAShift);
|
||||||
|
|
||||||
static struct pci_device_id supported[] = {
|
static struct pci_device_id supported[] = {
|
||||||
|
{PCI_VENDOR_ID_REALTEK, 0x8167},
|
||||||
{PCI_VENDOR_ID_REALTEK, 0x8169},
|
{PCI_VENDOR_ID_REALTEK, 0x8169},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
@ -433,6 +443,10 @@ static int rtl_recv(struct eth_device *dev)
|
||||||
tpc->cur_rx = cur_rx;
|
tpc->cur_rx = cur_rx;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ushort sts = RTL_R8(IntrStatus);
|
||||||
|
RTL_W8(IntrStatus, sts & ~(TxErr | RxErr | SYSErr));
|
||||||
|
udelay(100); /* wait */
|
||||||
}
|
}
|
||||||
tpc->cur_rx = cur_rx;
|
tpc->cur_rx = cur_rx;
|
||||||
return (0); /* initially as this is called to flush the input */
|
return (0); /* initially as this is called to flush the input */
|
||||||
|
|
Loading…
Add table
Reference in a new issue