Message ID | 20120620220918.GA2785@electric-eye.fr.zoreil.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Francois Romieu <romieu@fr.zoreil.com> Date: Thu, 21 Jun 2012 00:09:18 +0200 > The 8168evl (RTL_GIGA_MAC_VER_34) based Gigabyte GA-990FXA motherboards > are very prone to NETDEV watchdog problems without this change. See > https://bugzilla.kernel.org/show_bug.cgi?id=42899 for instance. > > I don't know why it *works*. It's depressingly effective though. > > For the record: > - the problem may go along IOMMU (AMD-Vi) errors but it really looks > like a red herring. > - the patch sets the RX_MULTI_EN bit. If the 8168c doc is any guide, > the chipset now fetches several Rx descriptors at a time. > - long ago the driver ignored the RX_MULTI_EN bit. > e542a2269f232d61270ceddd42b73a4348dee2bb changed the RxConfig > settings. Whatever the problem it's now labeled a regression. > - Realtek's own driver can identify two different 8168evl devices > (CFG_METHOD_16 and CFG_METHOD_17) where the r8169 driver only > sees one. It sucks. > > Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Applied, thanks Francois. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, > - the patch sets the RX_MULTI_EN bit. If the 8168c doc is any guide, > the chipset now fetches several Rx descriptors at a time. > - long ago the driver ignored the RX_MULTI_EN bit. > e542a2269f232d61270ceddd42b73a4348dee2bb changed the RxConfig > settings. Whatever the problem it's now labeled a regression. The definition of the IO 0x44 bit 14 is opposite for new chips. For 8111C, 0 means fetching one Rx descriptor, and 1 means fetching multi-descriptors. For 8111D and the later chips, 0 means fetching multi-descriptors, and 1 means fetching one Rx descriptor. However, I have no idea about why it influences the issue. > - Realtek's own driver can identify two different 8168evl devices > (CFG_METHOD_16 and CFG_METHOD_17) where the r8169 driver only > sees one. It sucks. The CFG_METHOD_16 is the internal test chip. We don't have mass production for it. Even it could be removed from driver. I don't think the kernel have to support it. Best Regards, Hayes -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index 7260aa7..d7a04e0 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -3894,6 +3894,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp) case RTL_GIGA_MAC_VER_22: case RTL_GIGA_MAC_VER_23: case RTL_GIGA_MAC_VER_24: + case RTL_GIGA_MAC_VER_34: RTL_W32(RxConfig, RX128_INT_EN | RX_MULTI_EN | RX_DMA_BURST); break; default:
The 8168evl (RTL_GIGA_MAC_VER_34) based Gigabyte GA-990FXA motherboards are very prone to NETDEV watchdog problems without this change. See https://bugzilla.kernel.org/show_bug.cgi?id=42899 for instance. I don't know why it *works*. It's depressingly effective though. For the record: - the problem may go along IOMMU (AMD-Vi) errors but it really looks like a red herring. - the patch sets the RX_MULTI_EN bit. If the 8168c doc is any guide, the chipset now fetches several Rx descriptors at a time. - long ago the driver ignored the RX_MULTI_EN bit. e542a2269f232d61270ceddd42b73a4348dee2bb changed the RxConfig settings. Whatever the problem it's now labeled a regression. - Realtek's own driver can identify two different 8168evl devices (CFG_METHOD_16 and CFG_METHOD_17) where the r8169 driver only sees one. It sucks. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> --- Hayes, any hindsight ? drivers/net/ethernet/realtek/r8169.c | 1 + 1 file changed, 1 insertion(+)