On Sun, Feb 11, 2024 at 09:29:22PM +0000, Jonathan Stone wrote: > I don;t want to re-create the hack of having two different initialisers for > the IEE 802 (sic) [*] portions of "struct ethercom'. > A cleaner solution is to declare a new struct with all the members of 'struct > ethercom', except the 'struct ifnet ec_if; > 'struct ethercom' then becomes a struct with two members: a struct ifnet, and > the new struct (struct iee802_common?). > That allows clean separation of code which manipulates the additions in > today's "struct ethercom', from code which also manipulates struct ifnet.
We have a simmilar problem with net80211, where we are required to have a (mostly unused) struct ethercom for each virtual interface (in the new stack) just because of initialization and to be able to use vlan(4) on a wifi interface, see the thread (if you can call it that) on tech-net from September 2022, Subject: (non-)Equivalence of if_type == IFT_ETHER and (struct ethercom*) == (struct ifnet*) https://mail-index.netbsd.org/tech-net/2022/09/28/msg008338.html Now I don't know if vlan(4) is important for FFDI and probably bpf(4) users are not expecting ethernet frames from it, so things might be easier. Anyway, I am all for a cleaner overall separation of struct ethercom all over our network code. Martin