It is important that we don't release the kernel lock between issuing a
wakeup and clearing the PG_BUSY and PG_WANTED flags, so try to keep those
bits as close together and defenitely avoid calling random code in between.

ok guenther@, tedu@
Call chacha_ivsetup() immediately before chacha_encrypt_bytes() - this
makes it easier to verify that chacha_encrypt_bytes() is only called once
per chacha_ivsetup() call.

ok djm@
sending a heavily fragmented packet will cause the bus_dmamap_load
in bge_encap to fail because the dmamap lacks space, not necessarily
because the ring is full. however, bge_encap failure sets the OACTIVE
flag on the interface and keeps the packet at the start of the send
queue.

the next time we try to fill the tx ring we'll try to load the same
packet and fail. an empty tx ring means bge_txeof hasnt got anything
which is where the OACTIVE condition is cleared.

this diff adds handling of fragmented packets via m_defrag.

this might fix the issues landry@ has been complaining about on his
bulk build machines. i can reproduce the above problem in contrived
circumstances here and this diff fixes it, so its going in so landry@
is forced to test it.