ieee802154: correct sifs handling and new defines
Subsystems (2)
Alexander Aring
maintainerv2 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
Alexander Aring
maintainerPATCH 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
@@ -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
Alexander Aring
maintainerPATCH v2 2/2 ieee802154: replace magic numbers by standard defines
In reply to Alexander AringThis 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
@@ -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
@@ -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
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 |