Skip to content

Commit fb72e8e

Browse files
author
Arto Kinnunen
committed
Squashed 'connectivity/nanostack/sal-stack-nanostack/' changes from 3183d87..0903b81
0903b81 Merge remote-tracking branch 'origin/release_internal' into release_external 51429c9 FHSS WS: api function to set TX allowance level (#2612) 01b1188 Fix Child NUD with long ARO registrations 20b49ce Optimize out of memory handler to remove more memory in EF mode f1b03bc FHSS WS: Allow transmitting unicast frames on broadcast channel for 1st hop node in EF mode (#2609) 2f5e5e2 Generic forwarding callback and EF state enabler for Wi-SUN BBR. 007dfa2 Allow transmitting on RX slot for 1st hop device in expedited forwarding mode (#2607) 6524872 Implemented FHSS expedited forwarding mode (#2606) 91e0b4c QoS traffic class documentation update. 3acd3a4 Fix warnings found by cppcheck (#2605) d2f5347 MPX and MAC API update 7310cc0 MAC: "CCA fail on RX" event for TX done callback (#2602) cd109c3 Clear Ack tx and tx process in MAC reset (#2601) 45504fd Optimize stagger based on uptime and startup type ed5209e Iotthd 4584 (#2599) 60726dc Fixed blacklisting overflow (#2597) 23334b7 Added support for High Priority forward state 3ec2a2c Corrected freed memory access on incoming EAPOL handling aecadc4 Fixed delayed interrupt (#2596) 1fca2c1 CCA backoffs max to 9 (#2595) f3d2fa1 Added API function to get neighbor table information from Wi-SUN 3bb089b Validate randomized fixed channel (#2592) 70743a1 MAC stabilisation fixes (#2591) e936a26 Reduce periodic DNS traces a45fe3f Improved CSMA-CA logic for Wi-SUN (#2585) 56b7735 improved Wi-SUN stack statistics added e656190 Wi-SUN neighbour allocate update 799f837 Added address check for Whiteboard address ADD 0b6caa3 Wi-SUN network timing parameter tuning 4921465 Supress warnings f5cecd7 Enable external connection for routers e129a0a Added LLC EAPOL temporary neighbor remove when authentication completes (#2583) fa20fb9 Added calculation of LLC and LLC EAPOL message queue average (#2582) 7f7c01a Added retry traces to authenticator EAP-TLS, 4WH, and GKH a87646d On startup deletes NVM GTKs if EUI-64 has been changed (#2576) 509a6f9 Add CI commands to PR template (#2579) eb6a4f7 Change stagger calculation to give more bandwidth to application 82f1d54 Wi-SUN bpptstrap clear destination cache at discovery phase. 71b0588 Destination cache update: f92c385 Enabled PMTU timeout to destination cache after used. 957b358 DHCP server and Agent relay update 25b9124 Merge remote-tracking branch 'origin/release_internal' into release_external c825b04 Corrected covery warning on delay_us multiplication be63bbb Updated changelog 77a76c7 Corrected nw size set on automatic mode 65e6c2d Updated unit tests 16e3402 Added waiting queue to EAPOL authentications to Border Router b9c0b7d Wi-SUN border router starts faster in static configuration 2f427e1 Local repair start and stop clear advertised_dodag_membership_since_last_repair when state is updated. 0a01ab1 RPL dio send update dd39963 Wi-SUN Border router uses Static address as DODAGID 7a3c833 Additional check to detect parent connection problem ffe48c9 WS management: domain configuration functions implemented (#2567) 5e9ac4e Added new Callback to RPL indicate Multicast DIS received from RPL Parent 85b949e Bootstrap and EAPOL treats all MAC TX failure causes similarly b57d9bc Add support for anonymous addressing in Wi-SUN border router (#2565) 7400c8b CFG: API for PHY mode id and channel plan id get & validate (#2564) 2832fe8 Added Socket reference limitter 890aad1 Wi-SUN MTU size update and IPv6 minium MTU routing skip 3ad28c1 Added throttling of number of simultaneous EAPOL authentications 0b84299 Source route handler call Wi-Sun border router alive function. c8343b1 Added support for dynamic RPL default lifetime d258068 Iotthd 4478 (#2560) 7ca6c24 Enable and modify memory limits for packet receiving e2b028d Close CHANGELOG.md for v12.8.1 (#2557) 91f3ff6 Merge branch 'release_internal' into release_external 3999b6e Iotthd 4495 (#2556) 90c3263 RPL Prefix handling update: f761409 Close Nanostack v12.8.0 ChangeLog (#2549) f8ae0e9 Merge remote-tracking branch 'origin/release_internal' into release_external 3275f83 Added support for handle RPL hop by Hop sender rank 0. d62c589 Activated RPL force tunnel for wi-sun. 3e1064a RPL tunnel force functionality update 3207e5c RPL parent select timer random update from 1.0-1.2 to 1.0-1.5. bc09cba MAC Ack wait fixed for OFDM (#2552) 5106b1d Fixed unused variable and function warnings. 4096c1a Wi-SUN bootstrap support RPL poison from Connected state to Discovery 66378d1 RPL Poison update git-subtree-dir: connectivity/nanostack/sal-stack-nanostack git-subtree-split: 0903b81
1 parent b0e699f commit fb72e8e

File tree

101 files changed

+3160
-1018
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+3160
-1018
lines changed

nanostack/dhcp_service_api.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,15 @@ uint16_t dhcp_service_init(int8_t interface_id, dhcp_instance_type_e instance_ty
142142
*/
143143
void dhcp_service_relay_instance_enable(uint16_t instance, uint8_t *server_address);
144144

145+
/**
146+
* \brief Enable DHCPv6 Relay Agent to add interface ID option to relay frame. Default is disabled.
147+
*
148+
*
149+
* \param instance The instance ID of the registered server.
150+
* \param enable true add interface option
151+
*/
152+
void dhcp_service_relay_interface_id_option_enable(uint16_t instance, bool enable);
153+
145154
/**
146155
* \brief Get DHCPv6 Relay Agent address pointer.
147156
*

nanostack/fhss_api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ typedef struct fhss_callback fhss_callback_t;
4949
typedef enum {
5050
FHSS_UNSYNCHRONIZED,
5151
FHSS_SYNCHRONIZED,
52+
FHSS_EXPEDITED_FORWARDING
5253
} fhss_states;
5354

5455
/**

nanostack/fhss_ws_extension.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,27 @@ extern int ns_fhss_set_neighbor_info_fp(const fhss_api_t *fhss_api, fhss_get_nei
118118
*/
119119
extern int ns_fhss_ws_set_hop_count(const fhss_api_t *fhss_api, const uint8_t hop_count);
120120

121+
/**
122+
* @brief WS TX allowance levels.
123+
*/
124+
typedef enum {
125+
/** Allow transmitting only on TX slots. */
126+
WS_TX_SLOT,
127+
/** Allow transmitting only on TX and RX slots. */
128+
WS_TX_AND_RX_SLOT,
129+
/** Allow transmitting always. Also unicast on broadcast channel. */
130+
WS_TX_ALWAYS
131+
} fhss_ws_tx_allow_level;
132+
133+
/**
134+
* @brief Set node unicast TX allowance level. Allows device to use the unicast and broadcast channel for unicast transmission as described by fhss_ws_tx_allow_level.
135+
* @param fhss_api FHSS instance.
136+
* @param global_level Level of TX allowance in normal mode.
137+
* @param ef_level Level of TX allowance in expedited forwarding mode.
138+
* @return 0 on success, -1 on fail.
139+
*/
140+
extern int ns_fhss_ws_set_tx_allowance_level(const fhss_api_t *fhss_api, const fhss_ws_tx_allow_level global_level, const fhss_ws_tx_allow_level ef_level);
141+
121142
#ifdef __cplusplus
122143
}
123144
#endif

nanostack/mac_api.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,11 @@ typedef void mcps_data_request(const mac_api_t *api, const mcps_data_req_t *data
128128
* @param data MCPS-DATA.request specific values
129129
* @param ie_ext Information element list to MCPS-DATA.request
130130
* @param asynch_channel_list Optional channel list to asynch data request. Give NULL when normal data request.
131+
* @param priority Data request priority level
131132
*
132133
* Asynch data request is mac standard extension. asynch_channel_list include channel mask which channel message is requested to send.
133134
*/
134-
typedef void mcps_data_request_ext(const mac_api_t *api, const mcps_data_req_t *data, const mcps_data_req_ie_list_t *ie_ext, const struct channel_list_s *asynch_channel_list);
135+
typedef void mcps_data_request_ext(const mac_api_t *api, const mcps_data_req_t *data, const mcps_data_req_ie_list_t *ie_ext, const struct channel_list_s *asynch_channel_list, mac_data_priority_t priority);
135136

136137
/**
137138
* @brief mcps_purge_request MCPS_PURGE request call

nanostack/mac_mcps.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,5 +192,17 @@ typedef struct mcps_edfe_response_s {
192192
bool use_message_handle_to_discover: 1; /**< EDFE Data request message ID is valid at message_handle. */
193193
} mcps_edfe_response_t;
194194

195+
/**
196+
* @brief enum mac_data_priority_t Data request priority level
197+
*
198+
* Data request priority level may affect CCA process and MAC queue process
199+
*/
200+
typedef enum mac_data_priority_e {
201+
MAC_DATA_NORMAL_PRIORITY = 0, /**< Normal MCPS DATA REQ */
202+
MAC_DATA_MEDIUM_PRIORITY = 1, /**< Indirect Data which is polled */
203+
MAC_DATA_HIGH_PRIORITY = 2, /**< MAC command usually use this and beacon */
204+
MAC_DATA_EXPEDITE_FORWARD = 3 /**< Expedite forward level give highest priority */
205+
} mac_data_priority_t;
206+
195207

196208
#endif // MAC_MCPS_H

nanostack/mlme.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ typedef enum {
264264
macAutoRequestKeyIndex = 0x7b, /*<The index of the key used for automatic data*/
265265
macDefaultKeySource = 0x7c, /*<Default key source*/
266266
//NON standard extension
267+
macRequestRestart = 0xf1, /*< Configure failed packet data request restart */
267268
macEdfeForceStop = 0xf2, /*< Use this command for Data wait timeout at LLC: Mac stop Edfe session data wait and enable normal FHSS mode */
268269
macSetDataWhitening = 0xf3, /*< Enable or disable data whitening, boolean true for enable, false for disable */
269270
macCCAThresholdStart = 0xf4, /*< Start automatic CCA threshold */
@@ -517,4 +518,16 @@ typedef struct mlme_multi_csma_ca_s {
517518
uint16_t multi_cca_interval; /**< Length of the additional CSMA-CA period(s) in microseconds */
518519
} mlme_multi_csma_ca_param_t;
519520

521+
/**
522+
* @brief struct mlme_request_restart_config_s Set failed packet request restart configuration
523+
*
524+
* Non standard extension to restart data request after failed CCA or TX attempts
525+
*/
526+
typedef struct mlme_request_restart_config_s {
527+
uint8_t cca_failure_restart_max; /**< Max number of restarts after CCA failure */
528+
uint8_t tx_failure_restart_max; /**< Max number of restarts after TX failure */
529+
uint16_t blacklist_min_ms; /**< Blacklist min, which is doubled by every restart */
530+
uint16_t blacklist_max_ms; /**< Blacklist max, largest allowed blacklist time */
531+
} mlme_request_restart_config_t;
532+
520533
#endif /* MLME_H_ */

nanostack/platform/arm_hal_phy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ typedef enum {
5050
PHY_LINK_TX_SUCCESS, /**< MAC TX complete. MAC will a make decision to enter wait ACK or TX done state. */
5151
PHY_LINK_TX_FAIL, /**< Link TX process fail. */
5252
PHY_LINK_CCA_FAIL, /**< RF link CCA process fail. */
53+
PHY_LINK_CCA_FAIL_RX, /**< RF link CCA process failed because of packet reception. */
5354
PHY_LINK_CCA_OK, /**< RF link CCA process ok. */
5455
PHY_LINK_CCA_PREPARE, /**< Prepare for CCA after CSMA-CA: changes to CCA channel and gives permission to TX. See PHY_LINK_CCA_PREPARE status definitions for return values */
5556
} phy_link_tx_status_e;

nanostack/socket_api.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,41 @@ extern "C" {
138138
* After the successful state change, data can be sent using socket_send().
139139
* The connection can be shut down in either direction with socket_shutdown() function - shutting down write signals end-of-data to the peer.
140140
*
141+
*
141142
* \section socket-udpicmp How to use UDP and RAW socket:
142143
*
143144
* A UDP socket is ready to receive and send data immediately after a successful call of socket_open() and a NET_READY event is received.
144145
* Data can be transmitted with the socket_sendto() function. An ICMP socket works with same function call.
146+
*
147+
* \section socket-trafficpriority How to set socket message priority to improve Quality of Service (QoS):
148+
*
149+
* IPv6 header has a field traffic class that contains a 6-bit Differentiated Services Code Point (DSCP) field that is used for packet
150+
* classification. By default the packet class level is set to 0 NS_DSCP_DEFAULT.
151+
*
152+
* Recommend QoS levels:
153+
*
154+
* | Level |Description |
155+
* | :--------------: | :-------------------------------------------------------------------------------------------------: |
156+
* | NS_DSCP_DEFAULT | Default level for normal data usage |
157+
* | NS_DSCP_AF11 | Higher Application data service for prioritize packet forwarding. |
158+
* | NS_DSCP_EF | Expedited Forwarding (EF) for short messages. Allows low loss, low delay, and low jitter services. |
159+
* | | This is meant for very important messages like alerts. EF packet length should be kept in |
160+
* | | minimum. This should not be used for any other purpose as it will block other network traffic |
161+
* | NS_DSCP_CS6 | Network protocol message Priority. Application should not use this. |
162+
*
163+
* High priority messages can be set to use higher than default class by using socket_setsockopt() and
164+
* socket_option_traffic_class_dsc_set() helper.
165+
*
166+
* Example to send a message using Expedited Forwarding class:
167+
*
168+
* //Set EF class to high priority messages
169+
* int16_t traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_EF);
170+
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
171+
*
172+
* //Set traffic class back to default
173+
* traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_DEFAULT);
174+
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
175+
*
145176
*/
146177

147178
#include "ns_address.h"
@@ -250,6 +281,24 @@ typedef struct ns_in6_pktinfo {
250281
int8_t ipi6_ifindex; /**< send/recv interface index */
251282
} ns_in6_pktinfo_t;
252283

284+
/** \name Socket DSCP (Differentiated Services Code Point) QoS level examples.
285+
* \anchor MSG_QOS_LEVELS
286+
*/
287+
///@{
288+
/** Standard priority and it is socket default */
289+
#define NS_DSCP_DEFAULT 0
290+
/** Application high priority service: Stack priorities these messages over the default priority messages */
291+
#define NS_DSCP_AF11 10
292+
/** Expedited Forwarding (EF) QoS level enable high priority state: low loss, low delay, and low jitter services */
293+
#define NS_DSCP_EF 46
294+
/** Network protocol traffic allocated QoS level stack may internally use that */
295+
#define NS_DSCP_CS6 48
296+
///@}
297+
298+
/** Helper Traffic class Differentiated Services Code for QoS 0-63. 0 is default which define Lowest Priority
299+
*
300+
* */
301+
#define socket_option_traffic_class_dsc_set(x) (uint8_t)((x & 63) << 2)
253302

254303
/** \name Alignment macros for control message headers
255304
* \anchor CMSG_ALIGN_FLAGS

nanostack/ws_bbr_api.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ int ws_bbr_start(int8_t interface_id, int8_t backbone_interface_id);
9999
#define BBR_REQUIRE_DAO_REFRESH 0x0000 /**< Deprecated DAO Refresh is now the default functionality*/
100100
#define BBR_PERIODIC_VERSION_INC 0x0010 /**< Increment PAN version number Periodically*/
101101
#define BBR_GUA_SLAAC 0x0020 /**< in Global prefix use SLAAC address generation to reduce traffic during bootstrap */
102+
#define BBR_DHCP_ANONYMOUS 0x0040 /**< Generate anonymous addresses from DHCP server */
102103

103104
/**
104105
* Configure border router features.
@@ -108,6 +109,9 @@ int ws_bbr_start(int8_t interface_id, int8_t backbone_interface_id);
108109
* BBR_ULA_C Configure Mesh local ULA prefix with SLAAC address
109110
* BBR_GUA_ROUTE Add more specific route for GUA
110111
* BBR_BB_WAIT Start Wi-SUN network only when backbone is ready
112+
* BBR_DHCP_ANONYMOUS if true give anonymous address (16 bit suffix) to
113+
* optimize data in RF interface (saves 12 bytes per hop)
114+
* or false to reduce RAM usage in Border router as assigned address list is not needed (40 bytes per device).
111115
*
112116
* By default Wi-SUN network is started and is treated as separate interface even if backbone is not available.
113117
*

0 commit comments

Comments
 (0)