Split arprequest() into two parts, arpreq_alloc() and arpreq_send().
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 1 Oct 2008 09:16:18 +0000 (09:16 +0000)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 1 Oct 2008 09:16:18 +0000 (09:16 +0000)
commit77e3dc77d0f3ed5cc48ef9cdf7fd113e5d9ac518
treef92d3aed036d3f2a32abd6b41ad4b366cda4831e
parent69e8ff02d4ea555cf06de91bd2b553b39b462418
Split arprequest() into two parts, arpreq_alloc() and arpreq_send().
arprequest() simply calls these two functions sequencially.

Add arprequest_async(), which allocates the arp request using arpreq_alloc()
and then dispatch the real sending (arpreq_send()) to current CPU's netisr.
Callers of arprequest_async() do not need to worry about the ifp's serializer
state.  This function also makes sure that the network output happens in
TDF_NETWORK kernel thread.

Let arp_ifinit(), arp_ifinit2() and arp_rtrequest() call arprequest_async().
sys/netinet/if_ether.c