www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / userapps / broadcom / cfm / html / wlcfgadv.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <!--
3     (c) 2005 U.S. Robotics Corporation
4 -->
5 <html>
6 <head>
7         <title>Advanced Settings &laquo; Wireless</title>
8
9         <link href="usr_layout.css" type="text/css" rel="stylesheet" />
10         <script src="usr_layout.js" type="text/javascript"></script>
11
12         <link href="usr_menus_dropdown.css" rel="stylesheet" type="text/css">
13         <script src="usr_menus_dropdown.js" type="text/javascript"></script>
14         <script src="usr_menus_build.js" type="text/javascript"></script>
15
16         <link href="usr_device.css" type="text/css" rel="stylesheet" />
17         <script src="usr_device.js" type="text/javascript"></script>
18
19         <link href="usr_91xx.css" type="text/css" rel="stylesheet" />
20         <script src="usr_91xx.js" type="text/javascript"></script>
21         <script src="usr_resources.js" type="text/javascript"></script>
22
23         <meta HTTP-EQUIV='Pragma' CONTENT='no-cache'>
24
25         <script type="text/javascript" src="util.js"></script>
26         <script type="text/javascript">
27 <!-- hide
28
29 var enbl = '<%ejGetWlJS(wlEnbl)%>';
30 var country = '<%ejGetWlJS(wlCountry)%>';
31 var channel = '<%ejGetWlJS(wlChannel)%>';
32 var rate = '<%ejGetWlJS(wlRate)%>';
33 var frg = '<%ejGetWlJS(wlFrgThrshld)%>';
34 var rts = '<%ejGetWlJS(wlRtsThrshld)%>';
35 var dtm = '<%ejGetWlJS(wlDtmIntvl)%>';
36 var bcn = '<%ejGetWlJS(wlBcnIntvl)%>';
37 var phy = '<%ejGetWlJS(wlPhyType)%>';
38 var brate = '<%ejGetWlJS(wlBasicRate)%>';
39 var fburst = '<%ejGetWlJS(wlFrameBurst)%>';
40 var gmode = '<%ejGetWlJS(wlgMode)%>';
41 var pro = '<%ejGetWlJS(wlProtection)%>';
42 var pre = '<%ejGetWlJS(wlPreambleType)%>';
43 var apisolation= '<%ejGetWlJS(wlAPIsolation)%>';
44 var band= '<%ejGetWlJS(wlBand)%>';
45 var mcastrate = '<%ejGetWlJS(wlMCastRate)%>';
46 var hasafterburner = '<%ejGetWlJS(wlHasAfterburner)%>';
47 var afterburneren = '<%ejGetWlJS(wlAfterBurnerEn)%>';
48 var bands = '<%ejGetWlJS(wlBands)%>';
49 var mode = '<%ejGetWlJS(wlMode)%>';
50 var wlRefresh = '<%ejGetWlJS(wlRefresh)%>';
51 var TxPwrPcnt = '<%ejGetWlJS(wlTxPwrPcnt)%>';
52 var reg_mode = '<%ejGetWlJS(wlRegMode)%>';
53 var dfs_preism = '<%ejGetWlJS(wlDfsPreIsm)%>';
54 var dfs_postism = '<%ejGetWlJS(wlDfsPostIsm)%>';
55 var tpcDb = '<%ejGetWlJS(wlTpcDb)%>';
56 var wme = '<%ejGetWlJS(wlWme)%>';
57 var wlCurrentChannel = '<%ejGetWlJS(wlCurrentChannel)%>';
58 var csscantimer = '<%ejGetWlJS(wlCsScanTimer)%>';
59 var maxassoc = '<%ejGetWlJS(wlMaxAssoc)%>';
60 var nbw = '<%ejGetWlJS(wlNBw)%>';
61 var nctrlsb = '<%ejGetWlJS(wlNCtrlsb)%>';
62 var corerev = '<%ejGetWlJS(wlCoreRev)%>';
63 var npro = '<%ejGetWlJS(wlNProtection)%>';
64 var nmcsidx = '<%ejGetWlJS(wlNMcsidx)%>';
65 var chanspec = '<%ejGetWlJS(wlCurrentChSpec)%>';
66 var nmode = '<%ejGetWlJS(wlNmode)%>';
67 var nreqd = '<%ejGetWlJS(wlNReqd)%>';
68 var curr_bw_str = "";
69
70
71
72 if ( wlRefresh == '1' ) {
73    var code = 'location="wlcfgadvrefresh.wl?wlRefresh=0"';
74    eval(code);
75 }
76
77 function getGmodeIndex(mode) {
78    var ret = 0;
79    switch(mode) {
80    case '0':
81       ret = 3;
82       break;
83    case '4':
84       ret = 1;
85       break;
86    case '5':
87       ret = 2;
88       break;
89    default:
90       ret = 0;
91       break;
92    }
93    return ret;
94 }
95
96 function getNmodeIndex(mode) {
97    var ret = 0;
98    switch(mode) {
99    case "off":
100       ret = 1;
101       break;
102    case "auto":
103    default:
104       ret = 0;
105       break;
106    }
107    return ret;
108 }
109
110 function genericChange(OnPageLoad)
111 {
112    with ( document.forms[0] )
113    {
114       if(OnPageLoad)
115       {
116          wlAPIsolation.selectedIndex = parseInt(apisolation);
117          wlRate.selectedIndex = getRateIndex(rate);
118          wlMCastRate.selectedIndex = getRateIndex(mcastrate);
119          wlBasicRate.selectedIndex = getBasicRateIndex(brate);
120
121          if (afterburneren == "auto")
122              cbAcceleration.value = "maxg";
123          else if (fburst != "off")
124              cbAcceleration.value = "xpress";
125          else
126              cbAcceleration.value = "none";
127         
128          wlFrgThrshld.value = frg;
129          wlRtsThrshld.value = rts;
130          wlDtmIntvl.value = dtm;
131          wlBcnIntvl.value = bcn;
132          wlCsScanTimer.value = csscantimer;
133          wlMaxAssoc.value = maxassoc;
134          wlTxPower.selectedIndex = ((TxPwrPcnt/20) -1);
135          wlRegMode.selectedIndex = reg_mode;
136          wlDfsPreIsm.value = dfs_preism;
137          wlDfsPostIsm.value = dfs_postism;
138          wlTpcDb.selectedIndex = getTpcDbIndex(tpcDb);
139          /* preamble */
140          if ( pre == 'short' )
141             wlPreambleType.selectedIndex = 1;
142          else
143             wlPreambleType.selectedIndex = 0;
144                 /*
145                         If WMM is enabled or the AP mode isn't set, cannot set acceleration to MAXg.
146                 */
147 /*DELME
148                 if (wme == "1")
149                 {
150                         // find the index of the MAXg option and delete it
151                         for (var ix = 0; ix < cbAcceleration.options.length; ++ix)
152                         {
153                                 if (cbAcceleration.options[ix].value == "maxg")
154                                 {
155                                         cbAcceleration.options[ix] = null;
156                                         break;
157                                 }
158                         }
159                 }
160 DELME*/
161                 setVisibility("idWMMnoMAXg", (wme == "1"));
162                 setVisibility("idWMMno11n", (wme == "1"));
163 //DELME         wlNmode.disabled = (wme == "1");   
164       }
165    }
166 }
167
168 function gModeChange(OnPageLoad) {
169
170    var sel_band;
171    var sel_gmode;
172    var sel_pro;
173    var sel_pre;
174    var sel_nmode;
175
176    /* save selected */
177    if(OnPageLoad) {
178       sel_band = band;
179       sel_gmode = gmode;
180       sel_pro = pro;
181       sel_nmode = nmode;
182    } else {
183       sel_band = document.forms[0].wlBand.value;
184       sel_gmode = document.forms[0].wlgMode.value;
185       sel_pro = document.forms[0].wlProtection.value;
186       sel_nmode = document.forms[0].wlNmode.value;
187    }
188
189    with ( document.forms[0] ) {
190       setVisibility("preambleType", false);
191
192       wlProtection.selectedIndex = getGModeProtection(sel_pro);
193       switch(sel_gmode) {
194          case '0':
195             setVisibility("preambleType", true);
196             wlgMode.selectedIndex = 3;
197             break;
198          case '4':
199             wlgMode.selectedIndex = 1;
200             break;
201          case '5':
202             wlgMode.selectedIndex = 2;
203             break;
204          default:
205             wlgMode.selectedIndex = 0;
206             setVisibility("preambleType", true);
207             break;
208       }
209
210       if (phy == "n" && sel_nmode != "off") {
211          SetDivisionVisibility("gMode", false);
212       } else {
213          if (sel_band == "2") {
214            if (phy == "b") { //11b
215              SetDivisionVisibility("gMode", false);
216            }
217            else { //11g
218              SetDivisionVisibility("gMode", true);
219            }
220          }
221          else { //11a
222            SetDivisionVisibility("gMode", false);
223            setVisibility("preambleType", false);
224          }
225       }
226    }
227 }
228
229 function wlLoadCountryList(OnPageLoad)
230 {
231    var sel = 0;
232    var idx;
233
234    /* save selected */
235    if(OnPageLoad) {
236       sel = country;
237    } else {
238       sel = document.forms[0].wlCountry.options[document.forms[0].wlCountry.selectedIndex].value;
239    }
240
241    /* load list */
242    if (band == "1") { // 5G
243       <%ejGetWl(wlCountryList, a)%>
244    } else {
245       <%ejGetWl(wlCountryList, b)%>
246    }
247
248    /* mark selected */
249    for (idx=0; idx < document.forms[0].wlCountry.options.length; idx++) {
250       if (document.forms[0].wlCountry.options[idx].value == sel) {
251          document.forms[0].wlCountry.options[idx].selected = true;
252          break;
253       }
254    }
255
256    /* set to all(the last one) if not found */
257    if( idx == document.forms[0].wlCountry.options.length)
258       document.forms[0].wlCountry.options[idx-1].selected = true;
259 }
260
261 function loadChannelList(OnPageLoad)
262 {
263    var sel_ch;
264    var sel_band;
265    var sel_nbw;
266    var sel_sb;
267    var idx;
268
269    /* save selected */
270    if(OnPageLoad) {
271       sel_ch = channel;
272       sel_band = band;
273       sel_nbw = nbw;
274       sel_sb = nctrlsb;
275    } else {
276       sel_ch = document.forms[0].wlChannel.value;
277       sel_band = document.forms[0].wlBand.value;
278       sel_nbw = document.forms[0].wlNbw.value;
279       sel_sb = document.forms[0].wlNCtrlsb.value;
280    }
281
282    /* load list */
283    document.forms[0].wlChannel.length = 0;
284
285    if ((sel_band == "2") && (phy != "n") ) {
286       <%ejGetWlStr(wlChannelList, b)%>
287    }
288    else  if ((sel_band == "1") && (phy != "n")) {
289       <%ejGetWlStr(wlChannelList, a)%>
290    }
291    else  if ((sel_band == "2") && (phy == "n") ) {
292       if(sel_nbw == 40) {
293          if(sel_sb == 1) {
294             <%ejGetWlStr(wlChannelList, n, b, 40, "upper")%>
295          } else {
296             <%ejGetWlStr(wlChannelList, n, b, 40, "lower")%>
297          }
298       } else {
299          <%ejGetWlStr(wlChannelList, n, b, 20 )%>
300       }
301    }
302    else  if ((sel_band == "1") && (phy == "n") ) {
303       if(sel_nbw == 40) {
304          if(sel_sb == 1) {
305             <%ejGetWlStr(wlChannelList, n, a, 40, "upper")%>
306          } else {
307             <%ejGetWlStr(wlChannelList, n, a, 40, "lower")%>
308          }
309       } else {
310          <%ejGetWlStr(wlChannelList, n, a, 20 )%>
311       }
312    }
313    else {
314       wlChannel[0] = new Option("Automatic", "0")
315    }
316
317    /* mark selected */
318    for (idx=0; idx<document.forms[0].wlChannel.options.length; idx++) {
319       if (document.forms[0].wlChannel.options[idx].value == sel_ch) {
320          document.forms[0].wlChannel.options[idx].selected = true;
321          break;
322       }
323    }
324
325    /* set to first channel if not found */
326    if (idx == document.forms[0].wlChannel.options.length) {
327       document.forms[0].wlChannel.options[0].selected = true;
328    }
329
330    with ( document.forms[0] ) {
331       if( wlChannel.selectedIndex != 0 ) {
332          wlCsScanTimer.disabled=true;
333       } else {
334          wlCsScanTimer.disabled=false;
335       }
336    }
337 }
338
339 function loadRateList(OnPageLoad) {
340    var sel_band;
341    var sel_rate;
342    var idx;
343    var sel_nmode;
344    var sel_gmode;
345
346    /* save selected */
347    if(OnPageLoad) {
348       sel_band = band;
349       sel_rate = rate;
350       sel_nmode = nmode;
351       sel_gmode = gmode;
352    }
353    else {
354       sel_band = document.forms[0].wlBand.value;
355       sel_rate = document.forms[0].wlRate.value;
356       sel_nmode = document.forms[0].wlNmode.value;
357       sel_gmode = document.forms[0].wlgMode.value;
358    }
359
360    if(phy != "n") sel_nmode = "off";
361
362    document.forms[0].wlRate.length = 0;
363
364    if (sel_band == "2") { // 2.4G
365       if (phy == "b" ||
366           (country == "JP" && document.forms[0].wlChannel.value == 14) ||
367           (sel_nmode == "off" && sel_gmode == "0")) {
368 document.forms[0].wlRate[0] = new Option("Automatic", "0");
369 document.forms[0].wlRate[1] = new Option("1 Mbps", "1000000");
370 document.forms[0].wlRate[2] = new Option("2 Mbps", "2000000");
371 document.forms[0].wlRate[3] = new Option("5.5 Mbps", "5500000");
372 document.forms[0].wlRate[4] = new Option("11 Mbps", "11000000");
373       }
374       else {
375 document.forms[0].wlRate[0] = new Option("Automatic", "0");
376 document.forms[0].wlRate[1] = new Option("1 Mbps", "1000000");
377 document.forms[0].wlRate[2] = new Option("2 Mbps", "2000000");
378 document.forms[0].wlRate[3] = new Option("5.5 Mbps", "5500000");
379 document.forms[0].wlRate[4] = new Option("6 Mbps", "6000000");
380 document.forms[0].wlRate[5] = new Option("9 Mbps", "9000000");
381 document.forms[0].wlRate[6] = new Option("11 Mbps", "11000000");
382 document.forms[0].wlRate[7] = new Option("12 Mbps", "12000000");
383 document.forms[0].wlRate[8] = new Option("18 Mbps", "18000000");
384 document.forms[0].wlRate[9] = new Option("24 Mbps", "24000000");
385 document.forms[0].wlRate[10] = new Option("36 Mbps", "36000000");
386 document.forms[0].wlRate[11] = new Option("48 Mbps", "48000000");
387 document.forms[0].wlRate[12] = new Option("54 Mbps", "54000000");
388      }
389    }
390    else if (sel_band == "1") { // 5G
391 document.forms[0].wlRate[0] = new Option("Automatic", "0");
392 document.forms[0].wlRate[1] = new Option("6 Mbps", "6000000");
393 document.forms[0].wlRate[2] = new Option("9 Mbps", "9000000");
394 document.forms[0].wlRate[3] = new Option("12 Mbps", "12000000");
395 document.forms[0].wlRate[4] = new Option("18 Mbps", "18000000");
396 document.forms[0].wlRate[5] = new Option("24 Mbps", "24000000");
397 document.forms[0].wlRate[6] = new Option("36 Mbps", "36000000");
398 document.forms[0].wlRate[7] = new Option("48 Mbps", "48000000");
399 document.forms[0].wlRate[8] = new Option("54 Mbps", "54000000");
400    }
401    else {
402 document.forms[0].wlRate[0] = new Option("Automatic", "0");
403    }
404
405    if(sel_nmode != "off") {
406       /* exclude auto for 802.11a/b/g (Legacy) rates if 11n is enabled */
407       document.forms[0].wlRate[0]=null;
408    }
409
410    /* mark selected */
411    for (idx = 0; idx < document.forms[0].wlRate.options.length; idx++) {
412       if (document.forms[0].wlRate.options[idx].value == sel_rate) {
413          document.forms[0].wlRate.options[idx].selected = true;
414          break;
415       }
416    }
417
418    /* set to first(Auto) if not found */
419    if( idx == document.forms[0].wlRate.options.length)
420       document.forms[0].wlRate.options[0].selected = true;
421 }
422
423
424 function loadMCastRateList(OnPageLoad) {
425
426    var sel_band;
427    var sel_rate;
428    var idx;
429    var sel_nmode;
430    var sel_gmode;
431
432    /* save selected */
433    if(OnPageLoad) {
434       sel_band = band;
435       sel_rate = mcastrate;
436       sel_nmode = nmode;
437       sel_gmode = gmode;
438    }
439    else {
440       sel_band = document.forms[0].wlBand.value;
441       sel_rate = document.forms[0].wlMCastRate.value;
442       sel_nmode = document.forms[0].wlNmode.value;
443       sel_gmode = document.forms[0].wlgMode.value;
444    }
445
446    if(phy != "n") sel_nmode = "off";
447
448    document.forms[0].wlMCastRate.length = 0;
449    if (sel_band == "2") { // 2.4G
450       if (phy == "b" ||
451           (country == "JP" && document.forms[0].wlChannel.value == 14) ||
452           (sel_nmode == "off" && sel_gmode == "0")) {
453 document.forms[0].wlMCastRate[0] = new Option("Automatic", "0");
454 document.forms[0].wlMCastRate[1] = new Option("1 Mbps", "1000000");
455 document.forms[0].wlMCastRate[2] = new Option("2 Mbps", "2000000");
456 document.forms[0].wlMCastRate[3] = new Option("5.5 Mbps", "5500000");
457 document.forms[0].wlMCastRate[4] = new Option("11 Mbps", "11000000");
458       }
459       else {
460 document.forms[0].wlMCastRate[0] = new Option("Automatic", "0");
461 document.forms[0].wlMCastRate[1] = new Option("1 Mbps", "1000000");
462 document.forms[0].wlMCastRate[2] = new Option("2 Mbps", "2000000");
463 document.forms[0].wlMCastRate[3] = new Option("5.5 Mbps", "5500000");
464 document.forms[0].wlMCastRate[4] = new Option("6 Mbps", "6000000");
465 document.forms[0].wlMCastRate[5] = new Option("9 Mbps", "9000000");
466 document.forms[0].wlMCastRate[6] = new Option("11 Mbps", "11000000");
467 document.forms[0].wlMCastRate[7] = new Option("12 Mbps", "12000000");
468 document.forms[0].wlMCastRate[8] = new Option("18 Mbps", "18000000");
469 document.forms[0].wlMCastRate[9] = new Option("24 Mbps", "24000000");
470 document.forms[0].wlMCastRate[10] = new Option("36 Mbps", "36000000");
471 document.forms[0].wlMCastRate[11] = new Option("48 Mbps", "48000000");
472 document.forms[0].wlMCastRate[12] = new Option("54 Mbps", "54000000");
473      }
474    }
475    else if (sel_band == "1") { // 5G
476 document.forms[0].wlMCastRate[0] = new Option("Automatic", "0");
477 document.forms[0].wlMCastRate[1] = new Option("6 Mbps", "6000000");
478 document.forms[0].wlMCastRate[2] = new Option("9 Mbps", "9000000");
479 document.forms[0].wlMCastRate[3] = new Option("12 Mbps", "12000000");
480 document.forms[0].wlMCastRate[4] = new Option("18 Mbps", "18000000");
481 document.forms[0].wlMCastRate[5] = new Option("24 Mbps", "24000000");
482 document.forms[0].wlMCastRate[6] = new Option("36 Mbps", "36000000");
483 document.forms[0].wlMCastRate[7] = new Option("48 Mbps", "48000000");
484 document.forms[0].wlMCastRate[8] = new Option("54 Mbps", "54000000");
485    }
486    else {
487 document.forms[0].wlMCastRate[0] = new Option("Automatic", "0");
488    }
489
490    /* mark selected */
491    for (idx=0; idx < document.forms[0].wlMCastRate.options.length; idx++) {
492       if (document.forms[0].wlMCastRate.options[idx].value == sel_rate) {
493          document.forms[0].wlMCastRate.options[idx].selected = true;
494          break;
495       }
496    }
497
498    /* set to first(Auto) if not found */
499    if( idx == document.forms[0].wlMCastRate.options.length)
500       document.forms[0].wlMCastRate.options[0].selected = true;
501
502 }
503
504 function loadBasicRateList(OnPageLoad) {
505
506    var sel_band;
507    var sel_rate;
508    var idx;
509
510    /* save selected */
511    if(OnPageLoad) {
512       sel_band = band;
513       sel_rate = brate;
514    }
515    else {
516       sel_band = document.forms[0].wlBand.value;
517       sel_rate = document.forms[0].wlBasicRate.value;
518    }
519
520   document.forms[0].wlBasicRate.length = 0;
521
522    if (sel_band == "2") { // 2.4G
523 document.forms[0].wlBasicRate[0] = new Option("Default", "default");
524 document.forms[0].wlBasicRate[1] = new Option("All", "all");
525 document.forms[0].wlBasicRate[2] = new Option("1 & 2 Mbps", "12");
526       if (phy != "b") {
527          document.forms[0].wlBasicRate[3] = new Option("1 & 2 & 5.5 & 6 & 11 & 12 & 24 Mbps", "wifi2");
528       }
529
530    }
531    else if (sel_band == "1") { // 5G
532 document.forms[0].wlBasicRate[0] = new Option("Default", "default");
533 document.forms[0].wlBasicRate[1] = new Option("All", "all");
534 document.forms[0].wlBasicRate[2] = new Option("6 & 12 Mbps", "12");
535 document.forms[0].wlBasicRate[3] = new Option("6 & 12 & 24 Mbps", "wifi2");
536    }
537    else {
538 document.forms[0].wlBasicRate[0] = new Option("Default", "0");
539    }
540
541    /* mark selected */
542    for (idx=0; idx < document.forms[0].wlBasicRate.options.length; idx++) {
543       if (document.forms[0].wlBasicRate.options[idx].value == sel_rate) {
544          document.forms[0].wlBasicRate.options[idx].selected = true;
545          break;
546       }
547    }
548
549    /* set to first(Auto) if not found */
550    if( idx == document.forms[0].wlBasicRate.options.length)
551       document.forms[0].wlBasicRate.options[0].selected = true;
552
553 }
554
555 function onBandChange(OnPageLoad) {
556
557    with ( document.forms[0] ) {
558       var sel_band;
559
560       /* save selected */
561       if(OnPageLoad) {
562          sel_band = band;
563          wlBand.selectedIndex = getBandIndex(sel_band);
564       }
565       else {
566          sel_band = document.forms[0].wlBand.value;
567       }
568
569       loadChannelList(OnPageLoad);
570       loadRateList(OnPageLoad);
571       loadMCastRateList(OnPageLoad);
572       loadBasicRateList(OnPageLoad);
573    }
574 }
575
576 function getBasicRateIndex(br) {
577    var ret = 0;
578    if ( br == "12" ) {
579       ret = 2;
580    }
581    else if ( br == "all" ) {
582       ret = 1;
583    } else if ( br == "wifi2" ) {
584       ret = 3;
585    } else
586       ret = 0;
587    return ret;
588 }
589
590 function getRateIndex(r) {
591    var rateNum = parseInt(r);
592    var ret = 0;
593
594    if ( band == '2') {
595       if ( phy == "b" ) { //11b
596          switch ( rateNum ) {
597          case 1000000:
598             ret = 1;
599             break;
600          case 2000000:
601             ret = 2;
602             break;
603          case 5500000:
604             ret = 3;
605             break;
606          case 11000000:
607             ret = 4;
608             break;
609          default:
610             ret = 0;
611             break;
612          }
613       }
614       // physical type is 802.11g
615       else {
616          switch ( rateNum ) {
617          case 1000000:
618             ret = 1;
619             break;
620          case 2000000:
621             ret = 2;
622             break;
623          case 5500000:
624             ret = 3;
625             break;
626          case 6000000:
627             ret = 4;
628             break;
629          case 9000000:
630             ret = 5;
631             break;
632          case 11000000:
633             ret = 6;
634             break;
635          case 12000000:
636             ret = 7;
637             break;
638          case 18000000:
639             ret = 8;
640             break;
641          case 24000000:
642             ret = 9;
643             break;
644          case 36000000:
645             ret = 10;
646             break;
647          case 48000000:
648             ret = 11;
649             break;
650          case 54000000:
651             ret = 12;
652             break;
653          default:
654             ret = 0;
655             break;
656          }
657       }
658    }
659    // physical type is 802.11a
660    else if ( band == '1' ) { // 11a
661       switch ( rateNum ) {
662       case 6000000:
663          ret = 1;
664          break;
665       case 9000000:
666          ret = 2;
667          break;
668       case 12000000:
669          ret = 3;
670          break;
671       case 18000000:
672          ret = 4;
673          break;
674       case 24000000:
675          ret = 5;
676          break;
677       case 36000000:
678          ret = 6;
679          break;
680       case 48000000:
681          ret = 7;
682          break;
683       case 54000000:
684          ret = 8;
685          break;
686       default:
687          ret = 0;
688          break;
689       }
690    }
691    return ret;
692 }
693
694 function getFrameBurstIndex(frameburst) {
695    var ret;
696
697    if ( frameburst == "off" )
698       ret = 0;
699    else
700       ret = 1;
701    return ret;
702 }
703
704 function getAfterBurnerIndex(afterburner) {
705    var ret;
706
707    if ( afterburner == "auto" )
708       ret = 1;
709    else
710       ret = 0;
711    return ret;
712 }
713
714 function getGModeProtection(pro) {
715    var ret;
716
717    if ( pro == "auto" )
718       ret = 1;
719    else
720       ret = 0;
721    return ret;
722 }
723
724 function getTpcDbIndex(val) {
725    var ret;
726
727    if ( val == "0" )
728       ret = 0;
729    else if ( val == "2" )
730       ret = 1;
731    else if ( val == "3" )
732       ret = 2;
733    else if ( val == "4" )
734       ret = 3;
735    else ret = 0;
736    return ret;
737 }
738
739 function phyChange() {
740    with ( document.forms[0] )
741       if (phy == "n") {
742          SetDivisionVisibility("nMode", true);
743          setVisibility("div_nMode_sel", true);
744          SetDivisionVisibility("gMode", false);
745       } else {
746          SetDivisionVisibility("nMode", false);
747          setVisibility("div_nMode_sel", false);
748          SetDivisionVisibility("gMode", true);
749       }
750 }
751
752 function RegModeChange(OnPageLoad) {
753    with ( document.forms[0] ) {
754       var sel_band;
755
756       /* save selected */
757       if(OnPageLoad) {
758          sel_band = band;
759       }
760       else {
761          sel_band = document.forms[0].wlBand.value;
762       }
763
764       if( wlRegMode.selectedIndex != 1 )
765          wlDfsPreIsm.disabled=wlDfsPostIsm.disabled=wlTpcDb.disabled=true;
766       else
767          wlDfsPreIsm.disabled=wlDfsPostIsm.disabled=wlTpcDb.disabled=false;
768
769       if (sel_band == "2") {
770         SetDivisionVisibility("regMode", false);
771       }
772       else {
773         SetDivisionVisibility("regMode", true);
774       }
775    }
776 }
777
778 function getBandIndex(b) {
779    var ret;
780
781    if ( b == '1' )
782       ret = 1;
783    else
784       ret = 0;
785    return ret;
786 }
787
788 function wl_afterburner_options(OnPageLoad)
789 {
790         with (document.forms[0])
791         {
792                 // MAXg and WMM cannot both be enabled at the same time. MAXg requires Fragmentation to be set to 2346.
793                 // But no need to check these because the MAXg option is deleted if they're true.
794                 if (cbAcceleration.value == "maxg")
795                         wlFrgThrshld.value = 2346;
796         }
797         return true;
798 }
799
800 function wl_ewc_options(OnPageLoad)
801 {
802    var sel_nbw;
803    var sel_nmcsidx;
804    var idx;
805    var sel_ch;
806    var sel_nmode;
807    var sel_nreqd;
808
809    if(phy != "n")
810       return;
811
812    if(OnPageLoad) {
813      sel_nbw = curr_bw_str; //nbw;
814      sel_ch = channel;
815      sel_nmode = nmode;
816      sel_nreqd = nreqd;
817
818      document.forms[0].wlNProtection.value = npro;
819      sel_nmcsidx = nmcsidx;
820      if(nctrlsb == 0) {
821         document.forms[0].wlNCtrlsb.selectedIndex = 0;
822         document.forms[0].wlNCtrlsb.disabled = 1;
823      } else
824         document.forms[0].wlNCtrlsb.value = nctrlsb;
825
826      document.forms[0].wlNReqd.value = nreqd;
827      if(sel_nmode == "off") {
828         document.forms[0].wlNmode.selectedIndex = 1;
829      }
830
831    } else {
832      sel_ch = document.forms[0].wlChannel.value;
833      sel_nbw = document.forms[0].wlNbw.value;
834      sel_nmcsidx = document.forms[0].wlNMmcsidx.value;
835      sel_nmode = document.forms[0].wlNmode.value;
836      sel_nreqd = document.forms[0].wlNReqd.value;
837    }
838
839    if(sel_nmode == "off") {
840       document.forms[0].wlNMmcsidx.disabled = 1;
841       document.forms[0].wlNbw.disabled = 1;
842       document.forms[0].wlNProtection.disabled = 1;
843       document.forms[0].wlNReqd.disabled = 1;
844       SetDivisionVisibility("nMode", false);
845    } else {
846       document.forms[0].wlNMmcsidx.disabled = 0;
847       document.forms[0].wlNbw.disabled = 0;
848       document.forms[0].wlNProtection.disabled = 0;
849       document.forms[0].wlNReqd.disabled = 0;
850       SetDivisionVisibility("nMode", true);
851    }
852
853    if (document.forms[0].wlNMmcsidx != null)
854       document.forms[0].wlNMmcsidx.disabled = 0;
855
856    if(corerev > 11) {
857       bw = new Array("10", "20", "40");
858    } else {
859       bw = new Array("20", "40");
860    }
861
862    /* If nmode is disabled, allow only 20Mhz selection and disable selection */
863    if (sel_nmode == "off") {
864       bw = new Array("20");
865       nbw = "20";
866    }
867
868    document.forms[0].wlNbw.length = 0;
869    for (var i in bw) {
870       document.forms[0].wlNbw[i] = new Option(bw[i] + " MHz", bw[i]);
871          /* Fix the selectedIndex to match new set of options */
872       if (bw[i] == sel_nbw) {
873          document.forms[0].wlNbw.selectedIndex = i;
874       }
875    }
876
877    /* load n phy rates */
878    if(sel_ch == 0) {
879       document.forms[0].wlNCtrlsb.disabled = 1;
880       document.forms[0].wlNbw.disabled = 1;
881       <%ejGetWlStr(wlNPhyRates, "0");%>
882    } else if (sel_nbw == "40") {
883       /* Control sb is allowed only for 40MHz BW Channels */
884       document.forms[0].wlNCtrlsb.disabled = 0;
885       <%ejGetWlStr(wlNPhyRates, "40");%>
886    } else if (sel_nbw == "20") {
887       document.forms[0].wlNCtrlsb.selectedIndex = 0;
888       document.forms[0].wlNCtrlsb.disabled = 1;
889       <%ejGetWlStr(wlNPhyRates, "20");%>
890    }
891
892    /* mark selected */
893    for (idx=0; idx< document.forms[0].wlNMmcsidx.options.length; idx++) {
894       if (document.forms[0].wlNMmcsidx[idx].value == sel_nmcsidx) {
895          document.forms[0].wlNMmcsidx[idx].selected = true;
896          break;
897       }
898    }
899
900    /* set to first (Auto) if not found */
901    if( idx == document.forms[0].wlNMmcsidx.options.length)
902       document.forms[0].wlNMmcsidx.options[0].selected = true;
903
904    /* mark selected */
905    document.forms[0].wlNmode.selectedIndex = getNmodeIndex(sel_nmode);
906
907 }
908
909 function wl_mcs_onchange(OnPageLoad)
910 {
911    var sel_nmcsidx;
912    var sel_nmode;
913
914    if(phy != "n")
915       return;
916
917    if(OnPageLoad) {
918      sel_nmcsidx = nmcsidx;
919      sel_nmode = nmode;
920    } else {
921      sel_nmcsidx = document.forms[0].wlNMmcsidx.value;
922      sel_nmode = document.forms[0].wlNmode.value;
923    }
924
925    /* If using 'legacy rate' then enable */
926    if (sel_nmcsidx == "-2" || sel_nmode == "off")
927       document.forms[0].wlRate.disabled = 0;
928    else
929       document.forms[0].wlRate.disabled = 1;
930 }
931
932
933 function wl_recalc(OnPageLoad) {
934    with ( document.forms[0] ) {
935       phyChange(OnPageLoad);
936       genericChange(OnPageLoad);
937       updateCurChannel(OnPageLoad);
938       onBandChange(OnPageLoad);
939       gModeChange(OnPageLoad);
940       wl_ewc_options(OnPageLoad);
941       wl_afterburner_options(OnPageLoad);
942       RegModeChange(OnPageLoad);
943       wl_mcs_onchange(OnPageLoad)
944    }
945 }
946
947 function updateCurChannel(OnPageLoad) {
948
949    if(OnPageLoad) {
950
951       var curr_chanspec = parseInt(chanspec);
952       var curr_sb = (curr_chanspec & 0x300 ) >> 8;
953       var curr_bw = (curr_chanspec & 0xc00 ) >> 10;
954       var curr_sb_str = "N/A";
955
956       if(curr_bw == 2)
957          curr_bw_str = "20";
958       else if (curr_bw == 3)
959          curr_bw_str = "40";
960       else if (curr_bw == 1)
961          curr_bw_str = "10";
962
963       if(curr_sb == 1)
964          curr_sb_str = "Lower";
965       else if (curr_sb == 2)
966          curr_sb_str = "Upper";
967       else if (curr_sb == 3)
968          curr_sb_str = "None";
969    }
970 }
971
972 function onNmodeChange()
973 {
974         /*
975                 if WMM is on (and we're not already turning if off) and we're turning
976                 on 802.11n mode, we have to turn off WMM.
977         */
978         if ((wme == "1") && bWMM && (document.forms[0].wlNmode.value == "auto"))
979         {
980                 if (!confirm("802.11n mode does not support WMM. Click OK to enable 802.11n mode and disable WMM."))
981                 {
982                         document.forms[0].wlNmode.value = "off";        // Set 802.11n back to Disabled
983                         return;
984                 }
985
986                 bWMM = false;           // turn off WMM
987         }
988
989    wl_recalc(false);
990    document.forms[0].wlRate.selectedIndex = 0;
991 }
992
993 function onAccelerationChange()
994 {
995         /*
996                 if WMM is on (and we're not already turning if off) and we're turning
997                 on MAXg acceleration, we have to turn off WMM.
998         */
999         if ((wme == "1") && bWMM && (document.forms[0].cbAcceleration.value == "maxg"))
1000         {
1001                 if (!confirm("MAXg acceleration is incompatible with WMM. Click OK to enable MAXg acceleration and disable WMM."))
1002                 {
1003                         // set Acceleration to 54g+ (it could've been None, but we can't know that, so we go to the next one below MAXg)
1004                         document.forms[0].cbAcceleration.value = "xpress";
1005                         return;
1006                 }
1007
1008                 bWMM = false;           // turn off WMM
1009         }
1010
1011         wl_recalc(false);
1012 }
1013
1014
1015 function frmLoad() {
1016    wl_recalc(true);
1017 }
1018
1019 function SetDivisionVisibility(divID, mode)
1020 {
1021    if ( divID == "nMode" )
1022    {
1023       setVisibility("idBandwidth", mode);
1024       setVisibility("idCtrlSideband", mode);
1025       setVisibility("idNRate", mode);
1026       setVisibility("idNProtection", mode);
1027       setVisibility("idNClient", mode);
1028    }
1029    else if ( divID == "gMode" )
1030    {
1031       setVisibility("id54gMode", mode);
1032       setVisibility("id54gProtection", mode);
1033    }
1034    else if ( divID == "regMode" )
1035    {
1036       setVisibility("idRegulatory", mode);
1037       setVisibility("idDfsPreIsm", mode);
1038       setVisibility("idDfsPostIsm", mode);
1039       setVisibility("idTpsMitigation", mode);
1040    }
1041 }
1042
1043 /*
1044         If the user modifies a setting that requires WMM to be disabled,
1045         this flag is reset.
1046 */
1047 var bWMM = true;
1048 function btnApply()
1049 {
1050    var loc = "wlcfgadv.wl?" + (bWMM ? "" : "wlWme=0&");
1051    var idx, frgNum, rtsNum, dtmNum, bcnNum, frmburstNum;
1052
1053    if ( enbl == '0' )
1054    {
1055       alert('Cannot apply the change since wireless is currently disabled.');
1056       return;
1057    }
1058
1059    wl_recalc(false);
1060
1061    with ( document.forms[0] )
1062    {
1063       var sel_nmode = wlNmode.options[wlNmode.selectedIndex].value;
1064       var sel_nmcsidx = wlNMmcsidx.value;
1065
1066       frgNum = parseInt(wlFrgThrshld.value);
1067       if ( isNaN(frgNum) == true || frgNum < 256 || frgNum > 2346 ) {
1068          alert('Fragmentation threshold "' + wlFrgThrshld.value + '" should be between 256 and 2346.');
1069          return;
1070       }
1071
1072       rtsNum = parseInt(wlRtsThrshld.value);
1073       if ( isNaN(rtsNum) == true || rtsNum < 0 || rtsNum > 2347 ) {
1074          alert('RTS threshold "' + wlRtsThrshld.value + '" should be between 0 and 2347.');
1075          return;
1076       }
1077
1078       dtmNum = parseInt(wlDtmIntvl.value);
1079       if ( isNaN(dtmNum) == true || dtmNum < 1 || dtmNum > 255 ) {
1080          alert('DTIM interval "' + wlDtmIntvl.value + '" should be between 1 and 255.');
1081          return;
1082       }
1083
1084       bcnNum = parseInt(wlBcnIntvl.value);
1085       if ( isNaN(bcnNum) == true || bcnNum < 1 || bcnNum > 65535 ) {
1086          alert('Beacon interval "' + wlBcnIntvl.value + '" should be between 1 and 65535.');
1087          return;
1088       }
1089
1090       assocNum = parseInt(wlMaxAssoc.value);
1091       if ( isNaN(assocNum) == true || assocNum <= 0 || assocNum > 128 ) {
1092          alert('Max Clients "' + wlMaxAssoc.value + '" should be between 1 and 128.');
1093          return;
1094       }
1095
1096       loc += 'wlChannel=' + wlChannel.options[wlChannel.selectedIndex].value;
1097       loc += '&wlNmode=' + sel_nmode;
1098       loc += '&wlNReqd=' + wlNReqd.value;
1099       loc += '&wlBasicRate=' + wlBasicRate.options[wlBasicRate.selectedIndex].value;
1100       loc += '&wlFrgThrshld=' + wlFrgThrshld.value;
1101       loc += '&wlRtsThrshld=' + wlRtsThrshld.value;
1102       loc += '&wlDtmIntvl=' + wlDtmIntvl.value;
1103       loc += '&wlBcnIntvl=' + wlBcnIntvl.value;
1104       loc += '&wlCsScanTimer=' + wlCsScanTimer.value;
1105       loc += '&wlMaxAssoc=' + wlMaxAssoc.value;
1106
1107                 if (cbAcceleration.value == "maxg")
1108                 {
1109                         loc += "&wlAfterBurnerEn=auto";
1110                         loc += "&wlFrameBurst=on";
1111                 }
1112                 else if (cbAcceleration.value == "xpress")
1113                 {
1114                         loc += "&wlAfterBurnerEn=off";
1115                         loc += "&wlFrameBurst=on";
1116                 }
1117                 else // if (cbAcceleration.value == "none")
1118                 {
1119                         loc += "&wlAfterBurnerEn=off";
1120                         loc += "&wlFrameBurst=off";
1121                 }
1122
1123       loc += '&wlAPIsolation=' + wlAPIsolation.value;
1124       loc += '&wlBand=' + wlBand.value;
1125       loc += '&wlMCastRate=' + wlMCastRate.options[wlMCastRate.selectedIndex].value;
1126
1127       /* rate */
1128       if ( phy != "n" || (phy == "n" && (sel_nmode == "off" || sel_nmcsidx == -2)))
1129          loc += '&wlRate=' + wlRate.options[wlRate.selectedIndex].value;
1130
1131       /* b/g mode */
1132       if ( band == '2') { // 2.4G
1133          if ( phy == "g" || (phy == "n" && sel_nmode == "off")) { // 802.11g
1134             loc += '&wlgMode=' + wlgMode.options[wlgMode.selectedIndex].value;
1135             loc += '&wlProtection=' + wlProtection.options[wlProtection.selectedIndex].value;
1136             if (wlgMode.selectedIndex == 3) {
1137                loc += '&wlPreambleType=' + wlPreambleType.options[wlPreambleType.selectedIndex].value;
1138             }
1139          } else if (phy == "b") { // 802.11b
1140             loc += '&wlPreambleType=' + wlPreambleType.options[wlPreambleType.selectedIndex].value;
1141          }
1142       }
1143
1144      loc += '&wlTxPwrPcnt=' + wlTxPower.options[wlTxPower.selectedIndex].value;
1145      loc += '&wlRegMode=' + wlRegMode.options[wlRegMode.selectedIndex].value;
1146
1147      if(phy == "n") {
1148         loc += '&wlNBw=' + wlNbw.options[wlNbw.selectedIndex].value;
1149
1150         if(wlNbw.options[wlNbw.selectedIndex].value == 20)
1151            loc += '&wlNCtrlsb=' + 0;
1152         else
1153            loc += '&wlNCtrlsb=' + wlNCtrlsb.options[wlNCtrlsb.selectedIndex].value;
1154
1155         loc += '&wlNProtection=' + wlNProtection.options[wlNProtection.selectedIndex].value;
1156         loc += '&wlNMcsidx=' + wlNMmcsidx.options[wlNMmcsidx.selectedIndex].value;
1157      }
1158
1159      if(wlRegMode.selectedIndex == 1) {
1160         DfsPreIsmNum = parseInt(wlDfsPreIsm.value);
1161         if ( isNaN(DfsPreIsmNum) == true || DfsPreIsmNum < 0 || DfsPreIsmNum > 99 ) {
1162            alert('Pre-Network Radar Check "' + wlDfsPreIsm.value + '" should be between 0 and 99.');
1163            return;
1164         }
1165
1166         DfsPostNum = parseInt(wlDfsPostIsm.value);
1167         if ( isNaN(DfsPostNum) == true || DfsPostNum < 10 || DfsPostNum > 99 ) {
1168            alert('In-Network Radar Check: "' + wlDfsPostIsm.value + '" should be between 10 and 99.');
1169            return;
1170         }
1171
1172         loc += '&wlDfsPreIsm=' + wlDfsPreIsm.value;
1173         loc += '&wlDfsPostIsm=' + wlDfsPostIsm.value;
1174         loc += '&wlTpcDb=' + wlTpcDb.options[wlTpcDb.selectedIndex].value;
1175      }
1176
1177    }
1178    var code = 'location="' + loc + '"';
1179
1180    eval(code);
1181 }
1182 // done hiding -->
1183         </script>
1184 </head>
1185 <body onload="initMenu(); frmLoad();">
1186
1187 <script type="text/javascript">
1188     writeHeader("Wireless");
1189 </script>
1190
1191 <h3>Advanced Settings</h3>
1192
1193 <p>This page allows you to configure advanced features of the wireless LAN
1194 interface. You can select a particular channel on which to operate, force the
1195 transmission rate to a particular speed, set the fragmentation threshold, set
1196 the RTS threshold, set the wakeup interval for clients in power-save mode, set
1197 the beacon interval for the access point, set the acceleration mode and set whether
1198 short or long preambles are used.</p>
1199
1200 <p>Press <b>Apply</b> when you&rsquo;re finished making changes.</p>
1201
1202 <form>
1203    <table border="0" cellpadding="2" cellspacing="0">
1204       <tr>
1205           <td><label>AP isolation:</label></td>
1206           <td><select name='wlAPIsolation' id='wlAPIsolation'>
1207                  <option value='0'>Disabled</option>
1208                  <option value='1'>Enabled</option>
1209               </select></td>
1210       </tr>
1211       <tr>
1212           <td><label>Band:</td>
1213           <td><select name='wlBand' id='wlBand' onChange='onBandChange();'>
1214 <script type="text/javascript">
1215 <!-- hide
1216 if ( bands == '3' ) { // dual band
1217          document.writeln('      <option value=2>2.4GHz</option>');
1218          document.writeln('      <option value=1>5GHz</option>');
1219 }
1220 else if (bands == '1') {
1221          document.writeln('      <option value=1>5GHz</option>');
1222 }
1223 else {
1224          document.writeln('      <option value=2>2.4GHz</option>');
1225 }
1226 // done hiding -->
1227 </script>
1228           </select></td>
1229       </tr>
1230       <tr>
1231           <td><label>Channel:</label></td>
1232           <td><select name='wlChannel' id='wlChannel' onChange="wl_recalc(false)">
1233               </select></td>
1234       </tr>
1235       <tr>
1236          <td><label>Channel timer:</label></td>
1237          <td><input type='text' name='wlCsScanTimer' id='wlCsScanTimer' size="10"> <label>minutes</label></td>
1238       </tr>
1239       <tr id="div_nMode_sel">
1240          <td><label>802.11n mode:</label></td>
1241          <td><select name='wlNmode' id='wlNmode' onChange="onNmodeChange();">
1242                 <option value="auto">Automatic</option>
1243                 <option value="off">Disabled</option>
1244              </select></td>
1245       </tr>
1246       <tr id="idWMMno11n">
1247          <td></td>
1248          <td><span class="clsNote">(Note: WMM is incompatible with <b>802.11n</b> mode.)</span></td>
1249       </tr>
1250       <tr id="idBandwidth">
1251          <td><label>Bandwidth:</label></td>
1252                  <td><select name="wlNbw" id="wlNbw" onChange="wl_recalc(false)">
1253                 <option value="20">20MHz</option>
1254                 <option value="40">40MHz</option>
1255              </select></td>
1256       </tr>
1257       <tr id="idCtrlSideband">
1258          <td><label>Control sideband:</label></td>
1259          <td><select name="wlNCtrlsb" id="wlNCtrlsb" onChange="wl_recalc(false)">
1260                 <option value="-1">Lower</option>
1261                 <option value="1">Upper</option>
1262              </select></td>
1263       </tr>
1264       <tr id="idNRate">
1265          <td><label>802.11n rate:</label></td>
1266          <td><select name="wlNMmcsidx" id="wlNMmcsidx"  onChange="wl_mcs_onchange(false)";>
1267              </select></td>
1268       </tr>
1269       <tr id="idNProtection">
1270          <td><label>802.11n protection:</label></td>
1271          <td><select name="wlNProtection" id="wlNProtection">
1272                 <option value="off">Off</option>
1273                 <option value="auto">Automatic</option>
1274              </select></td>
1275       </tr>
1276       <tr id="idNClient">
1277          <td><label>Support 802.11n client only:</label></td>
1278          <td><select name="wlNReqd" id="wlNReqd">
1279                 <option value="0">Off</option>
1280                 <option value="1">On</option>
1281             </select></td>
1282       </tr>
1283       <tr>
1284           <td><label>54g&trade; rate:</label></td>
1285           <td><select name='wlRate' id='wlRate'>
1286               </select></td>
1287       </tr>
1288       <tr>
1289           <td><label>Multicast rate:</label></td>
1290           <td><select name='wlMCastRate' id='wlMCastRate'>
1291               </select></td>
1292       </tr>
1293       <tr>
1294           <td><label>Basic rate:</label></td>
1295           <td><select name='wlBasicRate' id='wlBasicRate'>
1296               </select></td>
1297       </tr>
1298       <tr>
1299           <td><label for="wlFrgThrshld">Fragmentation&nbsp;threshold:</label></td>
1300           <td><input type='text' name='wlFrgThrshld' id='wlFrgThrshld' size='10' onchange="wl_recalc(false);">
1301           <span class="clsNote">(Note: <b>MAXg</b> acceleration requires a value of 2346.)</span></td>
1302       </tr>
1303       <tr>
1304           <td><label for="wlRtsThrshld">RTS threshold:</label></td>
1305           <td><input type='text' name='wlRtsThrshld' id='wlRtsThrshld' size='10'></td>
1306       </tr>
1307       <tr>
1308           <td><label for="wlDtmIntvl">DTIM interval:</label></td>
1309           <td><input type='text' name='wlDtmIntvl' id='wlDtmIntvl' size='10'></td>
1310       </tr>
1311       <tr>
1312           <td><label for="wlBcnIntvl">Beacon interval:</label></td>
1313           <td><input type='text' name='wlBcnIntvl' id='wlBcnIntvl' size='10'></td>
1314       </tr>
1315       <tr>
1316          <td><label for="wlMaxAssoc">Maximum&nbsp;associated&nbsp;clients:</td>
1317          <td><input type='text' name='wlMaxAssoc' id="wlMaxAssoc" size='10'></td>
1318       </tr>
1319
1320       <tr>
1321          <td><label>Acceleration:</label></td>
1322          <td><select id="cbAcceleration" onchange="onAccelerationChange();">
1323                 <option value="maxg" selected>MAXg (125 Mbps)</option>
1324                 <option value="xpress">54g+ (XPress&trade;)</option>
1325                 <option value="none">None</option>
1326                          </select></td>
1327       </tr>
1328       <tr id="idWMMnoMAXg">
1329          <td></td>
1330          <td><span class="clsNote">(Note: WMM is incompatible with <b>MAXg</b> acceleration.)</span></td>
1331       </tr>
1332
1333       <tr id="id54gMode">
1334          <td><label>54g&trade; mode:</label></td>
1335          <td><select name="wlgMode" id="wlgMode" onChange="gModeChange()">
1336                  <option value="1">Automatic</option>
1337                  <option value="4">54g Performance</option>
1338                  <option value="5">54g LRS</option>
1339                  <option value="0">802.11b Only</option>
1340              </select></td>
1341       </tr>
1342       <tr id="id54gProtection">
1343          <td><label>54g&trade; protection:</label></td>
1344          <td><select name="wlProtection" id="wlProtection">
1345                  <option value="off">Disabled</option>
1346                  <option value="auto">Automatic</option>
1347              </select></td>
1348       </tr>
1349       <tr id="idRegulatory">
1350          <td><label>Regulatory mode:</label></td>
1351          <td><select name="wlRegMode" id="wlRegMode" onChange='RegModeChange()'>
1352                  <option value="0">Disabled</option>
1353                  <option value="1">802.11h</option>
1354                  <option value="2">802.11d</option>
1355              </select></td>
1356       </tr>
1357       <tr id="idDfsPreIsm">
1358          <td><label for="wlDfsPreIsm">Pre-network radar check:</label></td>
1359          <td><input type='text' name='wlDfsPreIsm' id='wlDfsPreIsm'></td>
1360       </tr>
1361       <tr id="idDfsPostIsm">
1362          <td><label for="wlDfsPostIsm">In-network radar check:</label></td>
1363          <td><input type='text' name='wlDfsPostIsm' id='wlDfsPostIsm'></td>
1364       </tr>
1365       <tr id="idTpsMitigation">
1366          <td><label>TPC mitigation:</label></td>
1367          <td><select name="wlTpcDb" id="wlTpcDb">
1368                <option value="0">0 dB (off)</option>
1369                <option value="2">2 dB</option>
1370                <option value="3">3 dB</option>
1371                <option value="4">4 dB</option>
1372             </select></td>
1373       </tr>
1374        <tr id="preambleType">
1375            <td><label>Preamble type:</label></td>
1376            <td><select name="wlPreambleType" id="wlPreambleType">
1377                   <option value="long">long</option>
1378                   <option value="short">short</option>
1379                </select></td>
1380        </tr>
1381       <tr id="WLTXPOWER">
1382          <td><label>Transmit power:</label></td>
1383          <td><select name="wlTxPower" id="wlTxPower">
1384                <option value="20">20%</option>
1385                <option value="40">40%</option>
1386                <option value="60">60%</option>
1387                <option value="80">80%</option>
1388                <option value="100">100%</option>
1389              </select></td>
1390       </tr>
1391    </table>
1392
1393    <p><input type='button' onClick='btnApply()' value='Apply'></p>
1394 </form>
1395
1396
1397 <script type="text/javascript">
1398     writeFooter();
1399 </script>
1400
1401 </body>
1402 </html>