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_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_congure used. 
- 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_congure is 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_congure used. 
- Parameters
 - 
  
    | [in] | fb | A fragmentation buffer entry | 
  
   
- Note
 - Without the module 
gnrc_sixlowpan_frag_sfr_congure the fragmentation buffer entry is checked against CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE 
- Return values
 - 
  
    | true | When fb is in congestion window  | 
    | false | When fb is 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 
fb is NULL and when called with module gnrc_sixlowpan_frag_sfr_congure used. 
- 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_congure used. 
- Note
 - Without the module 
gnrc_sixlowpan_frag_sfr_congure the fragmentation buffer entry is checked against CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE 
- Return values
 - 
  
    | true | When fb can still send one fragment under the congestion window constraint.  | 
    | false | When fb can 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_congure used. 
- 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_congure used. 
- 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_congure used. 
- 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.