Skip to content

Commit 2773394

Browse files
author
Arto Kinnunen
committed
Merge commit 'fb72e8eba714116d3578e4f53010b104f48459f0' into nanostack_release_13_0_master
* commit 'fb72e8eba714116d3578e4f53010b104f48459f0': Squashed 'connectivity/nanostack/sal-stack-nanostack/' changes from 3183d87..0903b81
2 parents 776d5db + fb72e8e commit 2773394

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

connectivity/nanostack/sal-stack-nanostack/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
*

connectivity/nanostack/sal-stack-nanostack/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
/**

connectivity/nanostack/sal-stack-nanostack/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

connectivity/nanostack/sal-stack-nanostack/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

connectivity/nanostack/sal-stack-nanostack/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

connectivity/nanostack/sal-stack-nanostack/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_ */

connectivity/nanostack/sal-stack-nanostack/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;

connectivity/nanostack/sal-stack-nanostack/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

connectivity/nanostack/sal-stack-nanostack/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)