Patchwork Possible bug with r8169 driver

login
register
mail settings
Submitter françois romieu
Date Oct. 1, 2012, 6:56 p.m.
Message ID <20121001185629.GA4922@electric-eye.fr.zoreil.com>
Download mbox | patch
Permalink /patch/188335/
State RFC
Delegated to: David Miller
Headers show

Comments

françois romieu - Oct. 1, 2012, 6:56 p.m.
hayeswang <hayeswang@realtek.com> :
[...]
> I need check it with our hardware engineers. I would reply after getting
> response.

Thanks.

> Could you try to set IO 0x08 ~ 0x0F to 0xff for testing, first?

Something like the patch below (against 3.5.4) ?

--
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
hayeswang - Oct. 4, 2012, 2:09 a.m.
Francois Romieu [mailto:romieu@fr.zoreil.com] 
[...]
> diff --git a/drivers/net/ethernet/realtek/r8169.c 
> b/drivers/net/ethernet/realtek/r8169.c
> index eb81da4..e0f1b8d 100644
> --- a/drivers/net/ethernet/realtek/r8169.c
> +++ b/drivers/net/ethernet/realtek/r8169.c
> @@ -4271,8 +4271,8 @@ static void rtl_set_rx_mode(struct 
> net_device *dev)
>  		mc_filter[1] = swab32(data);
>  	}
>  
> -	RTL_W32(MAR0 + 4, mc_filter[1]);
> -	RTL_W32(MAR0 + 0, mc_filter[0]);
> +	RTL_W32(MAR0 + 4, 0xffffffff);
> +	RTL_W32(MAR0 + 0, 0xffffffff);
>  
>  	RTL_W32(RxConfig, tmp);
>  }

The RTL_GIGA_MAC_VER_35 is designed without multicast hardware filter, so you
should set IO 0x08 ~ 0x0f to 0xff for receiving all multicast packets without
filtering them.

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
Nolwenn - Nov. 7, 2012, 9:54 a.m.
Le jeudi 4 octobre 2012 10:09:22 hayeswang a écrit :
> Francois Romieu [mailto:romieu@fr.zoreil.com]
> [...]
> 
> > diff --git a/drivers/net/ethernet/realtek/r8169.c
> > b/drivers/net/ethernet/realtek/r8169.c
> > index eb81da4..e0f1b8d 100644
> > --- a/drivers/net/ethernet/realtek/r8169.c
> > +++ b/drivers/net/ethernet/realtek/r8169.c
> > @@ -4271,8 +4271,8 @@ static void rtl_set_rx_mode(struct
> > net_device *dev)
> > 
> >  		mc_filter[1] = swab32(data);
> >  	
> >  	}
> > 
> > -	RTL_W32(MAR0 + 4, mc_filter[1]);
> > -	RTL_W32(MAR0 + 0, mc_filter[0]);
> > +	RTL_W32(MAR0 + 4, 0xffffffff);
> > +	RTL_W32(MAR0 + 0, 0xffffffff);
> > 
> >  	RTL_W32(RxConfig, tmp);
> >  
> >  }
> 
> The RTL_GIGA_MAC_VER_35 is designed without multicast hardware filter, so
> you should set IO 0x08 ~ 0x0f to 0xff for receiving all multicast packets
> without filtering them.
> 

Hello,

Few weeks later, does I have to do something or it will be fix in the next 
kernel ?

Regards

Nolwenn
--
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
françois romieu - Nov. 7, 2012, 7:06 p.m.
Nolwenn <donolwenn@gmail.com> :
[...]
> Few weeks later, does I have to do something or it will be fix in the next 
> kernel ?

You do not have anything to do.

It is included in David Miller's net branch and will thereof proceed into
Linus's main branch.

Patch

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index eb81da4..e0f1b8d 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -4271,8 +4271,8 @@  static void rtl_set_rx_mode(struct net_device *dev)
 		mc_filter[1] = swab32(data);
 	}
 
-	RTL_W32(MAR0 + 4, mc_filter[1]);
-	RTL_W32(MAR0 + 0, mc_filter[0]);
+	RTL_W32(MAR0 + 4, 0xffffffff);
+	RTL_W32(MAR0 + 0, 0xffffffff);
 
 	RTL_W32(RxConfig, tmp);
 }