Changes between Version 5 and Version 6 of 802.11/wlan_exp/app_notes/dcf_with_hidden_nodes


Ignore:
Timestamp:
Jun 23, 2015, 3:40:43 PM (9 years ago)
Author:
chunter
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 802.11/wlan_exp/app_notes/dcf_with_hidden_nodes

    v5 v6  
    7474This simple protocol is easy to add to the existing DCF implementation. The key changes required are:
    7575
    76 1.
     761. At [browser:ReferenceDesigns/w3_802.11/c/wlan_mac_low_dcf/wlan_mac_dcf.c?rev=4628#L65 the top of wlan_mac.c], we will define some global variables and preprocessor definitions for the parameters described earlier. Namely,
    7777
    7878{{{
    79 #!text/c
     79#!c
    8080#define RTS_EN_THRESH   5
    8181#define RTS_DIS_THRESH  100
     
    8484}}}
    8585
     86The two global variables should be set to 0 in the main() function of the code to given the algorithm a sane starting point.
     87
     882. We should add a new function to wlan_mac_dcf.c that resets the {{{num_consecutive_cw_increases}}} variable and increments the {{{num_consecutive_cw_resets}}} variable. Furthermore, if the newly increased {{{num_consecutive_cw_resets}}} variable exceeds the {{{RTS_DIS_THRESH}}}, we should disable RTS/CTS.
     89
     90{{{
     91#!c
     92inline void reset_cons_cw_count(){
     93        num_consecutive_cw_increases = 0;
     94        num_consecutive_cw_resets++;
     95        if(num_consecutive_cw_resets >= RTS_DIS_THRESH){
     96                gl_dot11RTSThreshold = 2000; //Turns off RTS/CTS since this threshold is larger than an MTU
     97        }
     98}
     99}}}
     100
     1013. We should call this new reset_cons_cw_count() function in '''nearly''' every place that the existing reset_cw() function. The two exceptions to this are in the [browser:ReferenceDesigns/w3_802.11/c/wlan_mac_low_dcf/wlan_mac_dcf.c?rev=4628#L1146 increment_src_ssrc() and increment_lrc_slrc()] functions. Those calls to reset_cw() do not indicate a success, but rather a very specific requirement in the 802.11 standard that is discussed in detail [wiki:802.11/MAC/Lower/Retransmissions in this document]. In every other case, a call to reset_cons_cw_count() should be added just priod to reset_cw().
     102
     1034. A small code snippet should be added to the very top of both the [browser:ReferenceDesigns/w3_802.11/c/wlan_mac_low_dcf/wlan_mac_dcf.c?rev=4628#L1146 increment_src_ssrc()] and [browser:ReferenceDesigns/w3_802.11/c/wlan_mac_low_dcf/wlan_mac_dcf.c?rev=4628#L1164 increment_lrc_slrc()] functions:
     104
     105{{{
     106#!c
     107        num_consecutive_cw_increases++;
     108        num_consecutive_cw_resets = 0;
     109        if(num_consecutive_cw_increases >= RTS_EN_THRESH){
     110                gl_dot11RTSThreshold = 0; //Too many CW increases. Fall back on RTS/CTS
     111        }
     112}}}
    86113
    87114
     115The above small changes to the codebase are enough to implement our new heuristic protocol for adaptively enabling and disabling RTS/CTS. So how does it perform? For completeness and easy of comparison, we will include the previous results when RTS/CTS was permanently disable and permanently enabled.
    88116
     117||  [[Image(wiki:802.11/wlan_exp/app_notes/dcf_with_hidden_nodes/figs:rts_disabled.png, width=400)]]  ||  [[Image(wiki:802.11/wlan_exp/app_notes/dcf_with_hidden_nodes/figs:rts_enabled.png, width=400)]]  ||  [[Image(wiki:802.11/wlan_exp/app_notes/dcf_with_hidden_nodes/figs:rts_adapt.png, width=400)]]  ||
     118||  '''RTS/CTS Disabled'''  ||  '''RTS/CTS Enabled'''  ||  '''RTS/CTS Adaptive'''  ||
    89119
    90 
    91 ----
    92 
    93 = Resources =
    94 
    95 == Python Scripts ==
    96 
    97 Download: [raw-attachment:multi-flow_python_scripts_v1_00.zip multi-flow_python_scripts_v1_00.zip]
    98  * Requirements:
    99   * 3 WARP v3 Kits configured as 1 AP and 2 STA
    100   * [wiki:802.11/Changelog#a1.0Release Mango 802.11 Reference Design v1.0]
    101 
    102 Zip Contents:
    103  * '''multi-flow_experiment.py''' - This script will run the experiment and write the log files from each board to the directory in which this script is executed.
    104  * '''multi-flow_plotter.py''' - This script will open the generated log files and produce the plots used in the application note.
    105  * '''log_analysis_util.py''' - Utility script that is used by multi-flow_plotter.py. This should not be run directly. Instead, it should be in the same directory as multi-flow_plotter.py
    106 
    107 == Experiment Data ==
    108 
    109 In addition to providing the python scripts to gather and process the data in this application note, we also provide the actual data log files we gathered, processed, and presented.
    110 
    111 Download: [http://warpproject.org/dl/app-notes/multi-flow_log_data_v1_00.zip multi-flow_log_data_v1_00.zip] (371MB)