Skip to content

Commit

Permalink
Squashed 'connectivity/nanostack/sal-stack-nanostack/' changes from 3…
Browse files Browse the repository at this point in the history
…183d87..0903b81

0903b81 Merge remote-tracking branch 'origin/release_internal' into release_external
51429c9 FHSS WS: api function to set TX allowance level (ARMmbed#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 (ARMmbed#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 (ARMmbed#2607)
6524872 Implemented FHSS expedited forwarding mode (ARMmbed#2606)
91e0b4c QoS traffic class documentation update.
3acd3a4 Fix warnings found by cppcheck (ARMmbed#2605)
d2f5347 MPX and MAC API update
7310cc0 MAC: "CCA fail on RX" event for TX done callback (ARMmbed#2602)
cd109c3 Clear Ack tx and tx process in MAC reset (ARMmbed#2601)
45504fd Optimize stagger based on uptime and startup type
ed5209e Iotthd 4584 (ARMmbed#2599)
60726dc Fixed blacklisting overflow (ARMmbed#2597)
23334b7 Added support for High Priority forward state
3ec2a2c Corrected freed memory access on incoming EAPOL handling
aecadc4 Fixed delayed interrupt (ARMmbed#2596)
1fca2c1 CCA backoffs max to 9 (ARMmbed#2595)
f3d2fa1 Added API function to get neighbor table information from Wi-SUN
3bb089b Validate randomized fixed channel (ARMmbed#2592)
70743a1 MAC stabilisation fixes (ARMmbed#2591)
e936a26 Reduce periodic DNS traces
a45fe3f Improved CSMA-CA logic for Wi-SUN (ARMmbed#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 (ARMmbed#2583)
fa20fb9 Added calculation of LLC and LLC EAPOL message queue average (ARMmbed#2582)
7f7c01a Added retry traces to authenticator EAP-TLS, 4WH, and GKH
a87646d On startup deletes NVM GTKs if EUI-64 has been changed (ARMmbed#2576)
509a6f9 Add CI commands to PR template (ARMmbed#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 (ARMmbed#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 (ARMmbed#2565)
7400c8b CFG: API for PHY mode id and channel plan id get & validate (ARMmbed#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 (ARMmbed#2560)
7ca6c24 Enable and modify memory limits for packet receiving
e2b028d Close CHANGELOG.md for v12.8.1 (ARMmbed#2557)
91f3ff6 Merge branch 'release_internal' into release_external
3999b6e Iotthd 4495 (ARMmbed#2556)
90c3263 RPL Prefix handling update:
f761409 Close Nanostack v12.8.0 ChangeLog (ARMmbed#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 (ARMmbed#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
  • Loading branch information
Arto Kinnunen committed Apr 21, 2021
1 parent b0e699f commit fb72e8e
Show file tree
Hide file tree
Showing 101 changed files with 3,160 additions and 1,018 deletions.
9 changes: 9 additions & 0 deletions nanostack/dhcp_service_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,15 @@ uint16_t dhcp_service_init(int8_t interface_id, dhcp_instance_type_e instance_ty
*/
void dhcp_service_relay_instance_enable(uint16_t instance, uint8_t *server_address);

/**
* \brief Enable DHCPv6 Relay Agent to add interface ID option to relay frame. Default is disabled.
*
*
* \param instance The instance ID of the registered server.
* \param enable true add interface option
*/
void dhcp_service_relay_interface_id_option_enable(uint16_t instance, bool enable);

/**
* \brief Get DHCPv6 Relay Agent address pointer.
*
Expand Down
1 change: 1 addition & 0 deletions nanostack/fhss_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ typedef struct fhss_callback fhss_callback_t;
typedef enum {
FHSS_UNSYNCHRONIZED,
FHSS_SYNCHRONIZED,
FHSS_EXPEDITED_FORWARDING
} fhss_states;

/**
Expand Down
21 changes: 21 additions & 0 deletions nanostack/fhss_ws_extension.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,27 @@ extern int ns_fhss_set_neighbor_info_fp(const fhss_api_t *fhss_api, fhss_get_nei
*/
extern int ns_fhss_ws_set_hop_count(const fhss_api_t *fhss_api, const uint8_t hop_count);

/**
* @brief WS TX allowance levels.
*/
typedef enum {
/** Allow transmitting only on TX slots. */
WS_TX_SLOT,
/** Allow transmitting only on TX and RX slots. */
WS_TX_AND_RX_SLOT,
/** Allow transmitting always. Also unicast on broadcast channel. */
WS_TX_ALWAYS
} fhss_ws_tx_allow_level;

/**
* @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.
* @param fhss_api FHSS instance.
* @param global_level Level of TX allowance in normal mode.
* @param ef_level Level of TX allowance in expedited forwarding mode.
* @return 0 on success, -1 on fail.
*/
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);

#ifdef __cplusplus
}
#endif
Expand Down
3 changes: 2 additions & 1 deletion nanostack/mac_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,11 @@ typedef void mcps_data_request(const mac_api_t *api, const mcps_data_req_t *data
* @param data MCPS-DATA.request specific values
* @param ie_ext Information element list to MCPS-DATA.request
* @param asynch_channel_list Optional channel list to asynch data request. Give NULL when normal data request.
* @param priority Data request priority level
*
* Asynch data request is mac standard extension. asynch_channel_list include channel mask which channel message is requested to send.
*/
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);
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);

/**
* @brief mcps_purge_request MCPS_PURGE request call
Expand Down
12 changes: 12 additions & 0 deletions nanostack/mac_mcps.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,5 +192,17 @@ typedef struct mcps_edfe_response_s {
bool use_message_handle_to_discover: 1; /**< EDFE Data request message ID is valid at message_handle. */
} mcps_edfe_response_t;

/**
* @brief enum mac_data_priority_t Data request priority level
*
* Data request priority level may affect CCA process and MAC queue process
*/
typedef enum mac_data_priority_e {
MAC_DATA_NORMAL_PRIORITY = 0, /**< Normal MCPS DATA REQ */
MAC_DATA_MEDIUM_PRIORITY = 1, /**< Indirect Data which is polled */
MAC_DATA_HIGH_PRIORITY = 2, /**< MAC command usually use this and beacon */
MAC_DATA_EXPEDITE_FORWARD = 3 /**< Expedite forward level give highest priority */
} mac_data_priority_t;


#endif // MAC_MCPS_H
13 changes: 13 additions & 0 deletions nanostack/mlme.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ typedef enum {
macAutoRequestKeyIndex = 0x7b, /*<The index of the key used for automatic data*/
macDefaultKeySource = 0x7c, /*<Default key source*/
//NON standard extension
macRequestRestart = 0xf1, /*< Configure failed packet data request restart */
macEdfeForceStop = 0xf2, /*< Use this command for Data wait timeout at LLC: Mac stop Edfe session data wait and enable normal FHSS mode */
macSetDataWhitening = 0xf3, /*< Enable or disable data whitening, boolean true for enable, false for disable */
macCCAThresholdStart = 0xf4, /*< Start automatic CCA threshold */
Expand Down Expand Up @@ -517,4 +518,16 @@ typedef struct mlme_multi_csma_ca_s {
uint16_t multi_cca_interval; /**< Length of the additional CSMA-CA period(s) in microseconds */
} mlme_multi_csma_ca_param_t;

/**
* @brief struct mlme_request_restart_config_s Set failed packet request restart configuration
*
* Non standard extension to restart data request after failed CCA or TX attempts
*/
typedef struct mlme_request_restart_config_s {
uint8_t cca_failure_restart_max; /**< Max number of restarts after CCA failure */
uint8_t tx_failure_restart_max; /**< Max number of restarts after TX failure */
uint16_t blacklist_min_ms; /**< Blacklist min, which is doubled by every restart */
uint16_t blacklist_max_ms; /**< Blacklist max, largest allowed blacklist time */
} mlme_request_restart_config_t;

#endif /* MLME_H_ */
1 change: 1 addition & 0 deletions nanostack/platform/arm_hal_phy.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ typedef enum {
PHY_LINK_TX_SUCCESS, /**< MAC TX complete. MAC will a make decision to enter wait ACK or TX done state. */
PHY_LINK_TX_FAIL, /**< Link TX process fail. */
PHY_LINK_CCA_FAIL, /**< RF link CCA process fail. */
PHY_LINK_CCA_FAIL_RX, /**< RF link CCA process failed because of packet reception. */
PHY_LINK_CCA_OK, /**< RF link CCA process ok. */
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 */
} phy_link_tx_status_e;
Expand Down
49 changes: 49 additions & 0 deletions nanostack/socket_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,41 @@ extern "C" {
* After the successful state change, data can be sent using socket_send().
* The connection can be shut down in either direction with socket_shutdown() function - shutting down write signals end-of-data to the peer.
*
*
* \section socket-udpicmp How to use UDP and RAW socket:
*
* 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.
* Data can be transmitted with the socket_sendto() function. An ICMP socket works with same function call.
*
* \section socket-trafficpriority How to set socket message priority to improve Quality of Service (QoS):
*
* IPv6 header has a field traffic class that contains a 6-bit Differentiated Services Code Point (DSCP) field that is used for packet
* classification. By default the packet class level is set to 0 NS_DSCP_DEFAULT.
*
* Recommend QoS levels:
*
* | Level |Description |
* | :--------------: | :-------------------------------------------------------------------------------------------------: |
* | NS_DSCP_DEFAULT | Default level for normal data usage |
* | NS_DSCP_AF11 | Higher Application data service for prioritize packet forwarding. |
* | NS_DSCP_EF | Expedited Forwarding (EF) for short messages. Allows low loss, low delay, and low jitter services. |
* | | This is meant for very important messages like alerts. EF packet length should be kept in |
* | | minimum. This should not be used for any other purpose as it will block other network traffic |
* | NS_DSCP_CS6 | Network protocol message Priority. Application should not use this. |
*
* High priority messages can be set to use higher than default class by using socket_setsockopt() and
* socket_option_traffic_class_dsc_set() helper.
*
* Example to send a message using Expedited Forwarding class:
*
* //Set EF class to high priority messages
* int16_t traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_EF);
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
*
* //Set traffic class back to default
* traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_DEFAULT);
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
*
*/

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

/** \name Socket DSCP (Differentiated Services Code Point) QoS level examples.
* \anchor MSG_QOS_LEVELS
*/
///@{
/** Standard priority and it is socket default */
#define NS_DSCP_DEFAULT 0
/** Application high priority service: Stack priorities these messages over the default priority messages */
#define NS_DSCP_AF11 10
/** Expedited Forwarding (EF) QoS level enable high priority state: low loss, low delay, and low jitter services */
#define NS_DSCP_EF 46
/** Network protocol traffic allocated QoS level stack may internally use that */
#define NS_DSCP_CS6 48
///@}

/** Helper Traffic class Differentiated Services Code for QoS 0-63. 0 is default which define Lowest Priority
*
* */
#define socket_option_traffic_class_dsc_set(x) (uint8_t)((x & 63) << 2)

/** \name Alignment macros for control message headers
* \anchor CMSG_ALIGN_FLAGS
Expand Down
4 changes: 4 additions & 0 deletions nanostack/ws_bbr_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ int ws_bbr_start(int8_t interface_id, int8_t backbone_interface_id);
#define BBR_REQUIRE_DAO_REFRESH 0x0000 /**< Deprecated DAO Refresh is now the default functionality*/
#define BBR_PERIODIC_VERSION_INC 0x0010 /**< Increment PAN version number Periodically*/
#define BBR_GUA_SLAAC 0x0020 /**< in Global prefix use SLAAC address generation to reduce traffic during bootstrap */
#define BBR_DHCP_ANONYMOUS 0x0040 /**< Generate anonymous addresses from DHCP server */

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

0 comments on commit fb72e8e

Please sign in to comment.