freebsd-dev/sys
Bjoern A. Zeeb 5b628e0c26 MFC r196738:
In case an upper layer protocol tries to send a packet but the
  L2 code does not have the ethernet address for the destination
  within the broadcast domain in the table, we remember the
  original mbuf in `la_hold' in arpresolve() and send out a
  different packet with an arp request.
  In case there will be more upper layer packets to send we will
  free an earlier one held in `la_hold' and queue the new one.

  Once we get a packet in, with which we can perfect our arp table
  entry we send out the original 'on hold' packet, should there
  be any.
  Rather than continuing to process the packet that we received,
  we returned without freeing the packet that came in, which
  basically means that we leaked an mbuf for every arp request
  we sent.

  Rather than freeing the received packet and returning, continue
  to process the incoming arp packet as well.
  This should (a) improve some setups, also proxy-arp, in case it was an
  incoming arp request and (b) resembles the behaviour FreeBSD had
  from day 1, which alignes with RFC826 "Packet reception" (merge case).

  Rename 'm0' to 'hold' to make the code more understandable as
  well as diffable to earlier versions more easily.

  Handle the link-layer entry 'la' lock comepletely in the block
  where needed and release it as early as possible, rather than
  holding it longer, down to the end of the function.

  Found by:			pointyhat, ns1
  Bug hunting session with:	erwin, simon, rwatson
  Tested by:			simon on cluster machines
  Reviewed by:			ratson, kmacy, julian

Approved by:	re (kib)
2009-09-02 16:35:57 +00:00
..
amd64 MFC r196653: 2009-09-02 10:39:46 +00:00
arm - Merge r196246: 2009-08-15 15:18:29 +00:00
boot MFC: 196326 2009-08-17 15:39:47 +00:00
bsm Import OpenBSM 1.1p1 from vendor branch to 8-CURRENT, populating 2009-07-17 14:02:20 +00:00
cam MFC r196657: 2009-09-01 12:04:43 +00:00
cddl MFC r196395: 2009-08-20 00:08:58 +00:00
compat MFC r196653: 2009-09-02 10:39:46 +00:00
conf MFC r196435: 2009-08-26 22:32:14 +00:00
contrib MFC r196551: 2009-08-28 20:26:00 +00:00
crypto Changed to M_NOWAIT when reallocing psc_buf in padlock_sha_update(), 2009-05-27 09:52:12 +00:00
ddb Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
dev MFC: r196489,196498 2009-09-02 02:12:07 +00:00
fs MFC r196460 2009-09-01 20:58:41 +00:00
gdb
geom MFC rev 196333: 2009-08-17 16:24:50 +00:00
gnu Fix the build by using proper format. 2009-06-25 16:48:13 +00:00
i386 MFC r196653: 2009-09-02 10:39:46 +00:00
ia64 MFC rev 196268: 2009-08-16 02:12:13 +00:00
isa MFC 196520: 2009-08-27 16:34:04 +00:00
kern MFC r196653: 2009-09-02 10:39:46 +00:00
kgssapi When the KOBJMETHOD() macro was updated, it resulted in the 2009-06-14 17:33:46 +00:00
libkern done method is supposed to return int. 2009-06-22 22:09:18 +00:00
mips MFC r196196: 2009-08-13 17:54:11 +00:00
modules MFC r196295: 2009-08-17 09:03:47 +00:00
net MFC r196633: 2009-08-31 09:44:07 +00:00
net80211 MFC r196316: 2009-08-17 13:00:32 +00:00
netatalk Merge r196121 from head to stable/8: 2009-08-13 14:50:39 +00:00
netgraph Merge r196481 from head to stable/8: 2009-08-28 20:06:02 +00:00
netinet MFC r196738: 2009-09-02 16:35:57 +00:00
netinet6 MFC r196649 2009-08-30 22:44:12 +00:00
netipsec Merge r196481 from head to stable/8: 2009-08-28 20:06:02 +00:00
netipx Use queue(9) instead of hand-crafted link lists for the global IPX 2009-06-24 20:57:50 +00:00
netnatm Reimplement the netisr framework in order to support parallel netisr 2009-06-01 10:41:38 +00:00
netncp
netsmb Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
nfs Revert rev 192323 (nfs_common.c only): 2009-07-12 03:53:52 +00:00
nfsclient Merge r196481 from head to stable/8: 2009-08-28 20:06:02 +00:00
nfsserver Remove the old kernel RPC implementation and the NFS_LEGACYRPC option. 2009-06-30 19:03:27 +00:00
nlm Since svc_[dg|vc|tli|tp]_create() did not hold a reference count on the 2009-06-17 22:50:26 +00:00
opencrypto Fix cryptodev UIO creation. 2009-05-23 13:23:46 +00:00
pc98 MFC 196403: Temporarily revert the new-bus locking for 8.0 release. 2009-08-20 20:23:28 +00:00
pci MFC r196516: 2009-08-28 17:34:22 +00:00
powerpc MFC r196196: 2009-08-13 17:54:11 +00:00
rpc MFC r196503: 2009-08-28 19:12:44 +00:00
security Merge r196122 from head to stable/8: 2009-08-13 15:01:50 +00:00
sparc64 MFC r196196: 2009-08-13 17:54:11 +00:00
sun4v MFC r196196: 2009-08-13 17:54:11 +00:00
sys MFC r196653: 2009-09-02 10:39:46 +00:00
tools - Increase dynamic range of filter coefficients from 28bit to 30bit. 2009-07-05 18:15:06 +00:00
ufs MFC r196206: 2009-08-14 11:22:09 +00:00
vm MFC 196637: 2009-09-01 15:50:07 +00:00
xdr MFC r196149: 2009-08-12 20:30:27 +00:00
xen MFC 196403: Temporarily revert the new-bus locking for 8.0 release. 2009-08-20 20:23:28 +00:00
Makefile Remove the unmaintained University of Michigan NFSv4 client from 8.x 2009-05-22 12:35:12 +00:00