Skip to contentSkip to conversation

ieee802154: correct sifs handling and new defines

PATCH Superseded Alexander Aring 2 participants 4 messages Mar 4, 2015

Subsystems (2)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Alexander Aring

author maintainer
#0 lore raw

v2 cover 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 v2:
- squash patch 3 into 2, which was suggested by Marc Kleine-Budde.

Alexander Aring (2):
mac802154: correct max sifs size handling
ieee802154: replace magic numbers by standard defines

 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 v2 1/2 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.

---
 net/mac802154/util.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
net/mac802154/util.c +11 -1
index 5fc9790..04e13d9 100644
@@ -65,8 +65,18 @@ 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 = 16;
+		else
+			max_sifs_size = 18;
+
+		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
author maintainer
#2 lore raw

PATCH v2 2/2 ieee802154: replace magic numbers by standard defines

In reply to Alexander Aring

This patch adds a define 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       | 5 +++--
 2 files changed, 5 insertions(+), 2 deletions(-)
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 +3 -2
index 04e13d9..150bf80 100644
@@ -72,9 +72,10 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb,
 		 * part of skb->len.
 		 */
 		if (hw->flags & IEEE802154_HW_TX_OMIT_CKSUM)
-			max_sifs_size = 16;
+			max_sifs_size = IEEE802154_MAX_SIFS_FRAME_SIZE -
+					IEEE802154_FCS_LEN;
 		else
-			max_sifs_size = 18;
+			max_sifs_size = IEEE802154_MAX_SIFS_FRAME_SIZE;
 
 		if (skb->len > max_sifs_size)
 			hrtimer_start(&local->ifs_timer,
Signature · 1 line
2.3.0
#3 lore raw

Re: [PATCHv2 bluetooth-next 2/2] ieee802154: replace magic numbers by standard defines

Quoted 2 lines · Alexander Aring

This patch adds a define for the max sifs frame size value and frame check sequence according to 802.15.4 standard.

and now squash 2 into 1 :) It make no sense to first add magic numbers and then replace them.

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   |