ifsq: Let ifaltq_subque know its related hardware TX queue's serializer
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 15 Mar 2013 05:57:21 +0000 (13:57 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 15 Mar 2013 07:58:17 +0000 (15:58 +0800)
commitbfefe4a6d6b571306fcc5dc75e8a9c476234dc4d
tree320a2e3e107d07273a3afad83f8b19b87a31e510
parent58ea7d2c0f0a1f6390214dc60c5cfaf07456dca8
ifsq: Let ifaltq_subque know its related hardware TX queue's serializer

This avoids following operations on packet transmission hot path:
- Dereferening device driver supplied serialize function pointers
- Locating hardware TX queue's serializer

Comparing to the lwkt_serialize functions, the above two operations are
costful.

Driver changes:
- For device drivers which use the default ifnet serializer, no additional
  code will be needed, if_attach() will assign ifnet serializer to
  ifaltq_subque.
- For device drivers which use independent serializers for main function,
  RX queues and TX queues, ifsq_set_hw_serialize() must be called to
  properly assign the hardware TX queue's serializer to ifaltq_subque.
  Drivers in this category are bce(4), emx(4), igb(4) and jme(4).
23 files changed:
sys/dev/netif/bce/if_bce.c
sys/dev/netif/emx/if_emx.c
sys/dev/netif/igb/if_igb.c
sys/dev/netif/jme/if_jme.c
sys/net/altq/altq_cbq.c
sys/net/altq/altq_subr.c
sys/net/altq/if_altq.h
sys/net/bridge/if_bridge.c
sys/net/gif/if_gif.c
sys/net/gre/if_gre.c
sys/net/if.c
sys/net/if_var.h
sys/net/ifq_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/tun/if_tun.c
sys/net/vlan/if_vlan.c
sys/netgraph/fec/ng_fec.c
sys/netgraph/iface/ng_iface.c
sys/netproto/atm/atm_if.c
sys/netproto/ipx/ipx_ip.c