Permalink
ecd3638 Oct 22, 2018
2 contributors

Users who have contributed to this file

@brooksdavis @awilfox
150 lines (125 sloc) 5.78 KB
authors state
Brooks Davis <brooks@freebsd.org>
vote

FCP 101: Deprecation and removal of 10/100 Ethernet drivers

Deprecate most 10 and 10/100Mbps Ethernet drivers and remove them before FreeBSD 13.

Problem Statement

Each network driver creates drag for the project as we attempt to improve the network stack or provide new features such as expanded 32-bit compatibility. For example, the author has edited every single NIC driver more than once in the past year to update management (ioctl) interfaces. We could improve this situation by converting drivers to iflib, but each additional driver takes work.

10 and 100 megabit Ethernet drivers are largely irrelevant today and we have a significant number of them in the tree. The ones that are no longer used and/or are not known to be working need to be removed due to the significant ongoing 'tax' on new development.

For at least a decade, most systems (including small embedded systems) have shipped with gigabit Ethernet devices and virtual machines commonly emulate popular gigabit devices. We wish to retain support for popular physical and virtual devices while removing support for uncommon ones. With a few exceptions these drivers are unlikely to be used by our user base by the time FreeBSD 12 is obsolete.

Proposed Solution

We propose to deprecate devices which are not sufficiently popular. This will entail:

  • (October 2018) Send this list to freebsd-net and freebsd-stable.
  • (Before FreeBSD 12.0-RELEASE - October 2018) Update the manpages and attach routines for each device to be removed and merge those changes to FreeBSD 12.
  • (One month after FreeBSD 12.0-RELEASE - January 2019) Remind freebsd-net and freebsd-stable users of pending deletion.
  • (Three months after FreeBSD 12.0-RELEASE - March/April 2019) Delete deprecated devices.

Through out this process, solicit feedback on additions to the exception list and this document will be updated as required. Drivers can have their deprecation notices removed at any time if it is justified. For a device to be placed on the exception list the device must meet one of the following criteria:

  • Popular in applications where it is likely to be deployed beyond the support lifetime of FreeBSD 12 (late 2023).
    • 5 reports of uses in the wild on machines running or expected to promptly upgrade to FreeBSD 12 will be deemed to satisfy the "popular" requirement.
  • Required to make a well supported embedded or emulation platform usable.
  • Ported to use iflib (reducing future maintenance cost.)

Exceptions to removal

Device Reason
bfe Cleared the popularity bar during feedback.
dc Popular device for CardBus card.
fxp Popular device long recommended by the project.
hme Built in interface on many supported sparc64 platforms.
le Emulated by QEMU, alternatives don't yet work for mips64.
rl Popular in the P-III era and reported to ship in embedded systems.
sis Soekris Engineering net45xx, net48xx, lan1621, and lan1641.
smc ARM Foundation Model simulator.
ste Deployed 2-/4-port cards are hard to replace.
vr Soekris Engineering net5501, some Asus motherboards.
vte Still shipping in embedded systems, GbE capable (not in tree).
xl Popular device for CardBus card.

Note: USB devices have been excluded from consideration in this round.

Device to be removed

ae, bm, cs, de, dme, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb, xe

Summary of discussions and supporting data

The discussing this FCP (primarily on FreeBSD-arch) resulted in 106 emails. There was one request to restrict deprecation to 10Mbps devices and a few calls for a much shorter list. Based on the discussions we moved a number of devices to the STAY list. Some interest was expressing in doing iflib converstions, but documentation on the process is currently lacking. Most interest centered around rl which will remain the tree.

I've tallied the results below breaking them down between mentions of systems people intend to run 12-RELEASE on and other mentions of actual systems (I've ignored entirely hypothetical mentions along the lines of "XXX used to be really popular".)

Driver Will run 12 Other Notes
ae 2 2
at 0 1
bfe 5 0 Popular, moved to STAY list
de 0 0 One mention without context
ed 1 2
ep 0 1
pcn 1 0
rl 6+ 1 Popular, moved to STAY list
sf 0 1
vx 0 1

NYCBUG dmesg survey (as of 2018-10-18)

Warner Losh solicited posts to https://dmesgd.nycbug.org/ and produced the following data on drivers considered in this FCP. The data is thin and certainly contains bias due to the manual and voluntary submission process, but it is the data we have.

Driver 8.x 9.x 10.x 11.x 12.x
ae 0 0 0 0 0
bfe 1 0 0 0 1
bm 0 0 0 0 0
cs 0 0 0 0 0
de 0 0 0 1 0
dme 0 0 0 0 0
ed 0 0 0 0 0
ep 0 0 0 0 0
ex 0 0 0 0 0
fe 0 0 0 0 0
pcn 0 0 0 0 0
sf 0 0 0 0 0
sn 0 0 0 0 0
tl 0 0 0 0 0
tx 0 0 0 0 0
txp 0 0 0 0 0
vx 0 0 0 0 0
wb 0 0 0 0 0
xe 0 0 0 0 0
rl 2 1 1 5 1
fxp 3 2 1 6 2
xl 1 0 0 3 0
samples 57 55 178 502 183

Note to users of deprecated devices

If you are here because you see a deprecation notice for hardware you are using, please report your use to the author of this FCP for tabulation. Also, please consider submitting your dmesg to https://dmesgd.nycbug.org/.