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 inidcates that this callback is
for WPAN (NODE) virtual interfaces.

In future this should be a generic function, we do a switch case over
interface type variable to make different interface type handling.
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.
In future the ieee802154_xmit_complete function should be contain a
delay for interfame spacing time, for now we don't provide this
information inside the mac layer.
mac802154: tx: remove kmalloc in xmit hotpath

This patch removes the kmalloc allocation for workqueue data. This patch
replace the kmalloc and use the control block of skb. The control block
have 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

If error occur we should call kfree_skb instead of dev_kfree_skb or
consume_skb.
mac802154: tx: add support for async xmit callback

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

This patch change the sync xmit handling to an async xmit handling. The
driver was mostly prepared to do this step, all other drivers needs an
async spi handling to provide that.
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 be
also correct. If we get the lqi value with a invalid frame length the
kernel can be crash, because we dereference an invalid pointer.
at86rf230: use ieee802154_is_valid_frame_len

This patch use 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 is copy frame inklusive CRC into skb, then remove the
CRC from the skb. This patch provide that we doesn't copy the CRC into
the skb. It's a slighty improving of this handling.