Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: wm devices don't work under current amd64



I wrote:

> This is the laptop, which doesn't use vlans.  The other machine, the
> Poweredge 2650, is my main server, and does all its networking over a
> vlan trunk on its wm0 interface.  I suspect that its problem is
> different, since it works with a -current from October 10th, whereas
> the laptop doesn't.

I was right.  The 2650 behaves like the machine Tobias Nygren described,
and his workaround works for it, too.  So, to summarize:

The Dell Latitude E6400 laptop has an 82801I (8086:10f5) that needs a
kludge in if_wm.c to keep it from using MSI.  On MSI, it generates no
interrupts during use, and thus cannot receive incoming packets.  With
INTx signalling, it works fine.

The Dell PowerEge 2650 server has an i82541GI (8086:1076) that after
boot and configuration (whether or not I use VLANs) needs to be briefly
put into promiscuous mode for the interface to start working.  It does
not use MSI; it already has that kludge in place in if_wm.c, due to an
erratum from Intel warning against using it.

Here are my hacks to get these two machines to boot amd64-current
without any manual intervention:

For the E6400:

--- if_wm.c	9 Feb 2016 08:32:11 -0000	1.391
+++ if_wm.c	10 Mar 2016 08:44:18 -0000
@@ -1525,7 +1525,7 @@
 	 *  82571 & 82572: Errata 63
 	 */
 	if ((sc->sc_type <= WM_T_82541_2) || (sc->sc_type == WM_T_82571)
-	    || (sc->sc_type == WM_T_82572))
+	    || (sc->sc_type == WM_T_82572) || (sc->sc_type == WM_T_ICH9))
 		pa->pa_flags &= ~PCI_FLAGS_MSI_OKAY;
 
 	if ((sc->sc_type == WM_T_82575) || (sc->sc_type == WM_T_82576)

On the 2650, I appended this to the last ifconfig.* file to be read:

!/bin/sleep 5
!/usr/sbin/tcpdump -i wm0 -c 5

I could probably do without the sleep, and limit the dump to one packet.

-tih
-- 
Elections cannot be allowed to change anything.  --Dr. Wolfgang Schäuble


Home | Main Index | Thread Index | Old Index