Split ifnet serialize step 1/many: Add if_{serialize,deserialize,tryserialize}()
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 5 Apr 2009 01:04:08 +0000 (09:04 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 12 Apr 2009 07:57:31 +0000 (15:57 +0800)
commita3dd34d2519ecf8970110832a595b0c98f259da1
tree3b1076fc6c2afccaa194f1cceaa990435162f596
parent9ed2596de74ffa394b92c821d7a4f5cfedb4a585
Split ifnet serialize step 1/many: Add if_{serialize,deserialize,tryserialize}()
function pointers to ifnet.

These three function pointers accept ifnet struct and ifnet_serialize
enumeration.

The ifnet_serialize enumeration indicates the serialization type:
IFNET_SERIALIZE_ALL:
    All of the serializers should be held.  Except for if_start and if_input,
    this enumeration must be used when call ifnet function pointers.
IFNET_SERIALIZE_TX:
    Only transmit serializer should be held.  This enumeration could be used
    when calling ifnet.if_start.
IFNET_SERIALIZE_RX:
    Only receive serializer should be held.  This enumeration could be used
    when calling ifnet.if_input.

If the NIC driver does not set these three function pointer, then if_attach()
will set them to the default ones: only one serializer (if_serializer) is used
and ifnet_serialize parameter is ignored.

Following several inline functions are added which are sheer wrappers of the
three ifnet serialize function pointers:
ifnet_serialize_{all,tx,rx}()
ifnet_deserialize_{all,tx,rx}()
ifnet_tryserialize_{all,tx,rx}()

All of the protocol layers and most of the pseudo drivers are converted.

Discussed-with: dillon@
41 files changed:
sys/bus/usb/usb_ethersubr.c
sys/dev/virtual/net/if_vke.c
sys/kern/kern_poll.c
sys/net/altq/altq_subr.c
sys/net/bpf.c
sys/net/bridge/bridgestp.c
sys/net/bridge/if_bridge.c
sys/net/gif/if_gif.c
sys/net/gre/if_gre.c
sys/net/i4b/driver/i4b_ipr.c
sys/net/if.c
sys/net/if_atmsubr.c
sys/net/if_loop.c
sys/net/if_var.h
sys/net/ppp/if_ppp.c
sys/net/sl/if_sl.c
sys/net/sppp/if_spppsubr.c
sys/net/stf/if_stf.c
sys/net/tap/if_tap.c
sys/net/tun/if_tun.c
sys/net/vlan/if_vlan.c
sys/net/vlan/if_vlan_ether.c
sys/netgraph/eiface/ng_eiface.c
sys/netgraph/fec/ng_fec.c
sys/netgraph/iface/ng_iface.c
sys/netinet/if_atm.c
sys/netinet/in.c
sys/netinet6/in6.c
sys/netinet6/ip6_mroute.c
sys/netinet6/scope6.c
sys/netproto/802_11/wlan/ieee80211.c
sys/netproto/802_11/wlan/ieee80211_proto.c
sys/netproto/802_11/wlan_ratectl/amrr/ieee80211_ratectl_amrr.c
sys/netproto/802_11/wlan_ratectl/onoe/ieee80211_ratectl_onoe.c
sys/netproto/atalk/at_control.c
sys/netproto/atm/atm_if.c
sys/netproto/ipx/ipx.c
sys/netproto/ipx/ipx_ip.c
sys/netproto/natm/natm.c
sys/netproto/ns/ns.c
sys/netproto/ns/ns_ip.c