freebsd-skq/sys/net
Marcel Moolenaar 62d76917b8 Introduce a procedural interface to the ifnet structure. The new
interface allows the ifnet structure to be defined as an opaque
type in NIC drivers.  This then allows the ifnet structure to be
changed without a need to change or recompile NIC drivers.

Put differently, NIC drivers can be written and compiled once and
be used with different network stack implementations, provided of
course that those network stack implementations have an API and
ABI compatible interface.

This commit introduces the 'if_t' type to replace 'struct ifnet *'
as the type of a network interface. The 'if_t' type is defined as
'void *' to enable the compiler to perform type conversion to
'struct ifnet *' and vice versa where needed and without warnings.
The functions that implement the API are the only functions that
need to have an explicit cast.

The MII code has been converted to use the driver API to avoid
unnecessary code churn. Code churn comes from having to work with
both converted and unconverted drivers in correlation with having
callback functions that take an interface. By converting the MII
code first, the callback functions can be defined so that the
compiler will perform the typecasts automatically.

As soon as all drivers have been converted, the if_t type can be
redefined as needed and the API functions can be fix to not need
an explicit cast.

The immediate benefactors of this change are:
1.  Juniper Networks - The network stack implementation in Junos
    is entirely different from FreeBSD's one and this change
    allows Juniper to build "stock" NIC drivers that can be used
    in combination with both the FreeBSD and Junos stacks.
2.  FreeBSD - This change opens the door towards changing ifnet
    and implementing new features and optimizations in the network
    stack without it requiring a change in the many NIC drivers
    FreeBSD has.

Submitted by:	Anuranjan Shukla <anshukla@juniper.net>
Reviewed by:	glebius@
Obtained from:	Juniper Networks, Inc.
2014-06-02 17:54:39 +00:00
..
bpf_buffer.c Changes to resolve races in bpfread() and catchpacket() that, at worst, 2012-12-10 16:14:44 +00:00
bpf_buffer.h
bpf_filter.c Include strings.h so that bpf_filter.c can be built in userland. 2014-03-19 13:10:25 +00:00
bpf_jitter.c
bpf_jitter.h
bpf_zerocopy.c
bpf_zerocopy.h
bpf.c Convert the random entropy harvesting code to use a const void * pointer 2013-11-01 20:53:49 +00:00
bpf.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
bpfdesc.h Changes to resolve races in bpfread() and catchpacket() that, at worst, 2012-12-10 16:14:44 +00:00
bridgestp.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
bridgestp.h
ethernet.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
fddi.h
firewire.h
flowtable.c Pacify gcc. 2014-03-05 02:35:15 +00:00
flowtable.h Add my copyright to flowtable. 2014-02-17 12:07:17 +00:00
ieee8023ad_lacp.c Fix a panic caused by doing "ifconfig -am" while a lagg is being destroyed. 2014-05-02 16:24:09 +00:00
ieee8023ad_lacp.h Break out the static, global LACP debug options into a per-lagg unit 2013-07-26 19:41:13 +00:00
ieee_oui.h Bump bhyve allocation up to 20 bits to avoid 2014-05-20 02:59:13 +00:00
if_arc.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_arcsubr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_arp.h Migrate structs arpstat, icmpstat, mrtstat, pimstat and udpstat to PCPU 2013-07-09 09:50:15 +00:00
if_atm.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_atmsubr.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_bridge.c Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
if_bridgevar.h
if_clone.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
if_clone.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
if_dead.c Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_debug.c
if_disc.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_dl.h Simplify filling sockaddr_dl structure for if_resolvemulti() 2014-01-18 23:24:51 +00:00
if_edsc.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_enc.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_enc.h
if_epair.c Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
if_ethersubr.c Several years after initial development, merge prototype support for 2014-03-15 00:57:50 +00:00
if_faith.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_fddisubr.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_fwsubr.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_gif.c ANSIfy function defintions. 2013-11-15 12:12:50 +00:00
if_gif.h Add const qualifier to the dst parameter of the ifnet if_output method. 2013-04-26 12:50:32 +00:00
if_gre.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_gre.h
if_iso88025subr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_lagg.c Fix build for non-INET that was broken by r264469. 2014-04-15 13:28:54 +00:00
if_lagg.h Multi-queue NIC drivers and multi-port lagg tend to use the same lower 2013-12-30 01:32:17 +00:00
if_llatbl.c Back out r249318, r249320 and r249327 due to a heisenbug most 2013-05-06 16:42:18 +00:00
if_llatbl.h Remove include opt_ofed.h since OFED is unifdef'd. 2013-08-27 16:45:00 +00:00
if_llc.h
if_loop.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_media.c
if_media.h Introduce a procedural interface to the ifnet structure. The new 2014-06-02 17:54:39 +00:00
if_mib.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_mib.h
if_pflog.h
if_pfsync.h Remove more constants related to static sysctl nodes. The MAXID constants 2014-02-25 18:44:33 +00:00
if_sppp.h
if_spppfr.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_spppsubr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_stf.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_stf.h
if_tap.c Teach every SIOCGIFSTATUS provider to fill in ifs->ascii anyway. 2014-01-07 15:59:33 +00:00
if_tap.h
if_tapvar.h
if_tun.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_tun.h
if_types.h Remove IPX support. 2014-03-14 02:58:48 +00:00
if_var.h Introduce a procedural interface to the ifnet structure. The new 2014-06-02 17:54:39 +00:00
if_vlan_var.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
if_vlan.c Vlan did not set the value of if_hw_tsomax, so when vlan 2014-04-15 21:48:35 +00:00
if.c Introduce a procedural interface to the ifnet structure. The new 2014-06-02 17:54:39 +00:00
if.h Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
ifq.h Introduce a procedural interface to the ifnet structure. The new 2014-06-02 17:54:39 +00:00
iso88025.h Garbage collect long time obsoleted (or never used) stuff from routing API. 2014-03-15 06:49:32 +00:00
netisr_internal.h
netisr.c Fix macro name in comment. 2013-11-26 15:23:56 +00:00
netisr.h Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
netmap_user.h This new version of netmap brings you the following: 2014-02-15 04:53:04 +00:00
netmap.h This new version of netmap brings you the following: 2014-02-15 04:53:04 +00:00
pfil.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
pfil.h Whitespace, style cleanups, and improved comments. 2013-08-24 12:03:24 +00:00
pfkeyv2.h
pfvar.h Backport from projects/pf r263908: 2014-04-20 09:17:48 +00:00
ppp_defs.h Allow certain headers to be included more easily. 2013-05-21 21:20:10 +00:00
radix_mpath.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
radix_mpath.h
radix.c Fix rnh_walktree_from() function (patch from kern/174959). 2014-05-01 15:04:32 +00:00
radix.h Revert previous commit (262727) and bounce patch back to the 2014-03-04 23:55:04 +00:00
raw_cb.c vnet.h needs to be included before raw_cb.h. Now it compiles due to 2013-10-25 19:49:03 +00:00
raw_cb.h
raw_usrreq.c vnet.h needs to be included before raw_cb.h. Now it compiles due to 2013-10-25 19:49:03 +00:00
route.c Fix unintended KBI change from r264905. Add _fib versions of 2014-05-29 21:03:49 +00:00
route.h Pass radix head ptr along with rte to rtexpunge(). 2014-05-03 16:28:54 +00:00
rtsock.c Fix unintended KBI change from r264905. Add _fib versions of 2014-05-29 21:03:49 +00:00
sff8472.h Convert #defines to enums so that the values are visible in the debugger. 2014-01-02 21:30:59 +00:00
slcompress.c
slcompress.h
vnet.c Remove identical vnet sysctl handlers, and handle CTLFLAG_VNET 2014-02-07 13:47:33 +00:00
vnet.h Fixup for r261590 (vnet sysctl handlers cleanup). 2014-02-09 08:13:17 +00:00
zlib.c Juggle some internal symbols from our antique zlib (that originally came 2013-01-06 14:59:59 +00:00
zlib.h Juggle some internal symbols from our antique zlib (that originally came 2013-01-06 14:59:59 +00:00
zutil.h