On 2015/09/08 17:28, Carlos Fenollosa wrote:
>
> > On 07 Sep 2015, at 20:40, Stuart Henderson <[email protected]> wrote:
> >
> > On 2015/09/07 20:26, Landry Breuil wrote:
> >> I cant help you on the issue itself, but i can confirm you that i've
> >> been seeing the exact same issue with gem0 on my g4 mac mini here, and
> >> since some releases. randomly, gem0 just doesnt receive/send pkts
> >> anymore and needs to be downed/upped.
> >
> > Interesting - I don't see that on mine.
> >
> > Out of interest does your switch have flow control enabled? (you will
> > see rxpause and/or txpause in the ifconfig output). If it does, is there
> > any change if you disable it on the switch (if you can do so)?
> >
> > gem0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> > lladdr 00:0d:93:63:da:5a
> > priority: 0
> > groups: egress
> > media: Ethernet autoselect (100baseTX full-duplex)
> > status: active
>
> Yes, it seems to be the case:
>
> gem0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> lladdr 00:11:24:87:a7:64
> priority: 0
> groups: egress
> media: Ethernet autoselect (100baseTX full-duplex,rxpause,txpause)
> status: active
> inet 192.168.1.199 netmask 0xffffff00 broadcast 192.168.1.255
>
>
> I have a crappy telco router, I’m actually not sure if I can disable it
> there. There is a section on QoS, but the option is disabled.
> Could the driver be forced to disable flow control? At least I could try
> running it for a couple weeks to see if the bug is triggered again.
>
>
> Thanks a lot,
> Carlos
>
Flow control was a complete guess btw and might be unconnected.
This diff ought to disable it but my mac is 1500km away at the moment
so untested!
Landry, does yours show rxpause/txpause on this line?
Index: gem.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/gem.c,v
retrieving revision 1.112
diff -u -p -r1.112 gem.c
--- gem.c 24 Jun 2015 09:40:54 -0000 1.112
+++ gem.c 8 Sep 2015 15:43:51 -0000
@@ -240,7 +240,7 @@ gem_config(struct gem_softc *sc)
gem_mifinit(sc);
- mii_flags = MIIF_DOPAUSE;
+ mii_flags = 0;
/*
* Look for an external PHY.
@@ -905,7 +905,7 @@ gem_init_regs(struct gem_softc *sc)
bus_space_write_4(t, h, GEM_MAC_RX_CODE_VIOL, 0);
/* Set XOFF PAUSE time */
- bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0x1bf0);
+ bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0);
/*
* Set the internal arbitration to "infinite" bursts of the
@@ -1357,17 +1357,6 @@ gem_mii_statchg(struct device *dev)
v &= ~GEM_MAC_XIF_GMII_MODE;
}
bus_space_write_4(t, mac, GEM_MAC_XIF_CONFIG, v);
-
- /*
- * 802.3x flow control
- */
- v = bus_space_read_4(t, mac, GEM_MAC_CONTROL_CONFIG);
- v &= ~(GEM_MAC_CC_RX_PAUSE | GEM_MAC_CC_TX_PAUSE);
- if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_RXPAUSE) != 0)
- v |= GEM_MAC_CC_RX_PAUSE;
- if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_TXPAUSE) != 0)
- v |= GEM_MAC_CC_TX_PAUSE;
- bus_space_write_4(t, mac, GEM_MAC_CONTROL_CONFIG, v);
}
int