| 86 | The two global variables should be set to 0 in the main() function of the code to given the algorithm a sane starting point. |
| 87 | |
| 88 | 2. 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 |
| 92 | inline 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 | |
| 101 | 3. 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 | |
| 103 | 4. 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 | }}} |
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) |