mac802154: rework sdata state change to running

This patch reworks the handling for setting the state like mac80211. We
use bit's instead a bool variable. The mutex is not needed because it use
test and set bits which are atomic operations.
mac802154: tx: move xmit callback to tx file

This patch moves the mac802154_wpan_xmit function into the tx.c file.
Currently this callback is named wpan to inidcating that this callback is
for WPAN (NODE) virtual interfaces.

In future this should be a generic function, we do a switch case over
the interface type variable to make different interface type handling
possible.
mac802154: make struct ieee802154_ops const

The ieee802154_ops should never be changed during runtime.
mac802154: add netdev qeue helpers

This patch adds a new file net/mac802154/util.c which contains utility
functions for drivers, etc.
This file contains functions to start and stop queues for all virtual
interfaces, this is useful for asynchronous handling in driver level.
mac802154: tx: remove kmalloc in xmit hotpath

This patch removes the kmalloc allocation for workqueue data. This patch
replaces the kmalloc and uses the control block of skb. The control block
has enough space and isn't use by any other layer in this case.
mac802154: tx: remove xmit channel context switch

This patch removes the channel hoping feature before xmit. There are
several issues to provide a real channel hoping (timing requirements,
etc.). It's not very useful at the moment. In my opinion this was added
for support RF4CE and doing some userspace magic to do some channel hoping.

We don't have any known kernelspace protocol which really use this
featyre. We simply drop this feature now.
mac802154: tx: add drv_xmit to driver-ops

This patch adds a new helper for calling the xmit callback from
ieee802154_ops.
mac802154: tx: fix error handling on xmit

In case of an error we should call kfree_skb instead of dev_kfree_skb or
consume_skb.
mac802154: tx: add support for xmit_async callback

This patch renames the existsing xmit callback to xmit_sync and
introduces an asynchronous xmit_async function. If ieee802154_ops
doesn't provide the xmit_async callback, then we have a fallback to
the xmit_sync callback.
at86rf230: asynchrous xmit handling

This patch converts the sync xmit handling into an async xmit handling. The
driver was already prepared for this step, all other drivers need more
work to implement a xmit_async function.
ieee802154: add valid frame length helper

This patch adds a generic valid frame length check function helper. This
is useful to check the length field after receiving. For example the
at86rf231 doesn't filter invalid frame length. Sometimes the CRC can also
be correct. If we get the lqi value with an invalid frame length the
kernel may crash, because we dereference an invalid pointer.
at86rf230: use ieee802154_is_valid_frame_len

This patch adds the ieee802154_is_valid_frame_len function to validate
the frame length. If the frame length is invalid we use the maximum
payload to receive also corrupted frames in monitor mode.
at86rf230: improve receive handling

Current behaviour it to copy the frame inclusive CRC into a skb, then
remove the CRC from the skb. This patch optimizes this by not copying
the CRC in the first place.