From d44a8a0baf59cab5a7cedffa0351d4dec742c31d Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Thu, 6 Feb 2025 16:16:01 +0100 Subject: [PATCH] wifi: Add a new main PHY switch trace fired upon CTS timeout --- .../source/figures/emlsr-txop-ended-trace.eps | 390 +++++++++--------- src/wifi/doc/source/wifi-design.rst | 30 +- src/wifi/model/eht/advanced-emlsr-manager.cc | 49 ++- src/wifi/model/eht/default-emlsr-manager.cc | 52 ++- src/wifi/model/eht/default-emlsr-manager.h | 7 +- src/wifi/model/eht/emlsr-manager.cc | 2 + src/wifi/model/eht/emlsr-manager.h | 79 ++-- src/wifi/test/wifi-emlsr-test.cc | 30 +- 8 files changed, 338 insertions(+), 301 deletions(-) diff --git a/src/wifi/doc/source/figures/emlsr-txop-ended-trace.eps b/src/wifi/doc/source/figures/emlsr-txop-ended-trace.eps index 7de2693bc..b5c8db0a1 100644 --- a/src/wifi/doc/source/figures/emlsr-txop-ended-trace.eps +++ b/src/wifi/doc/source/figures/emlsr-txop-ended-trace.eps @@ -240,64 +240,6 @@ p ef 3103 -35 3112 -37 3125 -39 ct 3125 -3 l p ef pom gs -1 lj 19548 5971 m 20263 5971 l ps -gr -gs -19261 5971 m 19561 6071 l 19561 5871 l 19261 5971 l p ef -gr -gs -20550 5971 m 20250 5871 l 20250 6071 l 20550 5971 l p ef -gr -gs -0 lw 1 lj 19261 6671 m 19261 5771 l ps -gr -gs -0 lw 1 lj 20550 6671 m 20550 5771 l ps -gr -pum -19385 5796 t -39 0 m 39 -229 l 39 -250 39 -273 37 -298 ct 84 -298 l 86 -265 86 -244 86 -238 ct -88 -238 l 95 -263 105 -281 115 -290 ct 125 -299 140 -304 158 -304 ct 165 -304 172 -303 178 -301 ct -178 -256 l 172 -258 163 -258 152 -258 ct 131 -258 116 -250 105 -232 ct 94 -214 89 -189 89 -156 ct -89 0 l 39 0 l p ef -263 -138 m 263 -104 270 -78 284 -59 ct 298 -41 319 -31 346 -31 ct 368 -31 385 -36 398 -44 ct -411 -53 420 -64 424 -77 ct 468 -65 l 450 -18 409 6 346 6 ct 302 6 269 -7 246 -33 ct -222 -60 211 -99 211 -151 ct 211 -200 222 -238 246 -264 ct 269 -291 301 -304 344 -304 ct -432 -304 476 -251 476 -145 ct 476 -138 l 263 -138 l p -424 -176 m 422 -208 414 -231 400 -245 ct 387 -260 368 -267 343 -267 ct 319 -267 300 -259 286 -243 ct -272 -227 265 -204 264 -176 ct 424 -176 l p ef -713 0 m 713 -189 l 713 -218 709 -238 701 -249 ct 693 -260 679 -266 658 -266 ct -637 -266 620 -258 608 -241 ct 596 -225 589 -202 589 -173 ct 589 0 l 540 0 l -540 -235 l 540 -270 540 -291 538 -298 ct 585 -298 l 585 -298 586 -295 586 -291 ct -586 -287 586 -282 587 -277 ct 587 -272 587 -262 587 -247 ct 588 -247 l 599 -269 611 -283 625 -292 ct -639 -300 656 -304 675 -304 ct 698 -304 716 -300 729 -290 ct 742 -281 751 -267 756 -247 ct -757 -247 l 767 -268 780 -282 794 -291 ct 809 -300 827 -304 847 -304 ct 878 -304 899 -296 913 -279 ct -927 -263 934 -236 934 -199 ct 934 0 l 885 0 l 885 -189 l 885 -218 881 -238 873 -249 ct -865 -260 851 -266 830 -266 ct 808 -266 792 -258 780 -242 ct 768 -225 762 -203 762 -173 ct -762 0 l 713 0 l p ef -1168 -346 m 1168 -1 l 1116 -1 l 1116 -346 l 983 -346 l 983 -389 l -1302 -389 l 1302 -346 l 1168 -346 l p ef -1352 -362 m 1352 -409 l 1401 -409 l 1401 -362 l 1352 -362 l p -1352 0 m 1352 -298 l 1401 -298 l 1401 0 l 1352 0 l p ef -1651 0 m 1651 -189 l 1651 -218 1647 -238 1639 -249 ct 1631 -260 1617 -266 1596 -266 ct -1575 -266 1558 -258 1546 -241 ct 1534 -225 1527 -202 1527 -173 ct 1527 0 l 1478 0 l -1478 -235 l 1478 -270 1478 -291 1476 -298 ct 1523 -298 l 1523 -298 1524 -295 1524 -291 ct -1524 -287 1524 -282 1525 -277 ct 1525 -272 1525 -262 1525 -247 ct 1526 -247 l -1537 -269 1549 -283 1563 -292 ct 1577 -300 1594 -304 1613 -304 ct 1636 -304 1654 -300 1667 -290 ct -1680 -281 1689 -267 1694 -247 ct 1695 -247 l 1705 -268 1718 -282 1732 -291 ct -1747 -300 1765 -304 1785 -304 ct 1816 -304 1837 -296 1851 -279 ct 1865 -263 1872 -236 1872 -199 ct -1872 0 l 1823 0 l 1823 -189 l 1823 -218 1819 -238 1811 -249 ct 1803 -260 1789 -266 1768 -266 ct -1746 -266 1730 -258 1718 -242 ct 1706 -225 1700 -203 1700 -173 ct 1700 0 l 1651 0 l -p ef -1984 -138 m 1984 -104 1991 -78 2005 -59 ct 2019 -41 2040 -31 2067 -31 ct 2089 -31 2106 -36 2119 -44 ct -2132 -53 2141 -64 2145 -77 ct 2189 -65 l 2171 -18 2130 6 2067 6 ct 2023 6 1990 -7 1967 -33 ct -1943 -60 1932 -99 1932 -151 ct 1932 -200 1943 -238 1967 -264 ct 1990 -291 2022 -304 2065 -304 ct -2153 -304 2197 -251 2197 -145 ct 2197 -138 l 1984 -138 l p -2145 -176 m 2143 -208 2135 -231 2121 -245 ct 2108 -260 2089 -267 2064 -267 ct -2040 -267 2021 -259 2007 -243 ct 1993 -227 1986 -204 1985 -176 ct 2145 -176 l -p ef -pom -gs 1 lj 17084 2943 m 20320 2943 l ps gr gs @@ -500,7 +442,7 @@ p ef 3787 -240 3786 -234 3786 -232 ct 3787 -232 l p ef pom pum -19465 8055 t +19539 8055 t 143 -2 m 128 2 112 4 96 4 ct 59 4 40 -17 40 -59 ct 40 -246 l 8 -246 l 8 -280 l 42 -280 l 56 -343 l 87 -343 l 87 -280 l 138 -280 l 138 -246 l 87 -246 l 87 -69 l 87 -56 89 -47 93 -41 ct 98 -36 105 -33 116 -33 ct 122 -33 131 -34 143 -37 ct @@ -531,55 +473,46 @@ p ef 1282 -166 m 1279 -195 1272 -217 1259 -230 ct 1247 -244 1229 -251 1206 -251 ct 1183 -251 1165 -243 1152 -228 ct 1139 -213 1132 -192 1131 -166 ct 1282 -166 l p ef -1446 -247 m 1446 -1 l 1400 -1 l 1400 -247 l 1360 -247 l 1360 -281 l -1400 -281 l 1400 -312 l 1400 -338 1405 -356 1417 -367 ct 1428 -378 1445 -384 1468 -384 ct -1481 -384 1492 -383 1501 -381 ct 1501 -345 l 1493 -347 1486 -348 1480 -348 ct -1468 -348 1460 -345 1454 -339 ct 1449 -333 1446 -322 1446 -306 ct 1446 -281 l -1501 -281 l 1501 -247 l 1446 -247 l p ef -1571 -130 m 1571 -98 1578 -73 1591 -56 ct 1604 -39 1624 -30 1649 -30 ct 1669 -30 1686 -34 1698 -42 ct -1710 -50 1718 -60 1722 -73 ct 1763 -61 l 1747 -17 1709 5 1649 5 ct 1608 5 1577 -7 1555 -32 ct -1533 -57 1522 -93 1522 -142 ct 1522 -188 1533 -223 1555 -248 ct 1577 -273 1607 -285 1647 -285 ct -1730 -285 1771 -236 1771 -137 ct 1771 -130 l 1571 -130 l p -1723 -166 m 1720 -195 1713 -217 1700 -230 ct 1688 -244 1670 -251 1647 -251 ct -1624 -251 1606 -243 1593 -228 ct 1580 -213 1573 -192 1572 -166 ct 1723 -166 l +1511 0 m 1456 0 l 1355 -280 l 1404 -280 l 1466 -98 l 1468 -91 1474 -70 1484 -36 ct +1493 -67 l 1503 -97 l 1566 -280 l 1616 -280 l 1511 0 l p ef +1653 -340 m 1653 -384 l 1700 -384 l 1700 -340 l 1653 -340 l p +1653 0 m 1653 -280 l 1700 -280 l 1700 0 l 1653 0 l p ef +2007 -140 m 2007 -91 1996 -55 1975 -31 ct 1953 -7 1922 5 1881 5 ct 1840 5 1809 -7 1788 -32 ct +1768 -57 1757 -93 1757 -140 ct 1757 -237 1799 -285 1882 -285 ct 1925 -285 1957 -273 1977 -250 ct +1997 -226 2007 -190 2007 -140 ct p +1958 -140 m 1958 -179 1952 -207 1941 -224 ct 1930 -242 1910 -251 1883 -251 ct +1856 -251 1836 -242 1824 -224 ct 1812 -206 1806 -178 1806 -140 ct 1806 -103 1812 -76 1824 -57 ct +1836 -39 1855 -29 1880 -29 ct 1908 -29 1928 -38 1940 -56 ct 1952 -74 1958 -102 1958 -140 ct p ef -1831 0 m 1831 -215 l 1831 -234 1830 -256 1829 -280 ct 1873 -280 l 1874 -248 1875 -229 1875 -223 ct -1876 -223 l 1884 -247 1892 -263 1902 -272 ct 1911 -281 1925 -285 1943 -285 ct -1949 -285 1955 -284 1961 -282 ct 1961 -240 l 1955 -241 1947 -242 1937 -242 ct -1917 -242 1903 -234 1892 -217 ct 1882 -201 1877 -177 1877 -146 ct 1877 0 l 1831 0 l +2111 -280 m 2111 -103 l 2111 -84 2113 -70 2117 -60 ct 2120 -49 2126 -42 2134 -38 ct +2142 -33 2153 -31 2169 -31 ct 2191 -31 2209 -39 2222 -54 ct 2235 -69 2241 -91 2241 -118 ct +2241 -280 l 2288 -280 l 2288 -60 l 2288 -27 2288 -7 2289 0 ct 2245 0 l +2245 -1 2245 -3 2245 -7 ct 2244 -11 2244 -15 2244 -20 ct 2244 -25 2243 -34 2243 -48 ct +2242 -48 l 2232 -29 2219 -15 2205 -7 ct 2191 1 2174 5 2153 5 ct 2122 5 2100 -3 2086 -18 ct +2071 -33 2064 -58 2064 -94 ct 2064 -280 l 2111 -280 l p ef +2569 -77 m 2569 -51 2559 -31 2540 -16 ct 2520 -2 2492 5 2456 5 ct 2421 5 2394 -1 2376 -12 ct +2357 -24 2344 -42 2339 -66 ct 2380 -74 l 2384 -59 2392 -48 2404 -41 ct 2417 -34 2434 -30 2456 -30 ct +2480 -30 2497 -34 2508 -41 ct 2519 -49 2524 -59 2524 -74 ct 2524 -85 2520 -94 2513 -101 ct +2505 -108 2493 -113 2476 -118 ct 2443 -127 l 2416 -133 2397 -140 2386 -147 ct +2375 -153 2366 -162 2359 -171 ct 2353 -180 2350 -192 2350 -206 ct 2350 -231 2359 -251 2377 -264 ct +2395 -278 2422 -284 2457 -284 ct 2487 -284 2512 -279 2530 -268 ct 2548 -257 2560 -240 2564 -216 ct +2523 -211 l 2520 -223 2513 -232 2502 -239 ct 2491 -246 2475 -249 2457 -249 ct +2436 -249 2420 -246 2410 -239 ct 2400 -233 2395 -223 2395 -210 ct 2395 -203 2397 -196 2401 -191 ct +2405 -186 2411 -181 2420 -178 ct 2428 -174 2445 -169 2471 -163 ct 2495 -156 2513 -151 2524 -146 ct +2535 -140 2543 -134 2550 -128 ct 2556 -122 2561 -114 2564 -106 ct 2568 -98 2569 -88 2569 -77 ct p ef -2008 0 m 2008 -215 l 2008 -234 2007 -256 2006 -280 ct 2050 -280 l 2051 -248 2052 -229 2052 -223 ct -2053 -223 l 2061 -247 2069 -263 2079 -272 ct 2088 -281 2102 -285 2120 -285 ct -2126 -285 2132 -284 2138 -282 ct 2138 -240 l 2132 -241 2124 -242 2114 -242 ct -2094 -242 2080 -234 2069 -217 ct 2059 -201 2054 -177 2054 -146 ct 2054 0 l 2008 0 l +2771 0 m 2771 -384 l 2817 -384 l 2817 0 l 2771 0 l p ef +2888 -340 m 2888 -384 l 2935 -384 l 2935 -340 l 2888 -340 l p +2888 0 m 2888 -280 l 2935 -280 l 2935 0 l 2888 0 l p ef +3184 0 m 3184 -177 l 3184 -196 3182 -210 3179 -220 ct 3175 -231 3169 -238 3161 -242 ct +3153 -247 3142 -249 3127 -249 ct 3104 -249 3086 -241 3074 -226 ct 3061 -211 3054 -189 3054 -162 ct +3054 0 l 3008 0 l 3008 -220 l 3008 -253 3007 -273 3006 -280 ct 3050 -280 l +3050 -279 3050 -277 3051 -273 ct 3051 -269 3051 -265 3051 -260 ct 3051 -255 3052 -246 3052 -232 ct +3053 -232 l 3064 -251 3076 -265 3090 -273 ct 3104 -281 3121 -285 3142 -285 ct +3173 -285 3195 -277 3210 -262 ct 3224 -247 3231 -222 3231 -186 ct 3231 0 l 3184 0 l p ef -2218 -130 m 2218 -98 2225 -73 2238 -56 ct 2251 -39 2271 -30 2296 -30 ct 2316 -30 2333 -34 2345 -42 ct -2357 -50 2365 -60 2369 -73 ct 2410 -61 l 2394 -17 2356 5 2296 5 ct 2255 5 2224 -7 2202 -32 ct -2180 -57 2169 -93 2169 -142 ct 2169 -188 2180 -223 2202 -248 ct 2224 -273 2254 -285 2294 -285 ct -2377 -285 2418 -236 2418 -137 ct 2418 -130 l 2218 -130 l p -2370 -166 m 2367 -195 2360 -217 2347 -230 ct 2335 -244 2317 -251 2294 -251 ct -2271 -251 2253 -243 2240 -228 ct 2227 -213 2220 -192 2219 -166 ct 2370 -166 l -p ef -2653 -45 m 2644 -27 2633 -14 2619 -7 ct 2605 1 2587 5 2566 5 ct 2531 5 2505 -7 2488 -31 ct -2472 -55 2463 -91 2463 -139 ct 2463 -237 2497 -285 2566 -285 ct 2587 -285 2605 -282 2619 -274 ct -2633 -266 2644 -254 2653 -237 ct 2654 -237 l 2653 -268 l 2653 -384 l 2700 -384 l -2700 -58 l 2700 -29 2700 -10 2701 0 ct 2657 0 l 2656 -3 2656 -9 2655 -19 ct -2654 -29 2654 -38 2654 -45 ct 2653 -45 l p -2512 -140 m 2512 -101 2517 -73 2528 -56 ct 2538 -39 2555 -31 2578 -31 ct 2604 -31 2623 -40 2635 -58 ct -2647 -77 2653 -105 2653 -144 ct 2653 -181 2647 -208 2635 -225 ct 2623 -242 2604 -251 2578 -251 ct -2555 -251 2538 -242 2528 -225 ct 2517 -208 2512 -179 2512 -140 ct p ef -2919 0 m 2919 -384 l 2965 -384 l 2965 0 l 2919 0 l p ef -3035 -340 m 3035 -384 l 3082 -384 l 3082 -340 l 3035 -340 l p -3035 0 m 3035 -280 l 3082 -280 l 3082 0 l 3035 0 l p ef -3331 0 m 3331 -177 l 3331 -196 3329 -210 3326 -220 ct 3322 -231 3316 -238 3308 -242 ct -3300 -247 3289 -249 3274 -249 ct 3251 -249 3233 -241 3221 -226 ct 3208 -211 3201 -189 3201 -162 ct -3201 0 l 3155 0 l 3155 -220 l 3155 -253 3154 -273 3153 -280 ct 3197 -280 l -3197 -279 3197 -277 3198 -273 ct 3198 -269 3198 -265 3198 -260 ct 3198 -255 3199 -246 3199 -232 ct -3200 -232 l 3211 -251 3223 -265 3237 -273 ct 3251 -281 3268 -285 3289 -285 ct -3320 -285 3342 -277 3357 -262 ct 3371 -247 3378 -222 3378 -186 ct 3378 0 l 3331 0 l -p ef -3623 0 m 3528 -128 l 3494 -100 l 3494 0 l 3448 0 l 3448 -384 l 3494 -384 l -3494 -144 l 3617 -280 l 3671 -280 l 3558 -160 l 3677 0 l 3623 0 l +3476 0 m 3381 -128 l 3347 -100 l 3347 0 l 3301 0 l 3301 -384 l 3347 -384 l +3347 -144 l 3470 -280 l 3524 -280 l 3411 -160 l 3530 0 l 3476 0 l p ef pom gs @@ -746,46 +679,97 @@ gs gr pum 6885 5796 t -39 0 m 39 -229 l 39 -250 39 -273 37 -298 ct 84 -298 l 86 -265 86 -244 86 -238 ct -88 -238 l 95 -263 105 -281 115 -290 ct 125 -299 140 -304 158 -304 ct 165 -304 172 -303 178 -301 ct -178 -256 l 172 -258 163 -258 152 -258 ct 131 -258 116 -250 105 -232 ct 94 -214 89 -189 89 -156 ct -89 0 l 39 0 l p ef -263 -138 m 263 -104 270 -78 284 -59 ct 298 -41 319 -31 346 -31 ct 368 -31 385 -36 398 -44 ct -411 -53 420 -64 424 -77 ct 468 -65 l 450 -18 409 6 346 6 ct 302 6 269 -7 246 -33 ct -222 -60 211 -99 211 -151 ct 211 -200 222 -238 246 -264 ct 269 -291 301 -304 344 -304 ct -432 -304 476 -251 476 -145 ct 476 -138 l 263 -138 l p -424 -176 m 422 -208 414 -231 400 -245 ct 387 -260 368 -267 343 -267 ct 319 -267 300 -259 286 -243 ct -272 -227 265 -204 264 -176 ct 424 -176 l p ef -713 0 m 713 -189 l 713 -218 709 -238 701 -249 ct 693 -260 679 -266 658 -266 ct -637 -266 620 -258 608 -241 ct 596 -225 589 -202 589 -173 ct 589 0 l 540 0 l -540 -235 l 540 -270 540 -291 538 -298 ct 585 -298 l 585 -298 586 -295 586 -291 ct -586 -287 586 -282 587 -277 ct 587 -272 587 -262 587 -247 ct 588 -247 l 599 -269 611 -283 625 -292 ct -639 -300 656 -304 675 -304 ct 698 -304 716 -300 729 -290 ct 742 -281 751 -267 756 -247 ct -757 -247 l 767 -268 780 -282 794 -291 ct 809 -300 827 -304 847 -304 ct 878 -304 899 -296 913 -279 ct -927 -263 934 -236 934 -199 ct 934 0 l 885 0 l 885 -189 l 885 -218 881 -238 873 -249 ct -865 -260 851 -266 830 -266 ct 808 -266 792 -258 780 -242 ct 768 -225 762 -203 762 -173 ct -762 0 l 713 0 l p ef -1168 -346 m 1168 -1 l 1116 -1 l 1116 -346 l 983 -346 l 983 -389 l -1302 -389 l 1302 -346 l 1168 -346 l p ef -1352 -362 m 1352 -409 l 1401 -409 l 1401 -362 l 1352 -362 l p -1352 0 m 1352 -298 l 1401 -298 l 1401 0 l 1352 0 l p ef -1651 0 m 1651 -189 l 1651 -218 1647 -238 1639 -249 ct 1631 -260 1617 -266 1596 -266 ct -1575 -266 1558 -258 1546 -241 ct 1534 -225 1527 -202 1527 -173 ct 1527 0 l 1478 0 l -1478 -235 l 1478 -270 1478 -291 1476 -298 ct 1523 -298 l 1523 -298 1524 -295 1524 -291 ct -1524 -287 1524 -282 1525 -277 ct 1525 -272 1525 -262 1525 -247 ct 1526 -247 l -1537 -269 1549 -283 1563 -292 ct 1577 -300 1594 -304 1613 -304 ct 1636 -304 1654 -300 1667 -290 ct -1680 -281 1689 -267 1694 -247 ct 1695 -247 l 1705 -268 1718 -282 1732 -291 ct -1747 -300 1765 -304 1785 -304 ct 1816 -304 1837 -296 1851 -279 ct 1865 -263 1872 -236 1872 -199 ct -1872 0 l 1823 0 l 1823 -189 l 1823 -218 1819 -238 1811 -249 ct 1803 -260 1789 -266 1768 -266 ct -1746 -266 1730 -258 1718 -242 ct 1706 -225 1700 -203 1700 -173 ct 1700 0 l 1651 0 l +262 -82 m 262 -54 251 -32 230 -17 ct 209 -2 179 6 141 6 ct 104 6 75 0 55 -12 ct +35 -25 22 -44 16 -70 ct 59 -78 l 64 -62 72 -50 86 -43 ct 99 -36 117 -32 141 -32 ct +166 -32 184 -36 196 -43 ct 208 -51 213 -63 213 -78 ct 213 -90 209 -99 201 -107 ct +193 -114 180 -120 162 -125 ct 127 -134 l 98 -142 78 -149 66 -156 ct 54 -163 45 -172 38 -182 ct +31 -192 28 -204 28 -219 ct 28 -246 37 -267 57 -281 ct 76 -295 104 -303 141 -303 ct +174 -303 200 -297 220 -285 ct 239 -274 251 -255 256 -229 ct 212 -224 l 209 -237 202 -247 190 -254 ct +178 -261 161 -265 141 -265 ct 119 -265 102 -262 92 -255 ct 81 -248 76 -238 76 -224 ct +76 -215 78 -208 82 -203 ct 87 -197 93 -193 102 -189 ct 111 -185 129 -180 156 -173 ct +183 -166 202 -160 213 -155 ct 225 -149 234 -143 241 -136 ct 247 -129 252 -121 256 -112 ct +260 -103 262 -93 262 -82 ct p ef +320 -362 m 320 -409 l 369 -409 l 369 -362 l 320 -362 l p +320 0 m 320 -298 l 369 -298 l 369 0 l 320 0 l p ef +634 0 m 634 -189 l 634 -209 632 -224 628 -235 ct 625 -246 618 -254 610 -258 ct +602 -263 589 -266 573 -266 ct 549 -266 530 -257 516 -241 ct 503 -225 496 -202 496 -173 ct +496 0 l 446 0 l 446 -235 l 446 -270 446 -291 444 -298 ct 491 -298 l 491 -298 492 -295 492 -291 ct +492 -287 492 -282 493 -277 ct 493 -272 493 -262 493 -247 ct 494 -247 l 506 -268 519 -283 534 -291 ct +549 -300 567 -304 590 -304 ct 622 -304 646 -296 661 -280 ct 676 -263 684 -236 684 -199 ct +684 0 l 634 0 l p ef +796 -150 m 796 -111 802 -81 814 -62 ct 827 -43 846 -33 871 -33 ct 889 -33 903 -38 915 -48 ct +927 -57 934 -72 937 -92 ct 987 -88 l 983 -60 971 -37 951 -20 ct 930 -3 904 6 872 6 ct +831 6 799 -7 777 -34 ct 755 -60 744 -99 744 -149 ct 744 -200 755 -238 777 -264 ct +799 -291 831 -304 872 -304 ct 902 -304 928 -296 948 -280 ct 968 -264 980 -243 985 -215 ct +935 -211 l 932 -227 925 -241 915 -250 ct 905 -260 890 -265 870 -265 ct 844 -265 825 -256 813 -239 ct +802 -221 796 -192 796 -150 ct p ef +1077 -138 m 1077 -104 1084 -78 1098 -59 ct 1112 -41 1133 -31 1160 -31 ct 1182 -31 1199 -36 1212 -44 ct +1225 -53 1234 -64 1238 -77 ct 1282 -65 l 1264 -18 1223 6 1160 6 ct 1116 6 1083 -7 1060 -33 ct +1036 -60 1025 -99 1025 -151 ct 1025 -200 1036 -238 1060 -264 ct 1083 -291 1115 -304 1158 -304 ct +1246 -304 1290 -251 1290 -145 ct 1290 -138 l 1077 -138 l p +1238 -176 m 1236 -208 1228 -231 1214 -245 ct 1201 -260 1182 -267 1157 -267 ct +1133 -267 1114 -259 1100 -243 ct 1086 -227 1079 -204 1078 -176 ct 1238 -176 l p ef -1984 -138 m 1984 -104 1991 -78 2005 -59 ct 2019 -41 2040 -31 2067 -31 ct 2089 -31 2106 -36 2119 -44 ct -2132 -53 2141 -64 2145 -77 ct 2189 -65 l 2171 -18 2130 6 2067 6 ct 2023 6 1990 -7 1967 -33 ct -1943 -60 1932 -99 1932 -151 ct 1932 -200 1943 -238 1967 -264 ct 1990 -291 2022 -304 2065 -304 ct -2153 -304 2197 -251 2197 -145 ct 2197 -138 l 1984 -138 l p -2145 -176 m 2143 -208 2135 -231 2121 -245 ct 2108 -260 2089 -267 2064 -267 ct -2040 -267 2021 -259 2007 -243 ct 1993 -227 1986 -204 1985 -176 ct 2145 -176 l +1532 -351 m 1489 -351 1456 -337 1432 -309 ct 1408 -282 1396 -244 1396 -196 ct +1396 -148 1409 -110 1433 -81 ct 1458 -52 1492 -37 1534 -37 ct 1589 -37 1630 -64 1657 -118 ct +1700 -97 l 1684 -63 1661 -38 1632 -20 ct 1604 -3 1570 6 1532 6 ct 1493 6 1459 -2 1430 -18 ct +1402 -35 1380 -58 1365 -88 ct 1350 -118 1343 -154 1343 -196 ct 1343 -258 1359 -306 1393 -341 ct +1426 -376 1472 -394 1532 -394 ct 1573 -394 1607 -386 1635 -370 ct 1663 -354 1683 -330 1696 -298 ct +1646 -281 l 1637 -304 1623 -321 1603 -333 ct 1583 -345 1559 -351 1532 -351 ct p ef +1874 -3 m 1857 2 1841 4 1823 4 ct 1784 4 1764 -19 1764 -64 ct 1764 -263 l 1730 -263 l +1730 -299 l 1766 -299 l 1780 -366 l 1814 -366 l 1814 -299 l 1869 -299 l +1869 -263 l 1814 -263 l 1814 -74 l 1814 -60 1816 -50 1821 -44 ct 1825 -38 1833 -35 1845 -35 ct +1852 -35 1861 -37 1874 -39 ct 1874 -3 l p ef +2139 -82 m 2139 -54 2128 -32 2107 -17 ct 2086 -2 2056 6 2018 6 ct 1981 6 1952 0 1932 -12 ct +1912 -25 1899 -44 1893 -70 ct 1936 -78 l 1941 -62 1949 -50 1963 -43 ct 1976 -36 1994 -32 2018 -32 ct +2043 -32 2061 -36 2073 -43 ct 2085 -51 2090 -63 2090 -78 ct 2090 -90 2086 -99 2078 -107 ct +2070 -114 2057 -120 2039 -125 ct 2004 -134 l 1975 -142 1955 -149 1943 -156 ct +1931 -163 1922 -172 1915 -182 ct 1908 -192 1905 -204 1905 -219 ct 1905 -246 1914 -267 1934 -281 ct +1953 -295 1981 -303 2018 -303 ct 2051 -303 2077 -297 2097 -285 ct 2116 -274 2128 -255 2133 -229 ct +2089 -224 l 2086 -237 2079 -247 2067 -254 ct 2055 -261 2038 -265 2018 -265 ct +1996 -265 1979 -262 1969 -255 ct 1958 -248 1953 -238 1953 -224 ct 1953 -215 1955 -208 1959 -203 ct +1964 -197 1970 -193 1979 -189 ct 1988 -185 2006 -180 2033 -173 ct 2060 -166 2079 -160 2090 -155 ct +2102 -149 2111 -143 2118 -136 ct 2124 -129 2129 -121 2133 -112 ct 2137 -103 2139 -93 2139 -82 ct +p ef +2357 -346 m 2357 -1 l 2305 -1 l 2305 -346 l 2172 -346 l 2172 -389 l +2491 -389 l 2491 -346 l 2357 -346 l p ef +2541 -362 m 2541 -409 l 2590 -409 l 2590 -362 l 2541 -362 l p +2541 0 m 2541 -298 l 2590 -298 l 2590 0 l 2541 0 l p ef +2840 0 m 2840 -189 l 2840 -218 2836 -238 2828 -249 ct 2820 -260 2806 -266 2785 -266 ct +2764 -266 2747 -258 2735 -241 ct 2723 -225 2716 -202 2716 -173 ct 2716 0 l 2667 0 l +2667 -235 l 2667 -270 2667 -291 2665 -298 ct 2712 -298 l 2712 -298 2713 -295 2713 -291 ct +2713 -287 2713 -282 2714 -277 ct 2714 -272 2714 -262 2714 -247 ct 2715 -247 l +2726 -269 2738 -283 2752 -292 ct 2766 -300 2783 -304 2802 -304 ct 2825 -304 2843 -300 2856 -290 ct +2869 -281 2878 -267 2883 -247 ct 2884 -247 l 2894 -268 2907 -282 2921 -291 ct +2936 -300 2954 -304 2974 -304 ct 3005 -304 3026 -296 3040 -279 ct 3054 -263 3061 -236 3061 -199 ct +3061 0 l 3012 0 l 3012 -189 l 3012 -218 3008 -238 3000 -249 ct 2992 -260 2978 -266 2957 -266 ct +2935 -266 2919 -258 2907 -242 ct 2895 -225 2889 -203 2889 -173 ct 2889 0 l 2840 0 l +p ef +3173 -138 m 3173 -104 3180 -78 3194 -59 ct 3208 -41 3229 -31 3256 -31 ct 3278 -31 3295 -36 3308 -44 ct +3321 -53 3330 -64 3334 -77 ct 3378 -65 l 3360 -18 3319 6 3256 6 ct 3212 6 3179 -7 3156 -33 ct +3132 -60 3121 -99 3121 -151 ct 3121 -200 3132 -238 3156 -264 ct 3179 -291 3211 -304 3254 -304 ct +3342 -304 3386 -251 3386 -145 ct 3386 -138 l 3173 -138 l p +3334 -176 m 3332 -208 3324 -231 3310 -245 ct 3297 -260 3278 -267 3253 -267 ct +3229 -267 3210 -259 3196 -243 ct 3182 -227 3175 -204 3174 -176 ct 3334 -176 l +p ef +3700 -149 m 3700 -97 3689 -58 3666 -32 ct 3643 -7 3609 6 3566 6 ct 3522 6 3489 -7 3467 -34 ct +3445 -60 3434 -99 3434 -149 ct 3434 -252 3478 -304 3567 -304 ct 3613 -304 3646 -291 3668 -266 ct +3689 -241 3700 -202 3700 -149 ct p +3648 -149 m 3648 -190 3642 -220 3630 -239 ct 3617 -258 3597 -267 3568 -267 ct +3539 -267 3518 -257 3505 -238 ct 3492 -219 3486 -190 3486 -149 ct 3486 -110 3492 -80 3505 -60 ct +3518 -41 3538 -31 3565 -31 ct 3595 -31 3616 -40 3629 -59 ct 3642 -79 3648 -108 3648 -149 ct +p ef +3809 -298 m 3809 -109 l 3809 -89 3811 -74 3815 -63 ct 3819 -52 3825 -44 3834 -40 ct +3842 -35 3855 -32 3871 -32 ct 3895 -32 3914 -41 3927 -57 ct 3941 -73 3948 -96 3948 -125 ct +3948 -298 l 3998 -298 l 3998 -63 l 3998 -28 3998 -7 3999 0 ct 3952 0 l +3952 0 3952 -3 3952 -7 ct 3952 -11 3951 -16 3951 -21 ct 3951 -26 3951 -36 3950 -51 ct +3949 -51 l 3938 -30 3925 -15 3910 -7 ct 3895 2 3876 6 3854 6 ct 3821 6 3797 -2 3782 -18 ct +3767 -35 3760 -62 3760 -99 ct 3760 -298 l 3809 -298 l p ef +4189 -3 m 4172 2 4156 4 4138 4 ct 4099 4 4079 -19 4079 -64 ct 4079 -263 l 4045 -263 l +4045 -299 l 4081 -299 l 4095 -366 l 4129 -366 l 4129 -299 l 4184 -299 l +4184 -263 l 4129 -263 l 4129 -74 l 4129 -60 4131 -50 4136 -44 ct 4140 -38 4148 -35 4160 -35 ct +4167 -35 4176 -37 4189 -39 ct 4189 -3 l p ef pom gs 1 lj 4584 2943 m 7820 2943 l ps @@ -1491,70 +1475,70 @@ gs 19250 2754 m 19250 3516 l ps gr pum -19285 3433 t -0.750 0.003 0.257 c 33 -316 m 33 -357 l 76 -357 l 76 -316 l 33 -316 l +19285 3437 t +0.750 0.003 0.257 c 33 -316 m 33 -358 l 76 -358 l 76 -316 l 33 -316 l p -33 0 m 33 -260 l 76 -260 l 76 0 l 33 0 l p ef -308 0 m 308 -165 l 308 -182 306 -195 303 -205 ct 299 -214 294 -221 286 -225 ct -279 -229 268 -232 254 -232 ct 233 -232 217 -224 205 -210 ct 193 -196 187 -176 187 -151 ct -187 0 l 143 0 l 143 -205 l 143 -235 143 -253 142 -260 ct 183 -260 l 183 -259 183 -257 183 -254 ct -183 -250 184 -246 184 -242 ct 184 -237 184 -228 185 -216 ct 185 -216 l 195 -234 207 -246 220 -254 ct -233 -261 249 -265 269 -265 ct 297 -265 318 -258 331 -244 ct 345 -230 351 -206 351 -173 ct -351 0 l 308 0 l p ef -515 -2 m 501 2 486 4 472 4 ct 437 4 420 -16 420 -55 ct 420 -229 l 389 -229 l -389 -260 l 421 -260 l 434 -318 l 463 -318 l 463 -260 l 511 -260 l -511 -229 l 463 -229 l 463 -64 l 463 -52 465 -43 469 -38 ct 473 -33 480 -30 490 -30 ct -496 -30 504 -32 515 -34 ct 515 -2 l p ef -585 -121 m 585 -91 592 -68 604 -52 ct 616 -36 634 -27 658 -27 ct 677 -27 692 -31 703 -39 ct -715 -46 722 -56 726 -67 ct 764 -57 l 749 -16 713 5 658 5 ct 620 5 590 -6 570 -29 ct -550 -52 540 -86 540 -132 ct 540 -175 550 -208 570 -231 ct 590 -254 619 -265 656 -265 ct -733 -265 771 -219 771 -127 ct 771 -121 l 585 -121 l p -727 -154 m 724 -181 717 -201 706 -214 ct 694 -227 677 -233 656 -233 ct 635 -233 618 -226 606 -212 ct -594 -198 587 -179 586 -154 ct 727 -154 l p ef -826 0 m 826 -200 l 826 -218 826 -238 825 -260 ct 866 -260 l 867 -231 868 -213 868 -207 ct -869 -207 l 875 -229 883 -245 892 -253 ct 901 -261 914 -265 930 -265 ct 936 -265 942 -264 948 -263 ct -948 -223 l 942 -225 935 -225 925 -225 ct 907 -225 893 -218 884 -202 ct 874 -187 870 -164 870 -136 ct -870 0 l 826 0 l p ef -989 0 m 989 -200 l 989 -218 989 -238 988 -260 ct 1029 -260 l 1030 -231 1031 -213 1031 -207 ct -1032 -207 l 1038 -229 1046 -245 1055 -253 ct 1064 -261 1077 -265 1093 -265 ct -1099 -265 1105 -264 1111 -263 ct 1111 -223 l 1105 -225 1098 -225 1088 -225 ct -1070 -225 1056 -218 1047 -202 ct 1037 -187 1033 -164 1033 -136 ct 1033 0 l 989 0 l +33 0 m 33 -261 l 76 -261 l 76 0 l 33 0 l p ef +309 0 m 309 -166 l 309 -183 307 -196 304 -206 ct 301 -215 295 -222 288 -226 ct +280 -230 270 -232 255 -232 ct 234 -232 218 -225 206 -211 ct 194 -197 188 -177 188 -151 ct +188 0 l 144 0 l 144 -205 l 144 -236 144 -254 143 -261 ct 184 -261 l 184 -260 184 -258 184 -255 ct +184 -251 185 -247 185 -242 ct 185 -238 185 -229 186 -217 ct 186 -217 l 196 -235 208 -247 221 -255 ct +234 -262 250 -266 270 -266 ct 299 -266 319 -259 333 -245 ct 346 -230 353 -207 353 -174 ct +353 0 l 309 0 l p ef +520 -2 m 505 2 491 4 476 4 ct 441 4 424 -16 424 -55 ct 424 -229 l 393 -229 l +393 -261 l 425 -261 l 438 -320 l 467 -320 l 467 -261 l 515 -261 l +515 -229 l 467 -229 l 467 -65 l 467 -52 469 -43 473 -38 ct 477 -33 484 -31 495 -31 ct +500 -31 509 -32 520 -34 ct 520 -2 l p ef +590 -121 m 590 -91 596 -68 608 -52 ct 621 -36 639 -28 662 -28 ct 681 -28 696 -31 708 -39 ct +719 -46 727 -56 731 -68 ct 769 -57 l 753 -16 718 5 662 5 ct 624 5 594 -7 574 -30 ct +554 -53 544 -87 544 -132 ct 544 -175 554 -208 574 -231 ct 594 -254 623 -266 661 -266 ct +737 -266 776 -220 776 -127 ct 776 -121 l 590 -121 l p +731 -154 m 729 -182 722 -202 710 -215 ct 698 -228 682 -234 660 -234 ct 639 -234 622 -227 610 -213 ct +598 -199 591 -179 590 -154 ct 731 -154 l p ef +833 0 m 833 -200 l 833 -219 833 -239 832 -261 ct 873 -261 l 874 -232 875 -214 875 -208 ct +876 -208 l 883 -230 891 -245 900 -254 ct 909 -262 921 -266 938 -266 ct 943 -266 949 -265 955 -264 ct +955 -224 l 950 -225 942 -226 932 -226 ct 914 -226 900 -218 891 -203 ct 881 -187 877 -165 877 -136 ct +877 0 l 833 0 l p ef +998 0 m 998 -200 l 998 -219 998 -239 997 -261 ct 1038 -261 l 1039 -232 1040 -214 1040 -208 ct +1041 -208 l 1048 -230 1056 -245 1065 -254 ct 1074 -262 1086 -266 1103 -266 ct +1108 -266 1114 -265 1120 -264 ct 1120 -224 l 1115 -225 1107 -226 1097 -226 ct +1079 -226 1065 -218 1056 -203 ct 1046 -187 1042 -165 1042 -136 ct 1042 0 l 998 0 l p ef -1195 -260 m 1195 -95 l 1195 -78 1196 -65 1200 -55 ct 1203 -46 1208 -39 1216 -35 ct -1223 -31 1234 -28 1248 -28 ct 1269 -28 1286 -36 1298 -50 ct 1310 -64 1316 -84 1316 -109 ct -1316 -260 l 1359 -260 l 1359 -55 l 1359 -25 1359 -7 1360 0 ct 1320 0 l -1319 -1 1319 -3 1319 -6 ct 1319 -10 1319 -14 1318 -18 ct 1318 -23 1318 -32 1318 -44 ct -1317 -44 l 1307 -26 1295 -14 1282 -6 ct 1269 1 1253 5 1234 5 ct 1205 5 1184 -2 1171 -16 ct -1158 -30 1151 -54 1151 -87 ct 1151 -260 l 1195 -260 l p ef -1645 -131 m 1645 -40 1614 5 1550 5 ct 1510 5 1483 -10 1469 -40 ct 1468 -40 l -1468 -39 1469 -25 1469 1 ct 1469 102 l 1425 102 l 1425 -207 l 1425 -234 1425 -252 1424 -260 ct -1466 -260 l 1466 -260 1466 -258 1466 -254 ct 1467 -250 1467 -244 1467 -235 ct -1468 -227 1468 -222 1468 -219 ct 1469 -219 l 1477 -235 1487 -246 1500 -254 ct -1512 -261 1529 -265 1550 -265 ct 1582 -265 1606 -254 1622 -233 ct 1638 -211 1645 -177 1645 -131 ct +1204 -261 m 1204 -95 l 1204 -78 1205 -65 1209 -55 ct 1212 -46 1218 -39 1225 -35 ct +1232 -31 1243 -29 1258 -29 ct 1278 -29 1295 -36 1307 -50 ct 1319 -64 1325 -84 1325 -110 ct +1325 -261 l 1368 -261 l 1368 -56 l 1368 -25 1369 -7 1370 0 ct 1329 0 l +1329 -1 1329 -3 1328 -6 ct 1328 -10 1328 -14 1328 -19 ct 1328 -23 1327 -32 1327 -44 ct +1326 -44 l 1316 -26 1305 -14 1292 -6 ct 1279 1 1262 5 1243 5 ct 1214 5 1193 -2 1180 -16 ct +1167 -31 1160 -54 1160 -87 ct 1160 -261 l 1204 -261 l p ef +1658 -132 m 1658 -40 1626 5 1562 5 ct 1522 5 1495 -10 1481 -40 ct 1480 -40 l +1480 -39 1481 -25 1481 1 ct 1481 103 l 1437 103 l 1437 -208 l 1437 -234 1437 -252 1436 -261 ct +1478 -261 l 1478 -260 1478 -258 1479 -254 ct 1479 -250 1479 -244 1480 -236 ct +1480 -228 1480 -222 1480 -219 ct 1481 -219 l 1489 -235 1499 -247 1512 -254 ct +1525 -262 1541 -266 1562 -266 ct 1594 -266 1618 -255 1634 -233 ct 1650 -212 1658 -178 1658 -132 ct p -1600 -130 m 1600 -167 1595 -193 1585 -208 ct 1576 -224 1560 -232 1539 -232 ct -1521 -232 1508 -228 1498 -221 ct 1489 -214 1481 -202 1476 -187 ct 1471 -172 1469 -152 1469 -127 ct -1469 -93 1474 -68 1485 -51 ct 1496 -35 1514 -27 1538 -27 ct 1560 -27 1575 -35 1585 -51 ct -1595 -67 1600 -93 1600 -130 ct p ef -1798 -2 m 1784 2 1769 4 1755 4 ct 1720 4 1703 -16 1703 -55 ct 1703 -229 l 1672 -229 l -1672 -260 l 1704 -260 l 1717 -318 l 1746 -318 l 1746 -260 l 1794 -260 l -1794 -229 l 1746 -229 l 1746 -64 l 1746 -52 1748 -43 1752 -38 ct 1756 -33 1763 -30 1773 -30 ct -1779 -30 1787 -32 1798 -34 ct 1798 -2 l p ef -1867 -121 m 1867 -91 1874 -68 1886 -52 ct 1898 -36 1916 -27 1940 -27 ct 1959 -27 1974 -31 1985 -39 ct -1997 -46 2004 -56 2008 -67 ct 2046 -57 l 2031 -16 1995 5 1940 5 ct 1902 5 1872 -6 1852 -29 ct -1832 -52 1822 -86 1822 -132 ct 1822 -175 1832 -208 1852 -231 ct 1872 -254 1901 -265 1938 -265 ct -2015 -265 2053 -219 2053 -127 ct 2053 -121 l 1867 -121 l p -2009 -154 m 2006 -181 1999 -201 1988 -214 ct 1976 -227 1959 -233 1938 -233 ct -1917 -233 1900 -226 1888 -212 ct 1876 -198 1869 -179 1868 -154 ct 2009 -154 l +1612 -131 m 1612 -167 1608 -193 1598 -209 ct 1588 -224 1572 -232 1551 -232 ct +1534 -232 1520 -228 1511 -221 ct 1501 -214 1493 -203 1488 -187 ct 1483 -172 1481 -152 1481 -127 ct +1481 -93 1486 -68 1497 -51 ct 1508 -35 1526 -27 1550 -27 ct 1572 -27 1588 -35 1598 -51 ct +1607 -67 1612 -93 1612 -131 ct p ef +1813 -2 m 1798 2 1784 4 1769 4 ct 1734 4 1717 -16 1717 -55 ct 1717 -229 l 1686 -229 l +1686 -261 l 1718 -261 l 1731 -320 l 1760 -320 l 1760 -261 l 1808 -261 l +1808 -229 l 1760 -229 l 1760 -65 l 1760 -52 1762 -43 1766 -38 ct 1770 -33 1777 -31 1788 -31 ct +1793 -31 1802 -32 1813 -34 ct 1813 -2 l p ef +1884 -121 m 1884 -91 1890 -68 1902 -52 ct 1915 -36 1933 -28 1956 -28 ct 1975 -28 1990 -31 2002 -39 ct +2013 -46 2021 -56 2025 -68 ct 2063 -57 l 2047 -16 2012 5 1956 5 ct 1918 5 1888 -7 1868 -30 ct +1848 -53 1838 -87 1838 -132 ct 1838 -175 1848 -208 1868 -231 ct 1888 -254 1917 -266 1955 -266 ct +2031 -266 2070 -220 2070 -127 ct 2070 -121 l 1884 -121 l p +2025 -154 m 2023 -182 2016 -202 2004 -215 ct 1992 -228 1976 -234 1954 -234 ct +1933 -234 1916 -227 1904 -213 ct 1892 -199 1885 -179 1884 -154 ct 2025 -154 l p ef -2273 -42 m 2265 -26 2254 -14 2241 -6 ct 2228 1 2211 4 2192 4 ct 2159 4 2134 -7 2119 -29 ct -2103 -51 2096 -84 2096 -129 ct 2096 -220 2128 -265 2192 -265 ct 2211 -265 2228 -261 2241 -254 ct -2254 -247 2265 -236 2273 -220 ct 2273 -220 l 2273 -249 l 2273 -357 l 2316 -357 l -2316 -54 l 2316 -27 2316 -9 2317 0 ct 2276 0 l 2276 -3 2275 -9 2274 -18 ct -2274 -27 2274 -35 2274 -42 ct 2273 -42 l p -2141 -131 m 2141 -94 2146 -68 2156 -53 ct 2165 -37 2181 -29 2203 -29 ct 2227 -29 2245 -37 2256 -54 ct -2267 -71 2273 -98 2273 -133 ct 2273 -168 2267 -193 2256 -209 ct 2245 -225 2227 -233 2203 -233 ct -2181 -233 2165 -225 2156 -209 ct 2146 -193 2141 -167 2141 -131 ct p ef +2290 -42 m 2282 -25 2271 -13 2258 -6 ct 2245 1 2228 5 2209 5 ct 2176 5 2152 -6 2136 -28 ct +2121 -51 2113 -84 2113 -129 ct 2113 -220 2145 -266 2209 -266 ct 2229 -266 2245 -262 2258 -255 ct +2271 -248 2282 -236 2290 -221 ct 2291 -221 l 2290 -250 l 2290 -358 l 2333 -358 l +2333 -54 l 2333 -26 2334 -9 2335 0 ct 2293 0 l 2293 -2 2292 -8 2292 -18 ct +2291 -27 2291 -35 2291 -42 ct 2290 -42 l p +2158 -131 m 2158 -94 2163 -68 2173 -52 ct 2182 -36 2198 -29 2220 -29 ct 2244 -29 2262 -37 2273 -54 ct +2284 -71 2290 -98 2290 -134 ct 2290 -168 2284 -194 2273 -210 ct 2262 -226 2245 -234 2220 -234 ct +2198 -234 2183 -226 2173 -210 ct 2163 -193 2158 -167 2158 -131 ct p ef pom gr gs diff --git a/src/wifi/doc/source/wifi-design.rst b/src/wifi/doc/source/wifi-design.rst index a445a3e47..2e9688bce 100644 --- a/src/wifi/doc/source/wifi-design.rst +++ b/src/wifi/doc/source/wifi-design.rst @@ -1530,20 +1530,22 @@ EMLSR clients: * ``EmlsrUlTxopRtsSentByAuxPhyTrace``: main PHY is starting switching to another link to take over an UL TXOP started by a TX capable aux PHY that transmitted an RTS frame on that link * ``EmlsrTxopEndedTrace``: main PHY is starting switching because a (DL or UL) TXOP ended. This - trace has a parameter, remTime, whose value is set as follows. When a TXOP ends after a - successful transmission and aux PHYs do not switch link, the main PHY switches back to the - preferred link; in such a case, the remTime parameter is set to zero. However, a TXOP may end - due to a CTS timeout after that a TX capable aux PHY had sent an RTS to start an UL TXOP and - the main PHY may be switching when the CTS timeout occurs. If the main PHY switch cannot be - interrupted (see case a) in Fig. :ref:`fig-emlsr-txop-ended-trace`), which is the case with the - Default EMLSR Manager or with the Advanced EMLSR Manager when the ``InterruptSwitch`` attribute - is false, the remTime parameter is set to the remaining channel switch delay at the time the - TXOP ends. If the main PHY switch can be interrupted (see case b) in Fig. - :ref:`fig-emlsr-txop-ended-trace`), which is the case with the Advanced EMLSR Manager when the - ``InterruptSwitch`` attribute is true, the remTime parameter indicates the time that was left - to complete the previous channel switch. Note that, in the latter case, this channel switch can - also occur when the aux PHYs switch link, as the main PHY returns to the link it was operating - on before starting the previous channel switch. + trace is called when aux PHYs do not switch link and the main PHY switches back to the preferred + link when a TXOP carried out on another link ends + * ``EmlsrRtsSentByAuxPhyCtsTimeoutTrace``: main PHY is starting switching after a CTS timeout + occurred on the link on which an RTS was transmitted to start an UL TXOP. This trace + has a parameter, sinceCtsTimeout, that provides the time elapsed since the CTS timeout occurred. + Normally, this trace is called when aux PHYs do not switch links, because the main PHY has to + return to the preferred link upon CTS timeout, because a TXOP did not start. In some cases, the + main PHY may be switching when CTS timeout occurs; this happens when an aux PHY that is TX + capable transmits an RTS and the main PHY starts switching to the aux PHY link. In such a case, + the main PHY completes the current link switch and then it starts switching to return back to + the preferred link (see case (a) in Fig. :ref:`fig-emlsr-txop-ended-trace`). If the + main PHY switch can be interrupted (see case (b) in Fig. :ref:`fig-emlsr-txop-ended-trace`), + which is the case with the Advanced EMLSR Manager when the ``InterruptSwitch`` attribute is + false, the previous switch is interrupted and the main PHY starts switching to the previous + link (in this case, the time elapsed since the CTS timeout occurred is zero). This holds true + for both the case aux PHYs do not switch link and the case aux PHYs switch link. Ack manager ########### diff --git a/src/wifi/model/eht/advanced-emlsr-manager.cc b/src/wifi/model/eht/advanced-emlsr-manager.cc index 222f3858d..7cbe982c9 100644 --- a/src/wifi/model/eht/advanced-emlsr-manager.cc +++ b/src/wifi/model/eht/advanced-emlsr-manager.cc @@ -245,12 +245,20 @@ AdvancedEmlsrManager::DoGetDelayUntilAccessRequest(uint8_t linkId) } } - if (GetStaMac()->GetWifiPhy(linkId) == GetStaMac()->GetDevice()->GetPhy(GetMainPhyId()) && - !m_auxPhyTxCapable && m_ccaLastPifs.IsPending()) + auto phy = GetStaMac()->GetWifiPhy(linkId); + auto mainPhy = GetStaMac()->GetDevice()->GetPhy(m_mainPhyId); + + if (phy == mainPhy) { - // main PHY has got access on the link it switched to (because the aux PHY is not TX - // capable) before a PIFS interval was elapsed: do not start the TXOP now - return {false, Time{0}}; + if (!m_auxPhyTxCapable && m_ccaLastPifs.IsPending()) + { + // main PHY has got access on the link it switched to (because the aux PHY is not TX + // capable) before a PIFS interval was elapsed: do not start the TXOP now + return {false, Time{0}}; + } + + // UL TXOP is going to start + m_rtsStartingUlTxop[linkId] = {Simulator::Now(), false}; } return {true, Time{0}}; @@ -329,6 +337,20 @@ AdvancedEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) // or // - SwitchAuxPhy is false and there is an aux PHY to reconnect + std::shared_ptr traceInfo; + + if (const auto it = m_rtsStartingUlTxop.find(linkId); + it != m_rtsStartingUlTxop.cend() && it->second.second) + { + // TXOP ended due to a CTS timeout following the RTS that started a TXOP + traceInfo = std::make_shared(Time{0}); + m_rtsStartingUlTxop.erase(it); + } + else + { + traceInfo = std::make_shared(); + } + // Note that the main PHY may be switching at the end of a TXOP when, e.g., the main PHY // starts switching to a link on which an aux PHY gained a TXOP and sent an RTS, but the CTS // is not received and the UL TXOP ends before the main PHY channel switch is completed. @@ -342,17 +364,18 @@ AdvancedEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) !m_switchAuxPhy || m_mainPhySwitchInfo.end >= Simulator::Now(), "Aux PHY next link ID should have a value when interrupting a main PHY switch"); uint8_t nextLinkId = m_switchAuxPhy ? m_mainPhySwitchInfo.from : GetMainPhyId(); - const auto delay = mainPhy->IsStateSwitching() ? mainPhy->GetDelayUntilIdle() : Time{0}; - SwitchMainPhy(nextLinkId, - false, - DONT_RESET_BACKOFF, - REQUEST_ACCESS, - EmlsrTxopEndedTrace(delay)); + SwitchMainPhy(nextLinkId, false, DONT_RESET_BACKOFF, REQUEST_ACCESS, std::move(*traceInfo)); } else { // delay link switch until current channel switching is completed const auto delay = mainPhy->GetDelayUntilIdle(); + + if (auto info = std::dynamic_pointer_cast(traceInfo)) + { + info->sinceCtsTimeout = delay; + } + Simulator::Schedule(delay, [=, this]() { // request the main PHY to switch back to the preferred link only if in the meantime // no TXOP started on another link (which will require the main PHY to switch link) @@ -362,7 +385,7 @@ AdvancedEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) false, DONT_RESET_BACKOFF, REQUEST_ACCESS, - EmlsrTxopEndedTrace(delay)); + std::move(*traceInfo)); } }); } @@ -412,7 +435,7 @@ AdvancedEmlsrManager::GetDelayUnlessMainPhyTakesOverUlTxop(uint8_t linkId) // TXOP can be started, main PHY will be scheduled to switch by NotifyRtsSent as soon as the // transmission of the RTS is notified - m_switchMainPhyOnRtsTx[linkId] = Simulator::Now(); + m_rtsStartingUlTxop[linkId] = {Simulator::Now(), false}; return {true, Time{0}}; } diff --git a/src/wifi/model/eht/default-emlsr-manager.cc b/src/wifi/model/eht/default-emlsr-manager.cc index e9b754975..118d13e95 100644 --- a/src/wifi/model/eht/default-emlsr-manager.cc +++ b/src/wifi/model/eht/default-emlsr-manager.cc @@ -188,6 +188,15 @@ std::pair DefaultEmlsrManager::DoGetDelayUntilAccessRequest(uint8_t linkId) { NS_LOG_FUNCTION(this << linkId); + auto phy = GetStaMac()->GetWifiPhy(linkId); + auto mainPhy = GetStaMac()->GetDevice()->GetPhy(m_mainPhyId); + + if (phy == mainPhy) + { + // UL TXOP is going to start + m_rtsStartingUlTxop[linkId] = {Simulator::Now(), false}; + } + return {true, Time{0}}; // start the TXOP } @@ -208,13 +217,24 @@ DefaultEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) { NS_LOG_FUNCTION(this << linkId); - // switch main PHY to the previous link, if needed - if (!m_switchAuxPhy) + if (m_switchAuxPhy) { + return; // nothing to do + } + + // switch main PHY to the previous link, if needed + if (const auto it = m_rtsStartingUlTxop.find(linkId); + it != m_rtsStartingUlTxop.cend() && it->second.second) + { + // TXOP ended due to a CTS timeout following the RTS that started a TXOP const auto mainPhy = GetStaMac()->GetDevice()->GetPhy(m_mainPhyId); const auto delay = mainPhy->IsStateSwitching() ? mainPhy->GetDelayUntilIdle() : Time{0}; - SwitchMainPhyBackToPreferredLink(linkId, EmlsrTxopEndedTrace(delay)); + SwitchMainPhyBackToPreferredLink(linkId, EmlsrCtsAfterRtsTimeoutTrace(delay)); + m_rtsStartingUlTxop.erase(it); + return; } + + SwitchMainPhyBackToPreferredLink(linkId, EmlsrTxopEndedTrace()); } void @@ -340,7 +360,7 @@ DefaultEmlsrManager::GetDelayUnlessMainPhyTakesOverUlTxop(uint8_t linkId) // TXOP can be started, main PHY will be scheduled to switch by NotifyRtsSent as soon as the // transmission of the RTS is notified - m_switchMainPhyOnRtsTx[linkId] = Simulator::Now(); + m_rtsStartingUlTxop[linkId] = {Simulator::Now(), false}; return {true, Time{0}}; } @@ -352,16 +372,23 @@ DefaultEmlsrManager::NotifyRtsSent(uint8_t linkId, { NS_LOG_FUNCTION(this << *rts << txVector); - const auto it = m_switchMainPhyOnRtsTx.find(linkId); + const auto it = m_rtsStartingUlTxop.find(linkId); - if (it == m_switchMainPhyOnRtsTx.cend() || it->second != Simulator::Now()) + if (it == m_rtsStartingUlTxop.cend() || it->second.first != Simulator::Now()) { - // No request for main PHY to switch or obsolete request - return; + return; // Not an RTS starting an UL TXOP + } + it->second.second = true; + + auto phy = GetStaMac()->GetWifiPhy(linkId); + auto mainPhy = GetStaMac()->GetDevice()->GetPhy(m_mainPhyId); + + if (phy == mainPhy) + { + return; // RTS sent by the main PHY } // Main PHY shall terminate the channel switch at the end of CTS reception - auto mainPhy = GetStaMac()->GetDevice()->GetPhy(m_mainPhyId); const auto delay = GetTimeToCtsEnd(linkId, txVector) - mainPhy->GetChannelSwitchDelay(); NS_ASSERT_MSG(delay.IsPositive(), "RTS is being sent, but not enough time for main PHY to switch"); @@ -374,8 +401,13 @@ DefaultEmlsrManager::NotifyRtsSent(uint8_t linkId, DONT_REQUEST_ACCESS, EmlsrUlTxopRtsSentByAuxPhyTrace{}); }); +} - m_switchMainPhyOnRtsTx.erase(it); +void +DefaultEmlsrManager::DoNotifyProtectionCompleted(uint8_t linkId) +{ + NS_LOG_FUNCTION(this << linkId); + m_rtsStartingUlTxop.erase(linkId); } } // namespace ns3 diff --git a/src/wifi/model/eht/default-emlsr-manager.h b/src/wifi/model/eht/default-emlsr-manager.h index b41b27db8..d14ddec39 100644 --- a/src/wifi/model/eht/default-emlsr-manager.h +++ b/src/wifi/model/eht/default-emlsr-manager.h @@ -81,9 +81,9 @@ class DefaultEmlsrManager : public EmlsrManager //!< the main PHY is operating has to connect a listener to //!< when the main PHY is back operating on its previous link EventId m_auxPhySwitchEvent; //!< event scheduled for an aux PHY to switch link - std::map m_switchMainPhyOnRtsTx; //!< link ID-indexed map of the time when an RTS - //!< that requires the main PHY to switch link - //!< is expected to be transmitted on the link + std::map> + m_rtsStartingUlTxop; //!< link ID-indexed map indicating the time when an UL TXOP is going + //!< to start and whether it is starting with an RTS private: /** @@ -111,6 +111,7 @@ class DefaultEmlsrManager : public EmlsrManager void DoNotifyIcfReceived(uint8_t linkId) override; void DoNotifyUlTxopStart(uint8_t linkId) override; void DoNotifyTxopEnd(uint8_t linkId) override; + void DoNotifyProtectionCompleted(uint8_t linkId) override; }; } // namespace ns3 diff --git a/src/wifi/model/eht/emlsr-manager.cc b/src/wifi/model/eht/emlsr-manager.cc index 831beeae0..f1e92bbe8 100644 --- a/src/wifi/model/eht/emlsr-manager.cc +++ b/src/wifi/model/eht/emlsr-manager.cc @@ -753,6 +753,8 @@ EmlsrManager::NotifyProtectionCompleted(uint8_t linkId) SetSleepStateForAllAuxPhys(true); } } + + DoNotifyProtectionCompleted(linkId); } void diff --git a/src/wifi/model/eht/emlsr-manager.h b/src/wifi/model/eht/emlsr-manager.h index 77346fd16..bb4d0f094 100644 --- a/src/wifi/model/eht/emlsr-manager.h +++ b/src/wifi/model/eht/emlsr-manager.h @@ -604,6 +604,14 @@ class EmlsrManager : public Object */ virtual void DoNotifyUlTxopStart(uint8_t linkId) = 0; + /** + * Notify the subclass that protection (if required) is completed and data frame exchange can + * start on the given link. + * + * @param linkId the ID of the given link + */ + virtual void DoNotifyProtectionCompleted(uint8_t linkId) = 0; + /** * Notify the subclass of the end of a TXOP on the given link. * @@ -734,61 +742,58 @@ struct EmlsrUlTxopRtsSentByAuxPhyTrace /** * Struct to trace that main PHY switched when a (DL or UL) TXOP ended. * - * This trace is normally called when aux PHYs do not switch link and the main PHY switches back to - * the preferred link when a TXOP carried out on another link ends. In such a case, the remTime - * field is set to zero. - * - * Note that the main PHY may be already switching when the TXOP ends; this happens, e.g., when the - * main PHY starts switching to a link on which an aux PHY gained a TXOP and sent an RTS, but the - * CTS is not received and the UL TXOP ends before the main PHY channel switch is completed. In this - * case, the main PHY switch is postponed until the previous switch is completed and the remTime - * field is set to the remaining channel switch delay at the time the TXOP ends: + * This trace is called when aux PHYs do not switch link and the main PHY switches back to the + * preferred link when a TXOP carried out on another link ends. + */ +struct EmlsrTxopEndedTrace : public EmlsrMainPhySwitchTraceImpl +{ + static constexpr std::string_view m_name = "TxopEnded"; //!< trace name +}; + +/** + * Struct to trace that main PHY started switching after a CTS timeout occurred on the link on + * which an RTS was transmitted to start an UL TXOP. Provides the time elapsed since the + * CTS timeout occurred. * * |-- main PHY switch --| * |----- to link 1 -----| * ┌───────────┐ * │ CTS │ * ────────────────────────┬───────────┬───┴X──────────┴───────────────────────────── - * [link 1] │ RTS │ │-remTime-│ - * └───────────┘ │ |-- main PHY switch --| + * [link 1] │ RTS │ │-elapsed-│ + * └───────────┘ │-- time--|-- main PHY switch --| * │ |- to preferred link -| - * CTS timeout + * CTS timeout * - * Note also that the Advanced EMLSR manager may allow a main PHY switch to be interrupted. If this - * option is enabled and the main PHY is switching when the TXOP ends, the previous switch is - * interrupted and the main PHY starts switching to the preferred link (in this case, the remTime - * field indicates the time that was left to complete the previous switch). Also note that, with - * the Advanced EMLSR manager, this trace may also be called when aux PHYs switch link. This happens - * when the TXOP ends while the main PHY is switching; in this case, the previous switch is - * interrupted and the main PHY returns to the link on which it was operating before the previous - * switch. + * Normally, this trace is called when aux PHYs do not switch links, because the main PHY has to + * return to the preferred link upon CTS timeout, because a TXOP did not start. In some cases, the + * main PHY may be switching when CTS timeout occurs; this happens when an aux PHY that is TX + * capable transmits an RTS and the main PHY starts switching to the aux PHY link (the start time + * of the main PHY switch is computed such that the main PHY switch ends slightly after the + * reception of the CTS). In such a case, the main PHY completes the current link switch and then + * it starts switching to return back to the preferred link. * - * |-- main PHY switch --| - * |----- to link 1 -----|(interrupted) - * ┌───────────┐ - * │ CTS │ - * ────────────────────────┬───────────┬───┴X──────────┴───────────────────────────── - * [link 1] │ RTS │ │-remTime-│ - * └───────────┘ │-- main PHY switch --| - * │- to preferred link -| - * CTS timeout + * Note that the Advanced EMLSR manager may allow a main PHY switch to be interrupted. If this + * option is enabled and the main PHY is switching when CTS timeout occurs, the previous switch is + * interrupted and the main PHY starts switching to the previous link (in this case, the time + * elapsed since the CTS timeout occurred is zero). This holds true for both the case aux PHYs do + * not switch link and the case aux PHYs switch link. */ -struct EmlsrTxopEndedTrace : public EmlsrMainPhySwitchTraceImpl +struct EmlsrCtsAfterRtsTimeoutTrace + : public EmlsrMainPhySwitchTraceImpl { - static constexpr std::string_view m_name = "TxopEnded"; //!< trace name + static constexpr std::string_view m_name = "CtsAfterRtsTimeout"; //!< trace name - Time remTime; //!< the remaining time (at TXOP end) until the main PHY completes the - //!< channel switch, in case the main PHY is completing a previous switch - //!< when the TXOP ends + Time sinceCtsTimeout; //!< time elapsed since CTS timeout occurred /** * Constructor provided because this struct is not an aggregate (it has a base struct), hence * we cannot use designated initializers. * - * @param t the value for the sinceTxopEnd field + * @param elapsed the value for the sinceCtsTimeout field */ - EmlsrTxopEndedTrace(const Time& t) - : remTime(t) + EmlsrCtsAfterRtsTimeoutTrace(const Time& elapsed) + : sinceCtsTimeout(elapsed) { } }; diff --git a/src/wifi/test/wifi-emlsr-test.cc b/src/wifi/test/wifi-emlsr-test.cc index 85bc9ca78..184bf9b43 100644 --- a/src/wifi/test/wifi-emlsr-test.cc +++ b/src/wifi/test/wifi-emlsr-test.cc @@ -3110,19 +3110,6 @@ EmlsrUlTxopTest::CheckBlockAck(const WifiConstPsduMap& psduMap, if (m_staMacs[0]->GetLinkForPhy(m_mainPhyId) != linkId) { Simulator::Schedule(txDuration + TimeStep(1), [=, this]() { - // check the traced remaining time before calling CheckMainPhyTraceInfo - if (const auto traceInfoIt = m_traceInfo.find(0); - traceInfoIt != m_traceInfo.cend() && - traceInfoIt->second->GetName() == "TxopEnded") - { - const auto& traceInfo = - static_cast(*traceInfoIt->second); - NS_TEST_EXPECT_MSG_EQ( - traceInfo.remTime, - Time{0}, - "Expected null remaining time because TXOP ended regularly"); - } - CheckMainPhyTraceInfo(0, "TxopEnded", linkId, m_mainPhyId); }); } @@ -3518,24 +3505,25 @@ EmlsrUlTxopTest::CheckCtsFrames(Ptr mpdu, // aux PHYs are put to sleep if and only if CTS is not corrupted // (causing the end of the TXOP) CheckAuxPhysSleepMode(m_staMacs[0], !doCorruptCts); - // if CTS is corrupted, TXOP ends and the main PHY switches back - // to the preferred link + // if CTS is corrupted, TXOP ends and the main PHY switches back to the preferred + // link if (doCorruptCts) { - // check the traced remaining time before calling CheckMainPhyTraceInfo + // check the traced elapsed time since CTS timeout before calling + // CheckMainPhyTraceInfo if (const auto traceInfoIt = m_traceInfo.find(0); traceInfoIt != m_traceInfo.cend() && - traceInfoIt->second->GetName() == "TxopEnded") + traceInfoIt->second->GetName() == "CtsAfterRtsTimeout") { const auto& traceInfo = - static_cast(*traceInfoIt->second); - NS_TEST_EXPECT_MSG_GT(traceInfo.remTime, + static_cast(*traceInfoIt->second); + NS_TEST_EXPECT_MSG_GT(traceInfo.sinceCtsTimeout, Time{0}, "Expected non-zero remaining time because main PHY " - "was switching when TXOP ended"); + "was switching when CTS timeout occurred"); } - CheckMainPhyTraceInfo(0, "TxopEnded", linkId, m_mainPhyId); + CheckMainPhyTraceInfo(0, "CtsAfterRtsTimeout", linkId, m_mainPhyId); } }); }