WIFI-792: RF Implementation (#11)

* Removing RF parameters from ApElementConfig, refactoring to RF profile
This commit is contained in:
ralphlee3
2020-10-09 21:57:19 -04:00
committed by GitHub
parent 2c8e37c174
commit 6b3b835e80
10 changed files with 124 additions and 307 deletions

View File

@@ -7,7 +7,6 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -78,6 +77,7 @@ import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.telecominfraproject.wlan.profile.network.models.RadioProfileConfiguration; import com.telecominfraproject.wlan.profile.network.models.RadioProfileConfiguration;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration; import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.profile.rf.models.RfElementConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.SecureMode; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.SecureMode;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface; import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
@@ -251,11 +251,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
} }
if (!radioType.equals(RadioType.UNSUPPORTED)) { if (!radioType.equals(RadioType.UNSUPPORTED)) {
advancedRadioConfiguration = RadioConfiguration.createWithDefaults(radioType); advancedRadioConfiguration = RadioConfiguration.createWithDefaults(radioType);
advancedRadioConfiguration.setAutoChannelSelection(StateSetting.disabled);
advancedRadioMap.put(radioType, advancedRadioConfiguration); advancedRadioMap.put(radioType, advancedRadioConfiguration);
radioConfiguration = ElementRadioConfiguration.createWithDefaults(radioType); radioConfiguration = ElementRadioConfiguration.createWithDefaults(radioType);
radioConfiguration.setAutoChannelSelection(false);
radioMap.put(radioType, radioConfiguration); radioMap.put(radioType, radioConfiguration);
} }
} }
@@ -287,6 +285,36 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
// one: // one:
Profile apProfile = createDefaultApProfile(ce, connectNodeInfo); Profile apProfile = createDefaultApProfile(ce, connectNodeInfo);
profileId = apProfile.getId(); profileId = apProfile.getId();
// Initialize equipment from RF Profile
ProfileContainer profileContainer = new ProfileContainer(
profileServiceInterface.getProfileWithChildren(profileId));
RfConfiguration rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf)
.getDetails();
ApElementConfiguration config = (ApElementConfiguration) ce.getDetails();
Map<RadioType, ElementRadioConfiguration> baseRadioMap = config.getRadioMap();
Map<RadioType, RadioConfiguration> advRadioMap = config.getAdvancedRadioMap();
for (RadioType rType : config.getRadioMap().keySet()) {
ElementRadioConfiguration elementRadioConfig = baseRadioMap.get(rType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(rType);
elementRadioConfig.setClientDisconnectThresholdDb(rfElementConfig.getClientDisconnectThresholdDb());
elementRadioConfig.setEirpTxPower(rfElementConfig.getEirpTxPower());
elementRadioConfig.setPerimeterDetectionEnabled(rfElementConfig.getPerimeterDetectionEnabled());
elementRadioConfig.setProbeResponseThresholdDb(rfElementConfig.getProbeResponseThresholdDb());
elementRadioConfig.setRxCellSizeDb(rfElementConfig.getRxCellSizeDb());
}
for (RadioType rType : config.getAdvancedRadioMap().keySet()) {
RadioConfiguration radioConfig = advRadioMap.get(rType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(rType);
radioConfig.setBestApSettings(rfElementConfig.getBestApSettings());
radioConfig.setManagementRate(rfElementConfig.getManagementRate());
}
config.setAdvancedRadioMap(advRadioMap);
config.setRadioMap(baseRadioMap);
ce.setDetails(config);
} }
ce.setProfileId(profileId); ce.setProfileId(profileId);
@@ -903,7 +931,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
return; // we don't have the required info to get the return; // we don't have the required info to get the
// radio type yet // radio type yet
} }
ApElementConfiguration apElementConfig = (ApElementConfiguration) apNode.getDetails();
ProfileContainer profileContainer = new ProfileContainer(
profileServiceInterface.getProfileWithChildren(apNode.getProfileId()));
RfConfiguration rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(apNode.getProfileId(), ProfileType.rf)
.getDetails();
for (OpensyncAPVIFState vifState : vifStateTables) { for (OpensyncAPVIFState vifState : vifStateTables) {
@@ -935,11 +968,14 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
vifState.getAssociatedClients()); vifState.getAssociatedClients());
RadioType radioType = null; RadioType radioType = null;
Optional<ElementRadioConfiguration> radioConfiguration = ((ApElementConfiguration) apNode.getDetails()) Map<RadioType, RfElementConfiguration> rfElementMap = rfConfig.getRfConfigMap();
.getRadioMap().values().stream().filter(t -> (t.getActiveChannel() == channel)).findFirst(); Map<RadioType, ElementRadioConfiguration> elementRadioMap = apElementConfig.getRadioMap();
for (RadioType rType : elementRadioMap.keySet()) {
if (radioConfiguration.isPresent()) { boolean autoChannelSelection = rfElementMap.get(rType).getAutoChannelSelection();
radioType = radioConfiguration.get().getRadioType(); if (elementRadioMap.get(rType).getActiveChannel(autoChannelSelection) == channel) {
radioType = rType;
break;
}
} }
updateActiveBssids(customerId, equipmentId, apId, ssid, radioType, bssid, numClients); updateActiveBssids(customerId, equipmentId, apId, ssid, radioType, bssid, numClients);

View File

@@ -46,6 +46,7 @@ import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.profile.models.Profile; import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.models.ProfileContainer; import com.telecominfraproject.wlan.profile.models.ProfileContainer;
import com.telecominfraproject.wlan.profile.models.ProfileType; import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.RadioBasedSsidConfiguration; import com.telecominfraproject.wlan.profile.ssid.models.RadioBasedSsidConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.SecureMode; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.SecureMode;
@@ -2256,7 +2257,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
ProfileContainer profileContainer = new ProfileContainer( ProfileContainer profileContainer = new ProfileContainer(
profileServiceInterface.getProfileWithChildren(profileId)); profileServiceInterface.getProfileWithChildren(profileId));
profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf).getDetails(); RfConfiguration rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf)
.getDetails();
for (Survey survey : report.getSurveyList()) { for (Survey survey : report.getSurveyList()) {
@@ -2278,8 +2280,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
continue; continue;
} }
ChannelBandwidth channelBandwidth = ((ApElementConfiguration) equipmentServiceInterface.get(equipmentId) ChannelBandwidth channelBandwidth = rfConfig.getRfConfig(radioType).getChannelBandwidth();
.getDetails()).getRadioMap().get(radioType).getChannelBandwidth();
Map<Integer, List<SurveySample>> sampleByChannelMap = new HashMap<>(); Map<Integer, List<SurveySample>> sampleByChannelMap = new HashMap<>();

View File

@@ -6,8 +6,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import org.junit.After; import org.junit.After;
@@ -66,7 +68,9 @@ import com.telecominfraproject.wlan.opensync.external.integration.models.Opensyn
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface; import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.profile.models.Profile; import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface; import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.status.StatusServiceInterface; import com.telecominfraproject.wlan.status.StatusServiceInterface;
@@ -272,18 +276,37 @@ public class OpensyncExternalIntegrationCloudTest {
customer.setDetails(customerDetails); customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer); Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
Profile rfProfile = new Profile();
rfProfile.setId(1);
rfProfile.setName("testRfProfile");
rfProfile.setDetails(RfConfiguration.createWithDefaults());
rfProfile.setProfileType(ProfileType.rf);
Profile apProfile = new Profile(); Profile apProfile = new Profile();
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults()); apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
apProfile.setName("testApProfile");
apProfile.setProfileType(ProfileType.equipment_ap);
Profile ssidProfile = new Profile(); Profile ssidProfile = new Profile();
ssidProfile.setId(2);
ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId())); Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId());
childProfileIds.add(ssidProfile.getId());
apProfile.setChildProfileIds(childProfileIds);
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile) Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile)
.thenReturn(ssidProfile); .thenReturn(ssidProfile).thenReturn(rfProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile); Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile);
profileList.add(rfProfile);
profileList.add(ssidProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
equipment.setCustomerId(2); equipment.setCustomerId(2);
@@ -586,11 +609,32 @@ public class OpensyncExternalIntegrationCloudTest {
equipment.setCustomerId(1); equipment.setCustomerId(1);
equipment.setEquipmentType(EquipmentType.AP); equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId); equipment.setInventoryId(apId);
equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults()); equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
Profile rfProfile = new Profile();
rfProfile.setName("testRfProfile");
rfProfile.setId(2);
rfProfile.setDetails(RfConfiguration.createWithDefaults());
rfProfile.setProfileType(ProfileType.rf);
Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId());
Profile apProfile = new Profile();
apProfile.setName("testApProfile");
apProfile.setId(1);
apProfile.setProfileType(ProfileType.equipment_ap);
apProfile.setChildProfileIds(childProfileIds);
List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile);
profileList.add(rfProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);

View File

@@ -38,8 +38,6 @@
"channelNumber": 6, "channelNumber": 6,
"manualChannelNumber": 6, "manualChannelNumber": 6,
"backupChannelNumber": 11, "backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -62,13 +60,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -81,8 +72,6 @@
"channelNumber": 149, "channelNumber": 149,
"manualChannelNumber": 149, "manualChannelNumber": 149,
"backupChannelNumber": 154, "backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -105,13 +94,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -124,8 +106,6 @@
"channelNumber": 36, "channelNumber": 36,
"manualChannelNumber": 36, "manualChannelNumber": 36,
"backupChannelNumber": 44, "backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -148,13 +128,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -168,39 +141,18 @@
"radioType": "is2dot4GHz", "radioType": "is2dot4GHz",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN", "radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzU": { "is5GHzU": {
@@ -208,39 +160,18 @@
"radioType": "is5GHzU", "radioType": "is5GHzU",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzL": { "is5GHzL": {
@@ -248,39 +179,18 @@
"radioType": "is5GHzL", "radioType": "is5GHzL",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
} }
} }

View File

@@ -65,7 +65,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -125,7 +126,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
} },
"minAutoCellSize": -80
}, },
"is5GHzU": { "is5GHzU": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -185,7 +187,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is5GHzL": { "is5GHzL": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -245,7 +248,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
} }
}, },
"profileType": "rf" "profileType": "rf"

View File

@@ -38,8 +38,6 @@
"channelNumber": 6, "channelNumber": 6,
"manualChannelNumber": 6, "manualChannelNumber": 6,
"backupChannelNumber": 11, "backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -62,13 +60,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -81,8 +72,6 @@
"channelNumber": 149, "channelNumber": 149,
"manualChannelNumber": 149, "manualChannelNumber": 149,
"backupChannelNumber": 154, "backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -105,13 +94,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -124,8 +106,6 @@
"channelNumber": 36, "channelNumber": 36,
"manualChannelNumber": 36, "manualChannelNumber": 36,
"backupChannelNumber": 44, "backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -148,13 +128,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -168,39 +141,18 @@
"radioType": "is2dot4GHz", "radioType": "is2dot4GHz",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN", "radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzU": { "is5GHzU": {
@@ -208,39 +160,18 @@
"radioType": "is5GHzU", "radioType": "is5GHzU",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzL": { "is5GHzL": {
@@ -248,39 +179,18 @@
"radioType": "is5GHzL", "radioType": "is5GHzL",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
} }
} }

View File

@@ -65,7 +65,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -125,7 +126,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
} },
"minAutoCellSize": -80
}, },
"is5GHzU": { "is5GHzU": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -185,7 +187,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is5GHzL": { "is5GHzL": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -245,7 +248,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
} }
}, },
"profileType": "rf" "profileType": "rf"

View File

@@ -38,8 +38,6 @@
"channelNumber": 6, "channelNumber": 6,
"manualChannelNumber": 6, "manualChannelNumber": 6,
"backupChannelNumber": 11, "backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -62,13 +60,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -81,8 +72,6 @@
"channelNumber": 149, "channelNumber": 149,
"manualChannelNumber": 149, "manualChannelNumber": 149,
"backupChannelNumber": 154, "backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -105,13 +94,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -124,8 +106,6 @@
"channelNumber": 36, "channelNumber": 36,
"manualChannelNumber": 36, "manualChannelNumber": 36,
"backupChannelNumber": 44, "backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [], "bannedChannels": [],
"allowedChannels": [], "allowedChannels": [],
"rxCellSizeDb": { "rxCellSizeDb": {
@@ -148,13 +128,6 @@
"auto": false, "auto": false,
"value": 32 "value": 32
}, },
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true, "perimeterDetectionEnabled": true,
"bestAPSteerType": "both", "bestAPSteerType": "both",
"deauthAttackDetection": null, "deauthAttackDetection": null,
@@ -168,39 +141,18 @@
"radioType": "is2dot4GHz", "radioType": "is2dot4GHz",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN", "radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzU": { "is5GHzU": {
@@ -208,39 +160,18 @@
"radioType": "is5GHzU", "radioType": "is5GHzU",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
}, },
"is5GHzL": { "is5GHzL": {
@@ -248,39 +179,18 @@
"radioType": "is5GHzL", "radioType": "is5GHzL",
"radioAdminState": "enabled", "radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346, "fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC", "radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled", "wmmState": "enabled",
"uapsdState": "enabled", "uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled", "stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto", "managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApSettings": { "bestApSettings": {
"model_type": "RadioBestApSettings", "model_type": "RadioBestApSettings",
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
}, },
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled", "legacyBSSRate": "enabled",
"beaconInterval": 100,
"deauthAttackDetection": null "deauthAttackDetection": null
} }
} }

View File

@@ -65,7 +65,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -125,7 +126,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 20, "dropInSnrPercentage": 20,
"minLoadFactor": 50 "minLoadFactor": 50
} },
"minAutoCellSize": -80
}, },
"is5GHzU": { "is5GHzU": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -185,7 +187,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
}, },
"is5GHzL": { "is5GHzL": {
"model_type": "RfElementConfiguration", "model_type": "RfElementConfiguration",
@@ -245,7 +248,8 @@
"mlComputed": true, "mlComputed": true,
"dropInSnrPercentage": 30, "dropInSnrPercentage": 30,
"minLoadFactor": 40 "minLoadFactor": 40
} },
"minAutoCellSize": -80
} }
}, },
"profileType": "rf" "profileType": "rf"

View File

@@ -1903,9 +1903,7 @@ public class OvsdbDao {
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType); ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
int channel = elementRadioConfig.getChannelNumber(); int channel = elementRadioConfig.getChannelNumber();
ChannelBandwidth bandwidth = elementRadioConfig.getChannelBandwidth(); ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth();
// ChannelBandwidth bandwidth =
// rfElementConfig.getChannelBandwidth();
String ht_mode = null; String ht_mode = null;
switch (bandwidth) { switch (bandwidth) {
case is20MHz: case is20MHz:
@@ -1926,11 +1924,10 @@ public class OvsdbDao {
default: default:
ht_mode = null; ht_mode = null;
} }
elementRadioConfig.getAutoChannelSelection(); rfElementConfig.getAutoChannelSelection();
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType); RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
int beaconInterval = radioConfig.getBeaconInterval(); int beaconInterval = rfElementConfig.getBeaconInterval();
// int beaconInterval = rfElementConfig.getBeaconInterval();
boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled); boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled);
int txPower = 0; int txPower = 0;
@@ -2966,8 +2963,7 @@ public class OvsdbDao {
} }
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
int dtimPeriod = radioConfiguration.getDtimPeriod(); int dtimPeriod = radioConfiguration.getDtimPeriod();
int rtsCtsThreshold = radioConfiguration.getRtsCtsThreshold(); int rtsCtsThreshold = rfElementConfig.getRtsCtsThreshold();
// int rtsCtsThreshold = rfElementConfig.getRtsCtsThreshold();
int fragThresholdBytes = radioConfiguration.getFragmentationThresholdBytes(); int fragThresholdBytes = radioConfiguration.getFragmentationThresholdBytes();
RadioMode radioMode = radioConfiguration.getRadioMode(); RadioMode radioMode = radioConfiguration.getRadioMode();
String minHwMode = "11n"; // min_hw_mode is 11ac, wifi 5, we can String minHwMode = "11n"; // min_hw_mode is 11ac, wifi 5, we can
@@ -4840,7 +4836,6 @@ public class OvsdbDao {
} }
} }
public void processNewChannelsRequest(OvsdbClient ovsdbClient, Map<RadioType, Integer> channelMap) { public void processNewChannelsRequest(OvsdbClient ovsdbClient, Map<RadioType, Integer> channelMap) {
LOG.info("OvsdbDao::processNewChannelsRequest {}", channelMap); LOG.info("OvsdbDao::processNewChannelsRequest {}", channelMap);
@@ -4882,5 +4877,4 @@ public class OvsdbDao {
} }
} }