summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-10-29 20:34:34 (GMT)
committerMarcel Holtmann <marcel@holtmann.org>2014-10-29 22:07:45 (GMT)
commit90386a7e3bcce60b6b83d0d1bd65d7b55a77fa60 (patch)
treef8aa328bee0f9c5e5eae8eb0c45066a8f648ab55
parent92f45f5466ce75944071ae5d23732648048fa12a (diff)
downloadlinux-90386a7e3bcce60b6b83d0d1bd65d7b55a77fa60.tar.xz
mac802154: separate omit tx/rx flags
This patch splits the IEEE802154_HW_OMIT_CKSUM hardware flag into IEEE802154_HW_TX_OMIT_CKSUM and IEEE802154_HW_RX_OMIT_CKSUM. This is useful to deliver the received crc from the driver layer to the monitor interface. At the moment we can't do that without change the xmit handling. The received checksum should be visible in monitor mode only. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--include/net/mac802154.h10
-rw-r--r--net/mac802154/rx.c2
-rw-r--r--net/mac802154/tx.c2
3 files changed, 10 insertions, 4 deletions
diff --git a/include/net/mac802154.h b/include/net/mac802154.h
index 166ef6c5..bc1d40c 100644
--- a/include/net/mac802154.h
+++ b/include/net/mac802154.h
@@ -73,8 +73,8 @@ struct ieee802154_hw {
* however, so you are advised to review these flags carefully.
*/
-/* Indicates that receiver omits FCS and xmitter will add FCS on it's own. */
-#define IEEE802154_HW_OMIT_CKSUM 0x00000001
+/* Indicates that xmitter will add FCS on it's own. */
+#define IEEE802154_HW_TX_OMIT_CKSUM 0x00000001
/* Indicates that receiver will autorespond with ACK frames. */
#define IEEE802154_HW_AACK 0x00000002
/* Indicates that transceiver will support transmit power setting. */
@@ -94,6 +94,12 @@ struct ieee802154_hw {
#define IEEE802154_HW_AFILT 0x00000100
/* Indicates that transceiver will support promiscuous mode setting. */
#define IEEE802154_HW_PROMISCUOUS 0x00000200
+/* Indicates that receiver omits FCS. */
+#define IEEE802154_HW_RX_OMIT_CKSUM 0x00000400
+
+/* Indicates that receiver omits FCS and xmitter will add FCS on it's own. */
+#define IEEE802154_HW_OMIT_CKSUM (IEEE802154_HW_TX_OMIT_CKSUM | \
+ IEEE802154_HW_RX_OMIT_CKSUM)
/* This groups the most common CSMA support fields into one. */
#define IEEE802154_HW_CSMA (IEEE802154_HW_CCA_MODE | \
diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c
index 86394be..2aa80bd 100644
--- a/net/mac802154/rx.c
+++ b/net/mac802154/rx.c
@@ -255,7 +255,7 @@ void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb)
WARN_ON_ONCE(softirq_count() == 0);
- if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) {
+ if (!(local->hw.flags & IEEE802154_HW_RX_OMIT_CKSUM)) {
u16 crc;
if (skb->len < 2) {
diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c
index 77973a8..cc37b77 100644
--- a/net/mac802154/tx.c
+++ b/net/mac802154/tx.c
@@ -83,7 +83,7 @@ ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb)
struct net_device *dev = skb->dev;
int ret;
- if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) {
+ if (!(local->hw.flags & IEEE802154_HW_TX_OMIT_CKSUM)) {
u16 crc = crc_ccitt(0, skb->data, skb->len);
put_unaligned_le16(crc, skb_put(skb, 2));