Initialize RX/TX on re(4) slightly later; it appears that newer chips
authorsthen <sthen@openbsd.org>
Mon, 13 Apr 2015 20:45:49 +0000 (20:45 +0000)
committersthen <sthen@openbsd.org>
Mon, 13 Apr 2015 20:45:49 +0000 (20:45 +0000)
commitd9af44ecef79aadd04070e76e19ca56f3e4673e2
tree84e79717b6e92508e08a835cb4f2ad7c567c8dff
parentb7c47056124198330aab53e194562c60ee0987d3
Initialize RX/TX on re(4) slightly later; it appears that newer chips
don't setup DMA correctly until more configuration has been done -
enabling RX too soon causes DMA to bad places. KVM corruption problems
reported by Adam Wolk on Lenovo G50-70 (RTL8111GU).

Diff derived by Brad from FreeBSD commit; see bz# 197535 and 193743, inspired by
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d6e572911a4cb2b9fcd1c26a38d5317a3971f2fd

Tested on the following by Brad, Adam Wolk, box963 at gmail, Jim Smith

re0 at pci4 dev 0 function 0 "Realtek 8168" rev 0x03: RTL8168D/8111D (0x2800), apic 2 int 16, address 00:0a:cd:1a:86:04
re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x0c: RTL8168G/8111G (0x4c00), msi, address 80:ee:73:76:8e:8a
re0 at pci0 dev 3 function 0 "Realtek 8169" rev 0x10: RTL8110S (0x0400), ivec 0x78c, address 00:22:3f:ee:fa:25
re0 at pci1 dev 0 function 0 "Realtek 8168" rev 0x06: RTL8168E/8111E (0x2c00), msi, address 00:0d:b9:31:2e:88
re0 at pci1 dev 0 function 0 "Realtek 8168" rev 0x10: RTL8168GU/8111GU (0x5080), msi, address 68:f7:28:18:35:8e

ok mpi@ dlg@
sys/dev/ic/re.c