Skip to contentSkip to conversation

ieee802154: correct sifs handling and new defines

PATCH Superseded Alexander Aring 3 participants 4 messages Mar 4, 2015 – Mar 14, 2015

Subsystems (2)
lore
Share & tools
lore

Alexander Aring

author maintainer
#0 lore raw

PATCH v3 1/1 ieee802154: correct sifs handling and new defines

Hi,

this series corrects the interframe spacing time when IEEE802154_HW_TX_OMIT_CKSUM phy flag is set. This flag is set when the transceiver sets the crc on his own.

Also I add some defines from 802.15.4 standard. There is still some magic values for IEEE802154_FCS_LEN everywhere in mac802154 implementation. We should replace these values with IEEE802154_FCS_LEN later.

- Alex

changes since v3:
- squash patch 2 into 1, which was suggested by Marc Kleine-Budde.

changes since v2:
- squash patch 3 into 2, which was suggested by Marc Kleine-Budde.

Alexander Aring (1):
mac802154: correct max sifs size handling

 include/linux/ieee802154.h |  2 ++
 net/mac802154/util.c       | 13 ++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)
Signature · 1 line
2.3.0
author maintainer
#1 lore raw

PATCH v3 1/1 mac802154: correct max sifs size handling

This patch fix the max sifs size correction when the IEEE802154_HW_TX_OMIT_CKSUM flag is set. With this flag the sk_buff doesn't contain the CRC, because the transceiver will add the CRC while transmit.

Also add some defines for the max sifs frame size value and frame check sequence according to 802.15.4 standard.

---
 include/linux/ieee802154.h |  2 ++
 net/mac802154/util.c       | 13 ++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)
include/linux/ieee802154.h +2 -0
index 40b0ab9..8872ca1 100644
@@ -30,6 +30,7 @@
 #define IEEE802154_MTU			127
 #define IEEE802154_ACK_PSDU_LEN		5
 #define IEEE802154_MIN_PSDU_LEN		9
+#define IEEE802154_FCS_LEN		2
 
 #define IEEE802154_PAN_ID_BROADCAST	0xffff
 #define IEEE802154_ADDR_SHORT_BROADCAST	0xffff
@@ -39,6 +40,7 @@
 
 #define IEEE802154_LIFS_PERIOD		40
 #define IEEE802154_SIFS_PERIOD		12
+#define IEEE802154_MAX_SIFS_FRAME_SIZE	18
 
 #define IEEE802154_MAX_CHANNEL		26
 #define IEEE802154_MAX_PAGE		31
net/mac802154/util.c +12 -1
index 5fc9790..150bf80 100644
@@ -65,8 +65,19 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb,
 {
 	if (ifs_handling) {
 		struct ieee802154_local *local = hw_to_local(hw);
+		u8 max_sifs_size;
 
-		if (skb->len > 18)
+		/* If transceiver sets CRC on his own we need to use lifs
+		 * threshold len above 16 otherwise 18, because it's not
+		 * part of skb->len.
+		 */
+		if (hw->flags & IEEE802154_HW_TX_OMIT_CKSUM)
+			max_sifs_size = IEEE802154_MAX_SIFS_FRAME_SIZE -
+					IEEE802154_FCS_LEN;
+		else
+			max_sifs_size = IEEE802154_MAX_SIFS_FRAME_SIZE;
+
+		if (skb->len > max_sifs_size)
 			hrtimer_start(&local->ifs_timer,
 				      ktime_set(0, hw->phy->lifs_period * NSEC_PER_USEC),
 				      HRTIMER_MODE_REL);
Signature · 1 line
2.3.0
Acked-by on v3 1/1
#2 lore raw
In reply to Alexander Aring
Quoted 9 lines · Alexander Aring

Hi,

this series corrects the interframe spacing time when IEEE802154_HW_TX_OMIT_CKSUM phy flag is set. This flag is set when the transceiver sets the crc on his own.

Also I add some defines from 802.15.4 standard. There is still some magic values for IEEE802154_FCS_LEN everywhere in mac802154 implementation. We should replace these values with IEEE802154_FCS_LEN later.

Marc

Signature · 4 lines
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |
#3 lore raw
In reply to Alexander Aring

Hi Alex,

Quoted 16 lines

this series corrects the interframe spacing time when IEEE802154_HW_TX_OMIT_CKSUM phy flag is set. This flag is set when the transceiver sets the crc on his own.

Also I add some defines from 802.15.4 standard. There is still some magic values for IEEE802154_FCS_LEN everywhere in mac802154 implementation. We should replace these values with IEEE802154_FCS_LEN later.

- Alex

changes since v3:
- squash patch 2 into 1, which was suggested by Marc Kleine-Budde.

changes since v2:
- squash patch 3 into 2, which was suggested by Marc Kleine-Budde.

Quoted 6 lines

Alexander Aring (1):
mac802154: correct max sifs size handling

include/linux/ieee802154.h | 2 ++
net/mac802154/util.c | 13 ++++++++++++-

2 files changed, 14 insertions(+), 1 deletion(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel