On Wed, 2009-08-12 at 17:17 -0700, Steve Langasek wrote:
> On Wed, Aug 12, 2009 at 01:07:28AM +0100, Ben Hutchings wrote:
> > Now that I've looked at the differences between different controller
> > revisions, it appears that the switch in byte ordering for the multicast
> > hash bitmap was made between the RTL8169 family (PCI) and RTL8168 family
> > (PCI Express). The recent fix applied to some members of the latter
> > family.
>
> > One difference I noted between the vendor driver and the in-tree driver
> > is in the ordering of register writes. It probably doesn't make a
> > difference, but perhaps you could try changing:
>
> > RTL_W32(MAR0 + 0, mc_filter[0]);
> > RTL_W32(MAR0 + 4, mc_filter[1]);
>
> > RTL_W32(RxConfig, tmp);
>
> > to:
>
> > RTL_W32(RxConfig, tmp);
> > RTL_W32(MAR0 + 0, mc_filter[0]);
> > RTL_W32(MAR0 + 4, mc_filter[1]);
>
> > in rtl_set_rx_mode().
>
> Applied, rebuilt; doesn't seem to have fixed the problem.
Can you try adding:
dprintk("tmp = %#x mc_filter = { %#x, %#x }\n", tmp, mc_filter[0], mc_filter[1]);
to rtl_set_rx_mode() and reporting the output?
Can you also get statistics with "ethtool -S eth0" before and after
sending multicast packets that the Thecus NIC should receive?
Ben.
--
Ben Hutchings
Unix is many things to many people,
but it's never been everything to anybody.
Attachment:
signature.asc
Description: This is a digitally signed message part