@@ -201,7 +201,9 @@ function format_wifirate(rate) {
201201 mhz = rate . mhz , nss = rate . nss ,
202202 mcs = rate . mcs , sgi = rate . short_gi ,
203203 he = rate . he , he_gi = rate . he_gi ,
204- he_dcm = rate . he_dcm ;
204+ he_dcm = rate . he_dcm ,
205+ eht = rate ?. eht ?? false , eht_gi = rate ?. eht_gi ?? 0 ,
206+ eht_dcm = rate ?. eht_dcm ?? 0 ;
205207
206208 if ( ht || vht ) {
207209 if ( vht ) s += ', VHT-MCS\xa0%d' . format ( mcs ) ;
@@ -217,6 +219,13 @@ function format_wifirate(rate) {
217219 if ( he_dcm ) s += ', HE-DCM\xa0%d' . format ( he_dcm ) ;
218220 }
219221
222+ if ( eht ) {
223+ s += ', EHT-MCS\xa0%d' . format ( mcs ) ;
224+ if ( nss ) s += ', EHT-NSS\xa0%d' . format ( nss ) ;
225+ if ( eht_gi ) s += ', EHT-GI\xa0%d' . format ( eht_gi ) ;
226+ if ( eht_dcm ) s += ', EHT-DCM\xa0%d' . format ( eht_dcm ) ;
227+ }
228+
220229 return s ;
221230}
222231
@@ -298,14 +307,17 @@ function add_dependency_permutations(o, deps) {
298307 o . depends ( res [ i ] ) ;
299308}
300309
310+ // Define a class CBIWifiFrequencyValue that extends form.Value
301311var CBIWifiFrequencyValue = form . Value . extend ( {
312+ // Declare an RPC method to get the frequency list for a given device
302313 callFrequencyList : rpc . declare ( {
303314 object : 'iwinfo' ,
304315 method : 'freqlist' ,
305316 params : [ 'device' ] ,
306317 expect : { results : [ ] }
307318 } ) ,
308319
320+ // Load method to fetch WiFi device details and frequency list
309321 load : function ( section_id ) {
310322 return Promise . all ( [
311323 network . getWifiDevice ( section_id ) ,
@@ -334,13 +346,16 @@ var CBIWifiFrequencyValue = form.Value.extend({
334346 var hwmodelist = L . toArray ( data [ 0 ] ? data [ 0 ] . getHWModes ( ) : null )
335347 . reduce ( function ( o , v ) { o [ v ] = true ; return o } , { } ) ;
336348
349+ // Define supported modes
337350 this . modes = [
338351 '' , 'Legacy' , hwmodelist . a || hwmodelist . b || hwmodelist . g ,
339352 'n' , 'N' , hwmodelist . n ,
340353 'ac' , 'AC' , L . hasSystemFeature ( 'hostapd' , '11ac' ) && hwmodelist . ac ,
341- 'ax' , 'AX' , L . hasSystemFeature ( 'hostapd' , '11ax' ) && hwmodelist . ax
354+ 'ax' , 'AX' , L . hasSystemFeature ( 'hostapd' , '11ax' ) && hwmodelist . ax ,
355+ 'be' , 'BE' , L . hasSystemFeature ( 'hostapd' , '11be' ) && hwmodelist . be
342356 ] ;
343357
358+ // Create a list of HT modes based on device capabilities
344359 var htmodelist = L . toArray ( data [ 0 ] ? data [ 0 ] . getHTModes ( ) : null )
345360 . reduce ( function ( o , v ) { o [ v ] = true ; return o } , { } ) ;
346361
@@ -361,9 +376,18 @@ var CBIWifiFrequencyValue = form.Value.extend({
361376 'HE40' , '40 MHz' , htmodelist . HE40 ,
362377 'HE80' , '80 MHz' , htmodelist . HE80 ,
363378 'HE160' , '160 MHz' , htmodelist . HE160
379+ ] ,
380+ 'be' : [
381+ 'EHT20' , '20 MHz' , htmodelist . EHT20 ,
382+ 'EHT40' , '40 MHz' , htmodelist . EHT40 ,
383+ 'EHT80' , '80 MHz' , htmodelist . EHT80 ,
384+ 'EHT160' , '160 MHz' , htmodelist . EHT160 ,
385+ 'EHT320' , '320 MHz' , htmodelist . EHT320
364386 ]
365387 } ;
366388
389+ // Define available bands for widget selection based on channel availability
390+ // AX and BE are available on 2/5/6G bands
367391 this . bands = {
368392 '' : [
369393 '2g' , '2.4 GHz' , this . channels [ '2g' ] . length > 3 ,
@@ -381,11 +405,17 @@ var CBIWifiFrequencyValue = form.Value.extend({
381405 '2g' , '2.4 GHz' , this . channels [ '2g' ] . length > 3 ,
382406 '5g' , '5 GHz' , this . channels [ '5g' ] . length > 3 ,
383407 '6g' , '6 GHz' , this . channels [ '6g' ] . length > 3
384- ]
408+ ] ,
409+ 'be' : [
410+ '2g' , '2.4 GHz' , this . channels [ '2g' ] . length > 3 ,
411+ '5g' , '5 GHz' , this . channels [ '5g' ] . length > 3 ,
412+ '6g' , '6 GHz' , this . channels [ '6g' ] . length > 3
413+ ] ,
385414 } ;
386415 } , this ) ) ;
387416 } ,
388417
418+ // Set values in the select element
389419 setValues : function ( sel , vals ) {
390420 if ( sel . vals )
391421 sel . vals . selected = sel . selectedIndex ;
@@ -445,7 +475,10 @@ var CBIWifiFrequencyValue = form.Value.extend({
445475
446476 this . setValues ( mode , this . modes ) ;
447477
448- if ( / H E 2 0 | H E 4 0 | H E 8 0 | H E 1 6 0 / . test ( htval ) )
478+ // Determine mode based on htmode value
479+ if ( / E H T 2 0 | E H T 4 0 | E H T 8 0 | E H T 1 6 0 | E H T 3 2 0 / . test ( htval ) )
480+ mode . value = 'be' ;
481+ else if ( / H E 2 0 | H E 4 0 | H E 8 0 | H E 1 6 0 / . test ( htval ) )
449482 mode . value = 'ax' ;
450483 else if ( / V H T 2 0 | V H T 4 0 | V H T 8 0 | V H T 1 6 0 / . test ( htval ) )
451484 mode . value = 'ac' ;
@@ -459,7 +492,9 @@ var CBIWifiFrequencyValue = form.Value.extend({
459492 if ( hwval != null ) {
460493 this . useBandOption = false ;
461494
462- if ( / a / . test ( hwval ) )
495+ if ( / b e / . test ( mode . value ) )
496+ band . value = '6g' ;
497+ else if ( / a x / . test ( mode . value ) )
463498 band . value = '5g' ;
464499 else
465500 band . value = '2g' ;
0 commit comments