Congestion control for 6LoWPAN SFR using the CongURE - A Congestion control framework.  
More...
Congestion control for 6LoWPAN SFR using the CongURE - A Congestion control framework. 
When included, this module enables congestion control for 6LoWPAN Selective Fragment Recovery (SFR). The flavor of congestion control can be selected using the following sub-modules:
◆ GNRC_SIXLOWPAN_FRAG_SFR_CONGURE_UNIT
      
        
          | #define GNRC_SIXLOWPAN_FRAG_SFR_CONGURE_UNIT   (1U) | 
      
 
The user-defined window unit for congure is one fragment with SFR. 
Definition at line 46 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_destroy()
Frees the CongURE state object of a fragmentation buffer and set's it to NULL 
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer entry |  
 
- Note
- Does not do anything without the module gnrc_sixlowpan_frag_sfr_congure
Definition at line 107 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_free()
  
  | 
        
          | static void gnrc_sixlowpan_frag_sfr_congure_snd_free | ( | congure_snd_t * | c | ) |  |  | inlinestatic | 
 
Frees the CongURE state object. 
This makes a CongURE state object retrievable with gnrc_sixlowpan_frag_sfr_congure_snd_get again.
- Precondition
- CongURE object is not NULL when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | c | A CongURE state object |  
 
- Note
- Does not do anything without the module gnrc_sixlowpan_frag_sfr_congure
Definition at line 89 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_get()
Retrieve CongURE state object from a pool of free objects. 
Needs to be defined in for a each CongURE implementation congure_x e.g. as a sub-module gnrc_sixlowpan_frag_sfr_congure_x and call the respective congure_x_snd_setup function when a free object is available for that object. As such, congure_snd_t::driver == NULL can be used as an identifier if a state object is free.
The pool of objects has to have an initial size of at least CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE.
The window unit is GNRC_SIXLOWPAN_FRAG_SFR_CONGURE_UNIT.
- Returns
- A CongURE state object on success 
- 
NULL, if no free CongURE state object is available (including when when module gnrc_sixlowpan_frag_sfr_congureis not included).
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_has_inter_frame_gap()
  
  | 
        
          | static bool gnrc_sixlowpan_frag_sfr_congure_snd_has_inter_frame_gap | ( | void |  | ) |  |  | inlinestatic | 
 
Checks if inter-frame gap is provided. 
Either because CONFIG_GNRC_SIXLOWPAN_SFR_INTER_FRAME_GAP_US is greater 0 or module gnrc_sixlowpan_frag_sfr_congure is provided
- Return values
- 
  
    | true | When an inter-frame gap can be provided |  | false | When the inter-frame gap is supposed to be 0. |  
 
Definition at line 220 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_in_cwnd()
Checks if given fragmentation buffer entry is within congestion window. 
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer entry |  
 
- Note
- Without the module gnrc_sixlowpan_frag_sfr_congurethe fragmentation buffer entry is checked against CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE
- Return values
- 
  
    | true | When fbis in congestion window |  | false | When fbis not in congestion window |  
 
Definition at line 175 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_init()
Initializes a CongURE state object in a fragmentation buffer entry. 
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer entry |  
 
- Note
- Does not do anything without the module gnrc_sixlowpan_frag_sfr_congure
Definition at line 125 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_inter_frame_gap()
Returns inter-frame gap if provided by CongURE implementation. 
When module gnrc_sixlowpan_frag_sfr_congure is provided it will provide congure_snd_driver_t::inter_message_interval() of the CongURE state object of the provided fragmentation buffer with CONFIG_GNRC_SIXLOWPAN_SFR_INTER_FRAME_GAP_US as a lower bound. If congure_snd_driver_t::inter_message_interval returns -1, fb is NULL, or without the module gnrc_sixlowpan_frag_sfr_congure it will return CONFIG_GNRC_SIXLOWPAN_SFR_INTER_FRAME_GAP_US
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when fbisNULLand when called with modulegnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer. May be NULL. |  
 
- Returns
- The inter-frame gap for the given fragmentation buffer, but 
Definition at line 245 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_next_in_cwnd()
Checks if given fragmentation buffer entry would still be within congestion window after next send. 
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Note
- Without the module gnrc_sixlowpan_frag_sfr_congurethe fragmentation buffer entry is checked against CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE
- Return values
- 
  
    | true | When fbcan still send one fragment under the congestion window constraint. |  | false | When fbcan not still send one fragment under the congestion window constraint. |  
 
Definition at line 200 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_ecn()
Report to CongURE that ECN bit was set in an ACK. 
Calls congure_snd_driver_t::report_ecn_ce for the CongURE state object of fb with time.
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer. |  | [in] | time | Timestamp in milliseconds of the earliest fragment for which the notified congestion occurred was sent. |  
 
Definition at line 412 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_frag_acked()
Report to CongURE that a number of fragments are known to be lost. 
Calls congure_snd_driver_t::report_msgs_acked for the CongURE state object of fb with frag and ack.
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer. |  | [in] | frag | The ACK'd fragment. |  | [in] | ack | The received ACK. |  
 
Definition at line 379 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_frag_discard()
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_frag_sent()
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_frags_lost()
Report to CongURE that a number of fragments are known to be lost. 
Calls congure_snd_driver_t::report_msgs_lost for the CongURE state object of fb with frags.
- Precondition
- CongURE object of the fragmentation buffer entry is initialized when called with module gnrc_sixlowpan_frag_sfr_congureused.
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer. |  | [in] | frags | A collection of messages that are known to be lost. The list may be changed by the function. |  
 
Definition at line 352 of file congure.h.
 
 
◆ gnrc_sixlowpan_frag_sfr_congure_snd_report_frags_timeout()
◆ gnrc_sixlowpan_frag_sfr_congure_snd_setup()
Retrieve CongURE state object when not retrieved and initialize it for a fragmentation buffer entry. 
- Parameters
- 
  
    | [in] | fb | A fragmentation buffer entry |  
 
- Note
- Does not do anything without the module gnrc_sixlowpan_frag_sfr_congure
Definition at line 143 of file congure.h.