Jon, Sjoerg, Mikhail, Wouter: can one of you please test this kernel to see if it works on the N2100: http://merkel.debian.org/~tbm/tmp/kernel/linux-image-2.6.32-trunk-iop32x_2.6.32-4_armel.deb
* Ben Hutchings <b...@decadent.org.uk> [2009-10-16 04:27]: > I'd like to get this bug fixed in some way for the N2100, either by > setting all bits in the multicast hash for this specific hardware > (assuming we can detect it programmatically) or by adjusting the way we > generate the multicast hash. > > Vince, do you have a test for this specific hardware? I know it's MAC > type 4 (RTL8169SB/RTL8110SB) but this bug seems to be more specific than > that. > > Some time back it was discovered that in MMIO mode the 64-bit address > registers need to be written high-bits-first on this hardware, because > writing the high 32 bits clears the low 32 bits. Given that the > multicast hash table is also a 64-bit register, maybe it suffers from a > similar bug? It might be worth trying the following change: > > --- a/drivers/net/r8169.c > +++ b/drivers/net/r8169.c > @@ -3781,8 +3781,18 @@ static void rtl_set_rx_mode(struct net_device *dev) > mc_filter[1] = swab32(data); > } > > + pr_info("%s: mc_filter = { 0x%08x, 0x%08x }\n", __func__, > + mc_filter[0], mc_filter[1]); > + > RTL_W32(MAR0 + 0, mc_filter[0]); > RTL_W32(MAR0 + 4, mc_filter[1]); > + pr_info("%s: MAR = 0x%08lx%08lx\n", __func__, > + RTL_R32(MAR0 + 4), RTL_R32(MAR0 + 0)); > + > + RTL_W32(MAR0 + 4, mc_filter[1]); > + RTL_W32(MAR0 + 0, mc_filter[0]); > + pr_info("%s: MAR = 0x%08lx%08lx\n", __func__, > + RTL_R32(MAR0 + 4), RTL_R32(MAR0 + 0)); > > RTL_W32(RxConfig, tmp); > > --- END --- > > Ben. > > -- > Ben Hutchings > The most exhausting thing in life is being insincere. - Anne Morrow Lindberg -- Martin Michlmayr http://www.cyrius.com/ -- To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org