diff --git a/build b/build index ca7bf83..da2d398 100644 --- a/build +++ b/build @@ -1 +1 @@ -13 \ No newline at end of file +14 \ No newline at end of file diff --git a/src/RESTObjects/RESTAPI_GWobjects.cpp b/src/RESTObjects/RESTAPI_GWobjects.cpp index 285517d..d6b3f1d 100644 --- a/src/RESTObjects/RESTAPI_GWobjects.cpp +++ b/src/RESTObjects/RESTAPI_GWobjects.cpp @@ -203,6 +203,10 @@ namespace OpenWifi::GWObjects { field_to_json(Obj,"kafkaClients", kafkaClients); field_to_json(Obj,"kafkaPackets", kafkaPackets); field_to_json(Obj,"locale", locale); + field_to_json(Obj,"started", started); + field_to_json(Obj,"sessionId", sessionId); + field_to_json(Obj,"connectionCompletionTime", connectionCompletionTime); + field_to_json(Obj,"totalConnectionTime", OpenWifi::Now() - started); switch(VerifiedCertificate) { case NO_CERTIFICATE: @@ -218,6 +222,21 @@ namespace OpenWifi::GWObjects { } } + void DeviceConnectionStatistics::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"averageConnectionTime", averageConnectionTime); + field_to_json(Obj,"connectedDevices", connectedDevices ); + } + + bool DeviceConnectionStatistics::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"averageConnectionTime", averageConnectionTime); + field_from_json(Obj,"connectedDevices", connectedDevices ); + return true; + } catch (const Poco::Exception &E) { + } + return false; + } + void RttySessionDetails::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj,"serialNumber", SerialNumber); field_to_json(Obj,"server", Server); @@ -293,7 +312,6 @@ namespace OpenWifi::GWObjects { } catch (const Poco::Exception &E) { } return false; - } void RadiusProxyPoolList::to_json(Poco::JSON::Object &Obj) const { @@ -314,6 +332,8 @@ namespace OpenWifi::GWObjects { field_to_json(Obj,"description",description); field_to_json(Obj,"authConfig",authConfig); field_to_json(Obj,"acctConfig",acctConfig); + field_to_json(Obj,"coaConfig",coaConfig); + field_to_json(Obj,"useByDefault",useByDefault); } bool RadiusProxyPool::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -322,6 +342,8 @@ namespace OpenWifi::GWObjects { field_from_json(Obj,"description",description); field_from_json(Obj,"authConfig",authConfig); field_from_json(Obj,"acctConfig",acctConfig); + field_from_json(Obj,"coaConfig",coaConfig); + field_from_json(Obj,"useByDefault",useByDefault); return true; } catch (const Poco::Exception &E) { } @@ -329,7 +351,7 @@ namespace OpenWifi::GWObjects { } void RadiusProxyServerConfig::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"policy",strategy); + field_to_json(Obj,"strategy",strategy); field_to_json(Obj,"monitor",monitor); field_to_json(Obj,"monitorMethod",monitorMethod); field_to_json(Obj,"methodParameters",methodParameters); @@ -338,7 +360,7 @@ namespace OpenWifi::GWObjects { bool RadiusProxyServerConfig::from_json(const Poco::JSON::Object::Ptr &Obj) { try { - field_from_json(Obj,"policy",strategy); + field_from_json(Obj,"strategy",strategy); field_from_json(Obj,"monitor",monitor); field_from_json(Obj,"monitorMethod",monitorMethod); field_from_json(Obj,"methodParameters",methodParameters); @@ -354,6 +376,16 @@ namespace OpenWifi::GWObjects { field_to_json(Obj,"ip",ip); field_to_json(Obj,"port",port); field_to_json(Obj,"weight",weight); + field_to_json(Obj,"secret",secret); + field_to_json(Obj,"certificate",certificate); + field_to_json(Obj,"radsec",radsec); + field_to_json(Obj,"radsecPort",radsecPort); + field_to_json(Obj,"radsecSecret",radsecSecret); + field_to_json(Obj,"radsecCacerts",radsecCacerts); + field_to_json(Obj,"radsecCert",radsecCert); + field_to_json(Obj,"radsecKey",radsecKey); + field_to_json(Obj,"radsecRealms",radsecRealms); + field_to_json(Obj,"ignore",ignore); } bool RadiusProxyServerEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -362,6 +394,16 @@ namespace OpenWifi::GWObjects { field_from_json(Obj,"ip",ip); field_from_json(Obj,"port",port); field_from_json(Obj,"weight",weight); + field_from_json(Obj,"secret",secret); + field_from_json(Obj,"certificate",certificate); + field_from_json(Obj,"radsec",radsec); + field_from_json(Obj,"radsecSecret",radsecSecret); + field_from_json(Obj,"radsecPort",radsecPort); + field_from_json(Obj,"radsecCacerts",radsecCacerts); + field_from_json(Obj,"radsecCert",radsecCert); + field_from_json(Obj,"radsecKey",radsecKey); + field_from_json(Obj,"radsecRealms",radsecRealms); + field_from_json(Obj,"ignore",ignore); return true; } catch (const Poco::Exception &E) { } diff --git a/src/RESTObjects/RESTAPI_GWobjects.h b/src/RESTObjects/RESTAPI_GWobjects.h index 7395545..2a2b2a9 100644 --- a/src/RESTObjects/RESTAPI_GWobjects.h +++ b/src/RESTObjects/RESTAPI_GWobjects.h @@ -38,6 +38,10 @@ namespace OpenWifi::GWObjects { uint64_t kafkaPackets=0; uint64_t websocketPackets=0; std::string locale; + uint64_t started=0; + uint64_t sessionId=0; + double connectionCompletionTime=0.0; + void to_json(Poco::JSON::Object &Obj) const; }; @@ -71,6 +75,13 @@ namespace OpenWifi::GWObjects { void Print() const; }; + struct DeviceConnectionStatistics { + std::uint64_t connectedDevices = 0; + std::uint64_t averageConnectionTime = 0; + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + struct Statistics { std::string SerialNumber; uint64_t UUID = 0 ; @@ -216,6 +227,16 @@ namespace OpenWifi::GWObjects { std::string ip; uint16_t port=0; uint64_t weight=0; + std::string secret; + std::string certificate; + bool radsec=false; + uint16_t radsecPort=2083; + std::string radsecSecret; + std::string radsecKey; + std::string radsecCert; + std::vector radsecCacerts; + std::vector radsecRealms; + bool ignore=false; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -237,6 +258,8 @@ namespace OpenWifi::GWObjects { std::string description; RadiusProxyServerConfig authConfig; RadiusProxyServerConfig acctConfig; + RadiusProxyServerConfig coaConfig; + bool useByDefault=false; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); diff --git a/src/framework/ConfigurationValidator.cpp b/src/framework/ConfigurationValidator.cpp index 7a4a571..5170ef6 100644 --- a/src/framework/ConfigurationValidator.cpp +++ b/src/framework/ConfigurationValidator.cpp @@ -44,7 +44,7 @@ static json DefaultUCentralSchema = R"( "switch": { "$ref": "#/$defs/switch" }, - "radios": { + "radiosgrep": { "type": "array", "items": { "$ref": "#/$defs/radio" diff --git a/src/framework/MicroService.h b/src/framework/MicroService.h index f07c13b..9c520a1 100644 --- a/src/framework/MicroService.h +++ b/src/framework/MicroService.h @@ -23,6 +23,13 @@ #include #include + +// This must be defined for poco_debug and poco_trace macros to function. + +#ifndef POCO_LOG_DEBUG +#define POCO_LOG_DEBUG true +#endif + namespace OpenWifi { inline uint64_t Now() { return std::time(nullptr); }; } @@ -1345,17 +1352,17 @@ namespace OpenWifi { inline void exception(const Poco::Exception & E) { Poco::Thread * CurrentThread = Poco::Thread::current(); App_.logger().log(E); - App_.logger().error(fmt::format("Exception occurred in {}",CurrentThread->getName())); + poco_error(App_.logger(), fmt::format("Exception occurred in {}",CurrentThread->getName())); } inline void exception(const std::exception & E) { Poco::Thread * CurrentThread = Poco::Thread::current(); - App_.logger().warning(fmt::format("std::exception in {}: {}",CurrentThread->getName(),E.what())); + poco_warning(App_.logger(), fmt::format("std::exception in {}: {}",CurrentThread->getName(),E.what())); } inline void exception() { Poco::Thread * CurrentThread = Poco::Thread::current(); - App_.logger().warning(fmt::format("exception in {}",CurrentThread->getName())); + poco_warning(App_.logger(), fmt::format("exception in {}",CurrentThread->getName())); } private: Poco::Util::Application &App_; @@ -1363,12 +1370,17 @@ namespace OpenWifi { class BusEventManager : public Poco::Runnable { public: + explicit BusEventManager(Poco::Logger &L) : Logger_(L) { + + } inline void run() final; inline void Start(); inline void Stop(); + inline Poco::Logger & Logger() { return Logger_; } private: mutable std::atomic_bool Running_ = false; Poco::Thread Thread_; + Poco::Logger &Logger_; }; class MyPrivateKeyPassphraseHandler : public Poco::Net::PrivateKeyPassphraseHandler { @@ -1382,6 +1394,7 @@ namespace OpenWifi { Logger_.information("Returning key passphrase."); privateKey = Password_; }; + inline Poco::Logger & Logger() { return Logger_; } private: std::string Password_; Poco::Logger & Logger_; @@ -1650,14 +1663,14 @@ namespace OpenWifi { class SubSystemServer : public Poco::Util::Application::Subsystem { public: - SubSystemServer(std::string Name, const std::string &LoggingPrefix, - std::string SubSystemConfigPrefix); + SubSystemServer(const std::string & Name, const std::string &LoggingPrefix, + const std::string & SubSystemConfigPrefix); inline void initialize(Poco::Util::Application &self) override; inline void uninitialize() override { } inline void reinitialize([[maybe_unused]] Poco::Util::Application &self) override { - Logger().information("Reloading of this subsystem is not supported."); + Logger_->L_.information("Reloading of this subsystem is not supported."); } inline void defineOptions([[maybe_unused]] Poco::Util::OptionSet &options) override { } @@ -1666,30 +1679,30 @@ namespace OpenWifi { inline const PropertiesFileServerEntry & Host(uint64_t index) { return ConfigServersList_[index]; }; inline uint64_t HostSize() const { return ConfigServersList_.size(); } - inline Poco::Logger &Logger() { if(Log_) - return Log_->L; - return Poco::Logger::get("tmp"); - }; - inline void SetLoggingLevel(Poco::Message::Priority NewPriority) { Logger().setLevel(NewPriority); } - inline int GetLoggingLevel() { return Logger().getLevel(); } + inline Poco::Logger & Logger() const { return Logger_->L_; } + inline void SetLoggingLevel(const std::string & levelName) { + Logger_->L_.setLevel(Poco::Logger::parseLevel(levelName)); + } + inline int GetLoggingLevel() { return Logger_->L_.getLevel(); } virtual int Start() = 0; virtual void Stop() = 0; - struct LoggerWrapper { - Poco::Logger &L; - explicit inline LoggerWrapper(Poco::Logger &Logger) : L(Logger) {} - }; + struct LoggerWrapper { + Poco::Logger & L_; + LoggerWrapper(Poco::Logger &L) : + L_(L) {} + }; protected: std::recursive_mutex Mutex_; std::vector ConfigServersList_; + private: - std::unique_ptr Log_; - // Poco::Logger &Logger_; - std::string Name_; - std::string LoggerPrefix_; - std::string SubSystemConfigPrefix_; + std::unique_ptr Logger_; + std::string Name_; + std::string LoggerPrefix_; + std::string SubSystemConfigPrefix_; }; class RESTAPI_GenericServer { @@ -1823,7 +1836,7 @@ namespace OpenWifi { E->Count++; Cache_.update(H,E); if(E->Count > MaxCalls) { - Logger().warning(fmt::format("RATE-LIMIT-EXCEEDED: from '{}'", R.clientAddress().toString())); + poco_warning(Logger(),fmt::format("RATE-LIMIT-EXCEEDED: from '{}'", R.clientAddress().toString())); return true; } return false; @@ -2165,12 +2178,16 @@ namespace OpenWifi { SetCommonHeaders(CloseConnection); } - inline void BadRequest(const OpenWifi::RESTAPI::Errors::msg &E) { + inline void BadRequest(const OpenWifi::RESTAPI::Errors::msg &E, const std::string & Extra="") { PrepareResponse(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); Poco::JSON::Object ErrorObject; ErrorObject.set("ErrorCode",400); ErrorObject.set("ErrorDetails",Request->getMethod()); - ErrorObject.set("ErrorDescription",fmt::format("{}: {}",E.err_num,E.err_txt)) ; + if(Extra.empty()) + ErrorObject.set("ErrorDescription",fmt::format("{}: {}",E.err_num,E.err_txt)) ; + else + ErrorObject.set("ErrorDescription",fmt::format("{}: {} ({})",E.err_num,E.err_txt, Extra)) ; + std::ostream &Answer = Response->send(); Poco::JSON::Stringifier::stringify(ErrorObject, Answer); } @@ -2214,7 +2231,7 @@ namespace OpenWifi { ErrorObject.set("ErrorDescription",fmt::format("{}: {}",E.err_num,E.err_txt)) ; std::ostream &Answer = Response->send(); Poco::JSON::Stringifier::stringify(ErrorObject, Answer); - Logger_.debug(fmt::format("RES-NOTFOUND: User='{}@{}' Method='{}' Path='{}", + poco_debug(Logger_,fmt::format("RES-NOTFOUND: User='{}@{}' Method='{}' Path='{}", UserInfo_.userinfo.email, Utils::FormatIPv6(Request->clientAddress().toString()), Request->getMethod(), @@ -2783,9 +2800,11 @@ namespace OpenWifi { inline void Stop() override { if(KafkaEnabled_) { + poco_information(Logger(),"Stopping..."); Dispatcher_.Stop(); ProducerThr_.Stop(); ConsumerThr_.Stop(); + poco_information(Logger(),"Stopped..."); return; } } @@ -2947,12 +2966,12 @@ namespace OpenWifi { { } - void handleRequest(Poco::Net::HTTPServerRequest& Request, Poco::Net::HTTPServerResponse& Response) override + void handleRequest([[maybe_unused]] Poco::Net::HTTPServerRequest& Request, Poco::Net::HTTPServerResponse& Response) override { Utils::SetThreadName("alb-request"); try { if((id_ % 100) == 0) { - Logger_.debug(fmt::format("ALB-REQUEST({}): ALB Request {}.", + poco_debug(Logger_,fmt::format("ALB-REQUEST({}): ALB Request {}.", Request.clientAddress().toString(), id_)); } Response.setChunkedTransferEncoding(true); @@ -3010,8 +3029,10 @@ namespace OpenWifi { inline int Start() override; inline void Stop() override { + poco_information(Logger(),"Stopping..."); if(Running_) - Server_->stop(); + Server_->stopAll(true); + poco_information(Logger(),"Stopped..."); } private: @@ -3040,10 +3061,11 @@ namespace OpenWifi { inline void Stop() override { Logger().information("Stopping..."); for( const auto & svr : RESTServers_ ) - svr->stop(); + svr->stopAll(true); Pool_.stopAll(); Pool_.joinAll(); RESTServers_.clear(); + Logger().information("Stopped..."); } @@ -3058,7 +3080,7 @@ namespace OpenWifi { private: std::vector> RESTServers_; - Poco::ThreadPool Pool_{"x-rest",2,32}; + Poco::ThreadPool Pool_{"x-rest",4,128}; RESTAPI_GenericServer Server_; RESTAPI_ExtServer() noexcept: @@ -3175,9 +3197,10 @@ namespace OpenWifi { inline void Stop() override { Logger().information("Stopping..."); for( const auto & svr : RESTServers_ ) - svr->stop(); + svr->stopAll(true); Pool_.stopAll(); Pool_.joinAll(); + Logger().information("Stopped..."); } inline void reinitialize(Poco::Util::Application &self) override; @@ -3187,11 +3210,10 @@ namespace OpenWifi { Utils::SetThreadName(fmt::format("i-rest:{}",Id).c_str()); return RESTAPI_IntRouter(Path, Bindings, Logger(), Server_, Id); } - const Poco::ThreadPool & Pool() { return Pool_; } private: std::vector> RESTServers_; - Poco::ThreadPool Pool_{"i-rest",2,16}; + Poco::ThreadPool Pool_{"i-rest",4,96}; RESTAPI_GenericServer Server_; RESTAPI_IntServer() noexcept: @@ -3272,7 +3294,7 @@ namespace OpenWifi { return ((RandomEngine_() % (max-min)) + min); } - inline Poco::Logger & GetLogger(const std::string &Name) { +/* inline Poco::Logger & GetLogger(const std::string &Name) { static auto initialized = false; if(!initialized) { @@ -3281,7 +3303,7 @@ namespace OpenWifi { } return Poco::Logger::get(Name); } - +*/ virtual void GetExtraConfiguration(Poco::JSON::Object & Cfg) { Cfg.set("additionalConfiguration",false); } @@ -3374,7 +3396,6 @@ namespace OpenWifi { std::string MyPublicEndPoint_; std::string UIURI_; std::string Version_{ OW_VERSION::VERSION + "("+ OW_VERSION::BUILD + ")" + " - " + OW_VERSION::HASH }; - BusEventManager BusEventManager_; std::recursive_mutex InfraMutex_; std::default_random_engine RandomEngine_; Poco::Util::PropertyFileConfiguration * PropConfigurationFile_ = nullptr; @@ -3388,7 +3409,8 @@ namespace OpenWifi { bool NoBuiltInCrypto_=false; Poco::JWT::Signer Signer_; Poco::Logger &Logger_; - Poco::ThreadPool TimerPool_{"timer:pool",2,16}; + Poco::ThreadPool TimerPool_{"timer:pool",2,16}; + std::unique_ptr BusEventManager_; }; inline void MicroService::Exit(int Reason) { @@ -3469,7 +3491,7 @@ namespace OpenWifi { } } catch (const Poco::Exception &E) { - Logger_.log(E); + logger().log(E); } } @@ -3720,8 +3742,9 @@ namespace OpenWifi { } inline void MicroService::InitializeSubSystemServers() { - for(auto i:SubSystems_) - addSubsystem(i); + for(auto i:SubSystems_) { + addSubsystem(i); + } } inline void MicroService::StartSubSystemServers() { @@ -3729,12 +3752,13 @@ namespace OpenWifi { for(auto i:SubSystems_) { i->Start(); } - BusEventManager_.Start(); + BusEventManager_ = std::make_unique(Poco::Logger::create("BusEventManager",Poco::Logger::root().getChannel(),Poco::Logger::root().getLevel())); + BusEventManager_->Start(); } inline void MicroService::StopSubSystemServers() { AddActivity("Stopping"); - BusEventManager_.Stop(); + BusEventManager_->Stop(); for(auto i=SubSystems_.rbegin(); i!=SubSystems_.rend(); ++i) { (*i)->Stop(); } @@ -3911,14 +3935,15 @@ namespace OpenWifi { } } - inline SubSystemServer::SubSystemServer(std::string Name, const std::string &LoggingPrefix, - std::string SubSystemConfigPrefix): - Name_(std::move(Name)), - LoggerPrefix_(LoggingPrefix), - SubSystemConfigPrefix_(std::move(SubSystemConfigPrefix)) { + inline SubSystemServer::SubSystemServer(const std::string &Name, const std::string &LoggingPrefix, + const std::string &SubSystemConfigPrefix): + Name_(Name), + LoggerPrefix_(LoggingPrefix), + SubSystemConfigPrefix_(SubSystemConfigPrefix) { } inline int RESTAPI_ExtServer::Start() { + Logger().information("Starting."); Server_.InitLogging(); for(const auto & Svr: ConfigServersList_) { @@ -3950,7 +3975,6 @@ namespace OpenWifi { NewServer->start(); RESTServers_.push_back(std::move(NewServer)); } - return 0; } @@ -4040,7 +4064,11 @@ namespace OpenWifi { auto i = 0; bool good = true; - Log_ = std::make_unique(Poco::Logger::get(LoggerPrefix_)); + auto NewLevel = MicroService::instance().ConfigGetString("logging.level." + Name_, ""); + if(NewLevel.empty()) + Logger_ = std::make_unique(Poco::Logger::create(LoggerPrefix_, Poco::Logger::root().getChannel(), Poco::Logger::root().getLevel())); + else + Logger_ = std::make_unique(Poco::Logger::create(LoggerPrefix_, Poco::Logger::root().getChannel(), Poco::Logger::parseLevel(NewLevel))); ConfigServersList_.clear(); while (good) { @@ -4130,9 +4158,11 @@ namespace OpenWifi { inline void BusEventManager::Stop() { if(KafkaManager()->Enabled()) { + poco_information(Logger(),"Stopping..."); Running_ = false; Thread_.wakeUp(); Thread_.join(); + poco_information(Logger(),"Stopped..."); } } @@ -4144,37 +4174,37 @@ namespace OpenWifi { inline void KafkaLoggerFun([[maybe_unused]] cppkafka::KafkaHandleBase & handle, int level, const std::string & facility, const std::string &message) { switch ((cppkafka::LogLevel) level) { case cppkafka::LogLevel::LogNotice: { - KafkaManager()->Logger().notice(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + poco_notice(KafkaManager()->Logger(),fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; case cppkafka::LogLevel::LogDebug: { - KafkaManager()->Logger().debug(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + poco_debug(KafkaManager()->Logger(),fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; case cppkafka::LogLevel::LogInfo: { - KafkaManager()->Logger().information(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + poco_information(KafkaManager()->Logger(),fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; - case cppkafka::LogLevel::LogWarning: { - KafkaManager()->Logger().warning(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + case cppkafka::LogLevel::LogWarning: { + poco_warning(KafkaManager()->Logger(), fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; case cppkafka::LogLevel::LogAlert: case cppkafka::LogLevel::LogCrit: { - KafkaManager()->Logger().critical(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + poco_critical(KafkaManager()->Logger(),fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; case cppkafka::LogLevel::LogErr: case cppkafka::LogLevel::LogEmerg: default: { - KafkaManager()->Logger().error(fmt::format("kafka-log: facility: {} message: {}",facility, message)); + poco_error(KafkaManager()->Logger(),fmt::format("kafka-log: facility: {} message: {}",facility, message)); } break; } } inline void KafkaErrorFun([[maybe_unused]] cppkafka::KafkaHandleBase & handle, int error, const std::string &reason) { - KafkaManager()->Logger().error(fmt::format("kafka-error: {}, reason: {}", error, reason)); + poco_error(KafkaManager()->Logger(),fmt::format("kafka-error: {}, reason: {}", error, reason)); } inline void AddKafkaSecurity(cppkafka::Configuration & Config) { @@ -4223,11 +4253,11 @@ namespace OpenWifi { cppkafka::MessageBuilder(Msg->Topic()).key(Msg->Key()).payload(Msg->Payload())); } } catch (const cppkafka::HandleException &E) { - KafkaManager()->Logger().warning(fmt::format("Caught a Kafka exception (producer): {}", E.what())); + poco_warning(KafkaManager()->Logger(),fmt::format("Caught a Kafka exception (producer): {}", E.what())); } catch( const Poco::Exception &E) { KafkaManager()->Logger().log(E); } catch (...) { - KafkaManager()->Logger().error("std::exception"); + poco_error(KafkaManager()->Logger(),"std::exception"); } Note = Queue_.waitDequeueNotification(); } @@ -4287,7 +4317,7 @@ namespace OpenWifi { continue; if (Msg.get_error()) { if (!Msg.is_eof()) { - KafkaManager()->Logger().error(fmt::format("Error: {}", Msg.get_error().to_string())); + poco_error(KafkaManager()->Logger(),fmt::format("Error: {}", Msg.get_error().to_string())); } if(!AutoCommit) Consumer.async_commit(Msg); @@ -4298,11 +4328,11 @@ namespace OpenWifi { Consumer.async_commit(Msg); } } catch (const cppkafka::HandleException &E) { - KafkaManager()->Logger().warning(fmt::format("Caught a Kafka exception (consumer): {}", E.what())); + poco_warning(KafkaManager()->Logger(),fmt::format("Caught a Kafka exception (consumer): {}", E.what())); } catch (const Poco::Exception &E) { KafkaManager()->Logger().log(E); } catch (...) { - KafkaManager()->Logger().error("std::exception"); + poco_error(KafkaManager()->Logger(),"std::exception"); } } Consumer.unsubscribe(); @@ -4754,7 +4784,7 @@ namespace OpenWifi { Contacted = true; if(!Allowed) { if(Server_.LogBadTokens(false)) { - Logger_.debug(fmt::format("I-REQ-DENIED({}): Method={} Path={}", + poco_debug(Logger_,fmt::format("I-REQ-DENIED({}): Method={} Path={}", Utils::FormatIPv6(Request->clientAddress().toString()), Request->getMethod(), Request->getURI())); } @@ -4762,7 +4792,7 @@ namespace OpenWifi { auto Id = Request->get("X-INTERNAL-NAME", "unknown"); REST_Requester_ = Id; if(Server_.LogIt(Request->getMethod(),true)) { - Logger_.debug(fmt::format("I-REQ-ALLOWED({}): User='{}' Method={} Path={}", + poco_debug(Logger_,fmt::format("I-REQ-ALLOWED({}): User='{}' Method={} Path={}", Utils::FormatIPv6(Request->clientAddress().toString()), Id, Request->getMethod(), Request->getURI())); } @@ -4786,7 +4816,7 @@ namespace OpenWifi { #endif REST_Requester_ = UserInfo_.userinfo.email; if(Server_.LogIt(Request->getMethod(),true)) { - Logger_.debug(fmt::format("X-REQ-ALLOWED({}): User='{}@{}' Method={} Path={}", + poco_debug(Logger_,fmt::format("X-REQ-ALLOWED({}): User='{}@{}' Method={} Path={}", UserInfo_.userinfo.email, Utils::FormatIPv6(Request->clientAddress().toString()), Request->clientAddress().toString(), @@ -4796,7 +4826,7 @@ namespace OpenWifi { return true; } else { if(Server_.LogBadTokens(true)) { - Logger_.debug(fmt::format("X-REQ-DENIED({}): Method={} Path={}", + poco_debug(Logger_,fmt::format("X-REQ-DENIED({}): Method={} Path={}", Utils::FormatIPv6(Request->clientAddress().toString()), Request->getMethod(), Request->getURI())); } @@ -5060,7 +5090,7 @@ namespace OpenWifi { auto Op = flags & Poco::Net::WebSocket::FRAME_OP_BITMASK; if (n == 0) { - Logger().warning(Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_)); + poco_warning(Logger(),Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_)); return delete this; } @@ -5073,7 +5103,7 @@ namespace OpenWifi { case Poco::Net::WebSocket::FRAME_OP_PONG: { } break; case Poco::Net::WebSocket::FRAME_OP_CLOSE: { - Logger().warning(Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_)); + poco_warning(Logger(),Poco::format("CLOSE(%s): %s UI Client is closing WS connection.", Id_, UserName_)); Done = true; } break; case Poco::Net::WebSocket::FRAME_OP_TEXT: { @@ -5086,7 +5116,7 @@ namespace OpenWifi { AuthClient()->IsAuthorized(Tokens[1], UserInfo_, Expired, Contacted)) { Authenticated_ = true; UserName_ = UserInfo_.userinfo.email; - Logger().warning(Poco::format("START(%s): %s UI Client is starting WS connection.", Id_, UserName_)); + poco_warning(Logger(),Poco::format("START(%s): %s UI Client is starting WS connection.", Id_, UserName_)); std::string S{"Welcome! Bienvenue! Bienvenidos!"}; WS_->sendFrame(S.c_str(), S.size()); WebSocketClientServer()->SetUser(Id_, UserInfo_.userinfo.email); @@ -5149,7 +5179,10 @@ namespace OpenWifi { Reactor_.addEventHandler(*WS_, Poco::NObserver( *this, &WebSocketClient::OnSocketError)); - // WebSocketClientServer()->Register(this, Id_); + WS_->setNoDelay(true); + WS_->setKeepAlive(true); + WS_->setBlocking(false); + } catch (...) { delete this; } diff --git a/src/framework/StorageClass.h b/src/framework/StorageClass.h index 34ecc2f..d9f3b98 100644 --- a/src/framework/StorageClass.h +++ b/src/framework/StorageClass.h @@ -33,7 +33,6 @@ namespace OpenWifi { int Start() override { std::lock_guard Guard(Mutex_); - Logger().setLevel(Poco::Message::PRIO_INFORMATION); Logger().notice("Starting."); std::string DBType = MicroService::instance().ConfigGetString("storage.type"); diff --git a/src/framework/ow_constants.h b/src/framework/ow_constants.h index 443a457..5d70763 100644 --- a/src/framework/ow_constants.h +++ b/src/framework/ow_constants.h @@ -196,6 +196,8 @@ namespace OpenWifi::RESTAPI::Errors { static const struct msg InvalidRadiusServerEntry{1142,"RADIUS Server IP address invalid or port missing."}; static const struct msg InvalidRadiusServerWeigth{1143,"RADIUS Server IP weight cannot be 0."}; + static const struct msg MaximumRTTYSessionsReached{1144,"Too many RTTY sessions currently active"}; + static const struct msg DeviceIsAlreadyBusy{1145,"Device is already executing a command. Please try later."}; } @@ -428,6 +430,7 @@ namespace OpenWifi::uCentralProtocol { static const char *RADIUSDATA = "data"; static const char *RADIUSACCT = "acct"; static const char *RADIUSAUTH = "auth"; + static const char *RADIUSCOA = "coa"; static const char *RADIUSDST = "dst"; static const char *IES = "ies"; } @@ -444,6 +447,7 @@ namespace OpenWifi::uCentralProtocol::Events { static const char *RECOVERY = "recovery"; static const char *TELEMETRY = "telemetry"; static const char *DEVICEUPDATE = "deviceupdate"; + static const char *VENUE_BROADCAST = "venue_broadcast"; enum EVENT_MSG { ET_UNKNOWN, @@ -456,7 +460,8 @@ namespace OpenWifi::uCentralProtocol::Events { ET_CFGPENDING, ET_RECOVERY, ET_DEVICEUPDATE, - ET_TELEMETRY + ET_TELEMETRY, + ET_VENUEBROADCAST }; inline EVENT_MSG EventFromString(const std::string & Method) { @@ -480,6 +485,8 @@ namespace OpenWifi::uCentralProtocol::Events { return ET_RECOVERY; else if(strcmp(TELEMETRY,Method.c_str())==0) return ET_TELEMETRY; + else if(strcmp(VENUE_BROADCAST,Method.c_str())==0) + return ET_VENUEBROADCAST; return ET_UNKNOWN; }; } diff --git a/src/last_stats_2.json b/src/last_stats_2.json new file mode 100644 index 0000000..84c49dd --- /dev/null +++ b/src/last_stats_2.json @@ -0,0 +1,7552 @@ +{ + "interfaces": [ + { + "clients": [ + { + "ipv4_addresses": [ + "10.2.207.137" + ], + "mac": "00:14:ee:0a:e6:a9", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.87.19" + ], + "mac": "00:1c:42:6c:73:9b", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:852:9933:3072:a558" + ], + "mac": "00:3e:e1:c1:4c:4a", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:6f8:f8ff:fefc:35b6" + ], + "mac": "04:f8:f8:fc:35:b6", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:6f8:f8ff:fefc:363e" + ], + "mac": "04:f8:f8:fc:36:3e", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:6f8:f8ff:fefc:3772" + ], + "mac": "04:f8:f8:fc:37:72", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1c1b:aa80:e2db:6caf", + "fe80:0:0:0:1ccc:9016:4bf5:7ec1" + ], + "mac": "16:e3:ef:fc:6c:8f", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1ab4:30ff:feb7:14bc" + ], + "mac": "18:b4:30:b7:14:bc", + "ports": [ + "wlan1" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1ae8:29ff:fe25:f70a" + ], + "mac": "18:e8:29:25:f7:0a", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1e12:b0ff:fe97:f257" + ], + "mac": "1c:12:b0:97:f2:57", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:265a:4cff:fe60:36d1" + ], + "mac": "24:5a:4c:60:36:d1", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:265a:4cff:fe60:39ef" + ], + "mac": "24:5a:4c:60:39:ef", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.131.195" + ], + "ipv6_addresses": [ + "fe80:0:0:0:2a11:a5ff:fef5:79f3" + ], + "mac": "28:11:a5:f5:79:f3", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.49.208" + ], + "mac": "34:97:f6:32:68:32", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1ccb:37a1:3a79:67f5" + ], + "mac": "4a:3f:e9:1b:cb:98", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:1030:da5c:5d97:cafb", + "fe80:0:0:0:869:489b:665f:4f7f", + "fe80:0:0:0:18a8:3f15:5d4e:d478" + ], + "mac": "58:d3:49:0d:d2:56", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:6ad7:9aff:fe57:c66a" + ], + "mac": "68:d7:9a:57:c6:6a", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:7683:c2ff:fe0d:f6a5" + ], + "mac": "74:83:c2:0d:f6:a5", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:7683:c2ff:fe11:3aa1" + ], + "mac": "74:83:c2:11:3a:a1", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:7683:c2ff:fe73:9ea6" + ], + "mac": "74:83:c2:73:9e:a6", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:7a45:58ff:feb4:4237" + ], + "mac": "78:45:58:b4:42:37", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:923c:b3ff:fe2d:2ea5" + ], + "mac": "90:3c:b3:2d:2e:a5", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:923c:b3ff:fe2d:2fef" + ], + "mac": "90:3c:b3:2d:2f:ef", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:923c:b3ff:feb1:70db" + ], + "mac": "90:3c:b3:b1:70:db", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:923c:b3ff:febb:1ee5" + ], + "mac": "90:3c:b3:bb:1e:e5", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.8.192" + ], + "ipv6_addresses": [ + "fe80:0:0:0:923c:b3ff:febb:1ef4" + ], + "mac": "90:3c:b3:bb:1e:f4", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:10e8:c792:f2bb:c3f2", + "fe80:0:0:0:14f6:c4f2:9d67:8856", + "fe80:0:0:0:849:c06b:b7fd:2921" + ], + "mac": "9c:76:0e:76:13:a3", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:491:ef1a:90da:1c9c", + "fe80:0:0:0:cab:9fdb:ca8:9ee5", + "fe80:0:0:0:1cb2:1305:8492:f93b", + "fe80:0:0:0:1435:b187:c23f:345a" + ], + "mac": "9c:76:0e:85:1e:26", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.145.81" + ], + "mac": "9e:5c:e7:9f:b0:fc", + "ports": [ + "wlan0" + ] + }, + { + "ipv4_addresses": [ + "10.2.170.130" + ], + "ipv6_addresses": [ + "fe80:0:0:0:a630:7aff:fec8:f0b4" + ], + "mac": "a4:30:7a:c8:f0:b4", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:b6fb:e4ff:feb7:d94b" + ], + "mac": "b4:fb:e4:b7:d9:4b", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.115.105" + ], + "ipv6_addresses": [ + "fe80:0:0:0:fe64:4a8c:bce1:3536" + ], + "mac": "b8:27:eb:07:57:01", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.207.178" + ], + "mac": "b8:27:eb:09:60:df", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.250.242" + ], + "mac": "b8:27:eb:0b:f8:d3", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.158.32" + ], + "ipv6_addresses": [ + "fe80:0:0:0:ee72:ccb4:5eda:532f" + ], + "mac": "b8:27:eb:0c:45:1c", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.60.224" + ], + "ipv6_addresses": [ + "fe80:0:0:0:a88e:852f:cbe:2589" + ], + "mac": "b8:27:eb:12:bf:e7", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.252.57" + ], + "mac": "b8:27:eb:18:a1:61", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.53.136" + ], + "mac": "b8:27:eb:24:e3:3d", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.128.30" + ], + "ipv6_addresses": [ + "fe80:0:0:0:d0f5:5ea1:5a2a:7130" + ], + "mac": "b8:27:eb:29:e7:6b", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.134.69" + ], + "mac": "b8:27:eb:29:eb:ca", + "ports": [ + "wlan0" + ] + }, + { + "ipv4_addresses": [ + "10.2.229.245" + ], + "mac": "b8:27:eb:30:c8:07", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.24.200" + ], + "ipv6_addresses": [ + "fe80:0:0:0:8a6:92ae:8d15:c54d" + ], + "mac": "b8:27:eb:35:0a:d6", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.55.189" + ], + "ipv6_addresses": [ + "fe80:0:0:0:8080:72d5:1663:5e94" + ], + "mac": "b8:27:eb:35:d0:6c", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.247.54" + ], + "mac": "b8:27:eb:38:ab:5b", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.179.225" + ], + "mac": "b8:27:eb:3a:46:97", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.64.122" + ], + "ipv6_addresses": [ + "fe80:0:0:0:230c:8f7:d46d:607c" + ], + "mac": "b8:27:eb:46:11:ee", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.44.214" + ], + "ipv6_addresses": [ + "fe80:0:0:0:4245:b39b:94fd:6940" + ], + "mac": "b8:27:eb:49:bb:2c", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.167.215" + ], + "mac": "b8:27:eb:59:0e:bc", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.78.94" + ], + "mac": "b8:27:eb:5b:4a:ef", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.246.120" + ], + "mac": "b8:27:eb:61:1c:4a", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.151.73" + ], + "mac": "b8:27:eb:61:8a:ec", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.195.147" + ], + "mac": "b8:27:eb:63:73:0b", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.25.221" + ], + "ipv6_addresses": [ + "fe80:0:0:0:627d:7909:67b:eb5e" + ], + "mac": "b8:27:eb:68:7e:9c", + "ports": [ + "wlan0" + ] + }, + { + "ipv4_addresses": [ + "10.2.33.84" + ], + "mac": "b8:27:eb:69:10:74", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.139.85" + ], + "mac": "b8:27:eb:79:b8:c4", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.102.231" + ], + "ipv6_addresses": [ + "fe80:0:0:0:83df:11c0:3d6d:f7a5" + ], + "mac": "b8:27:eb:7a:dc:80", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.102.131" + ], + "mac": "b8:27:eb:97:32:ab", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.168.195" + ], + "mac": "b8:27:eb:98:9d:77", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.30.3" + ], + "ipv6_addresses": [ + "fe80:0:0:0:9bd3:214e:8e2e:3b6e" + ], + "mac": "b8:27:eb:9a:b7:87", + "ports": [ + "wlan0" + ] + }, + { + "ipv4_addresses": [ + "10.2.100.234" + ], + "ipv6_addresses": [ + "fe80:0:0:0:9538:cd98:4613:971a" + ], + "mac": "b8:27:eb:9a:e8:9c", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.41.230" + ], + "ipv6_addresses": [ + "fe80:0:0:0:1784:7633:2ebc:a407" + ], + "mac": "b8:27:eb:9d:c6:85", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.54.227" + ], + "mac": "b8:27:eb:a4:69:e3", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.199.61" + ], + "mac": "b8:27:eb:a9:9e:03", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.208.229" + ], + "ipv6_addresses": [ + "fe80:0:0:0:816d:896e:ec61:fabc" + ], + "mac": "b8:27:eb:b8:c6:c8", + "ports": [ + "wlan1" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:82e4:6c85:17e4:a4da" + ], + "mac": "b8:27:eb:bd:28:d0", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.126.200" + ], + "mac": "b8:27:eb:bf:d8:6b", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.224.126" + ], + "mac": "b8:27:eb:c3:af:91", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.231.218" + ], + "ipv6_addresses": [ + "fe80:0:0:0:4523:79e1:e960:9b88" + ], + "mac": "b8:27:eb:c8:85:01", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.11.56" + ], + "mac": "b8:27:eb:cc:e0:a1", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.28.214" + ], + "mac": "b8:27:eb:d0:80:2d", + "ports": [ + "wlan1" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:b0dc:a8c:d970:df66" + ], + "mac": "b8:27:eb:d5:5f:c8", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.107.152" + ], + "mac": "b8:27:eb:d6:c4:39", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.214.121" + ], + "mac": "b8:27:eb:db:de:e6", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.41.165" + ], + "mac": "b8:27:eb:e2:01:73", + "ports": [ + "wlan1" + ] + }, + { + "ipv4_addresses": [ + "10.2.115.68" + ], + "ipv6_addresses": [ + "fe80:0:0:0:d5fe:d457:8c6:d2a" + ], + "mac": "b8:27:eb:f9:dd:fd", + "ports": [ + "wlan0" + ] + }, + { + "ipv4_addresses": [ + "10.2.10.22" + ], + "mac": "c8:2b:96:a0:c9:c3", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.64.7" + ], + "ipv6_addresses": [ + "fe80:0:0:0:e262:34ff:fe2f:cb0a" + ], + "mac": "e0:62:34:2f:cb:0a", + "ports": [ + "eth0" + ] + }, + { + "ipv4_addresses": [ + "10.2.0.1" + ], + "ipv6_addresses": [ + "2604:3d08:9680:bd00:0:0:0:1" + ], + "mac": "e2:63:da:86:64:8e", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:9682:1662:5db:1fb0" + ], + "mac": "e6:67:5c:7e:16:e8", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:f692:bfff:fe73:147d" + ], + "mac": "f4:92:bf:73:14:7d", + "ports": [ + "eth0" + ] + }, + { + "ipv6_addresses": [ + "fe80:0:0:0:feec:daff:fe7c:d88a" + ], + "mac": "fc:ec:da:7c:d8:8a", + "ports": [ + "eth0" + ] + } + ], + "counters": { + "collisions": 0, + "multicast": 44398434, + "rx_bytes": -199103021, + "rx_dropped": 0, + "rx_errors": 0, + "rx_packets": 64208660, + "tx_bytes": 1685756407, + "tx_dropped": 0, + "tx_errors": 0, + "tx_packets": 18269827 + }, + "location": "/interfaces/0", + "name": "up0v0", + "ssids": [ + { + "associations": [ + { + "ack_signal": -54, + "ack_signal_avg": -55, + "bssid": "90:3c:b3:bb:1c:9b", + "connected": 2973087, + "inactive": 9, + "rssi": -53, + "rx_bytes": 30717981, + "rx_duration": 0, + "rx_packets": 376311, + "rx_rate": { + "bitrate": 120000, + "chwidth": 40, + "mcs": 5, + "nss": 5, + "sgi": true, + "vht": true + }, + "station": "b8:27:eb:29:eb:ca", + "tid_stats": [ + { + "rx_msdu": 337003, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 19655, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 12730048, + "tx_duration": 22145045, + "tx_failed": 19654, + "tx_packets": 142746, + "tx_rate": { + "bitrate": 150000, + "chwidth": 40, + "mcs": 7, + "nss": 7, + "sgi": true, + "vht": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -58, + "ack_signal_avg": -58, + "bssid": "90:3c:b3:bb:1c:9b", + "connected": 1907402, + "inactive": 39, + "ipaddr_v4": "10.2.25.221", + "rssi": -58, + "rx_bytes": 16827351, + "rx_duration": 0, + "rx_packets": 205174, + "rx_rate": { + "bitrate": 135000, + "chwidth": 40, + "mcs": 7, + "nss": 7, + "vht": true + }, + "station": "b8:27:eb:68:7e:9c", + "tid_stats": [ + { + "rx_msdu": 205166, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 3709381, + "tx_duration": 11177441, + "tx_failed": 0, + "tx_packets": 64913, + "tx_rate": { + "bitrate": 180000, + "chwidth": 40, + "mcs": 8, + "nss": 8, + "sgi": true, + "vht": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -52, + "ack_signal_avg": -51, + "bssid": "90:3c:b3:bb:1c:9b", + "connected": 1238923, + "inactive": 39, + "ipaddr_v4": "10.2.115.68", + "rssi": -52, + "rx_bytes": 11250889, + "rx_duration": 0, + "rx_packets": 137596, + "rx_rate": { + "bitrate": 135000, + "chwidth": 40, + "mcs": 6, + "nss": 6, + "sgi": true, + "vht": true + }, + "station": "b8:27:eb:f9:dd:fd", + "tid_stats": [ + { + "rx_msdu": 137580, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 9, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 2904295, + "tx_duration": 4976075, + "tx_failed": 2, + "tx_packets": 54681, + "tx_rate": { + "bitrate": 150000, + "chwidth": 40, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -54, + "ack_signal_avg": -54, + "bssid": "90:3c:b3:bb:1c:9b", + "connected": 842828, + "inactive": 19, + "rssi": -55, + "rx_bytes": 7386373, + "rx_duration": 0, + "rx_packets": 88639, + "rx_rate": { + "bitrate": 135000, + "chwidth": 40, + "mcs": 6, + "nss": 6, + "sgi": true, + "vht": true + }, + "station": "b8:27:eb:9a:b7:87", + "tid_stats": [ + { + "rx_msdu": 88621, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 10, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1361498, + "tx_duration": 2515051, + "tx_failed": 3, + "tx_packets": 27014, + "tx_rate": { + "bitrate": 150000, + "chwidth": 40, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -61, + "ack_signal_avg": -58, + "bssid": "90:3c:b3:bb:1c:9b", + "connected": 234, + "inactive": 99, + "ipaddr_v4": "10.2.145.81", + "rssi": -63, + "rx_bytes": 5398, + "rx_duration": 0, + "rx_packets": 65, + "rx_rate": { + "bitrate": 180000, + "chwidth": 40, + "mcs": 9, + "nss": 9, + "vht": true + }, + "station": "9e:5c:e7:9f:b0:fc", + "tid_stats": [ + { + "rx_msdu": 27, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 20, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 5907, + "tx_duration": 2393, + "tx_failed": 16, + "tx_packets": 26, + "tx_rate": { + "bitrate": 120000, + "chwidth": 40, + "mcs": 5, + "nss": 5, + "sgi": true, + "vht": true + }, + "tx_retries": 0 + } + ], + "bssid": "90:3c:b3:bb:1c:9b", + "iface": "wlan0", + "location": "/interfaces/0/ssids/0", + "mode": "ap", + "phy": "platform/soc/c000000.wifi", + "radio": { + "$ref": "#/radios/0" + }, + "ssid": "petunia" + }, + { + "associations": [ + { + "ack_signal": -42, + "ack_signal_avg": -41, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040676, + "inactive": 14, + "ipaddr_v4": "10.2.246.120", + "rssi": -42, + "rx_bytes": 20118231, + "rx_duration": 0, + "rx_packets": 258154, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:61:1c:4a", + "tid_stats": [ + { + "rx_msdu": 258062, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 46, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6805853, + "tx_duration": 14839090, + "tx_failed": 5, + "tx_packets": 128596, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -43, + "ack_signal_avg": -42, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040676, + "inactive": 54, + "rssi": -43, + "rx_bytes": 21892273, + "rx_duration": 0, + "rx_packets": 278907, + "rx_rate": { + "bitrate": 39000, + "chwidth": 20, + "ht": true, + "mcs": 4 + }, + "station": "b8:27:eb:69:10:74", + "tid_stats": [ + { + "rx_msdu": 278847, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 31, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6696502, + "tx_duration": 14605090, + "tx_failed": 2, + "tx_packets": 127300, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -46, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040676, + "inactive": 54, + "rssi": -45, + "rx_bytes": 24591022, + "rx_duration": 0, + "rx_packets": 311383, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:a4:69:e3", + "tid_stats": [ + { + "rx_msdu": 311357, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 14, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6983322, + "tx_duration": 15287025, + "tx_failed": 2, + "tx_packets": 132052, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -40, + "ack_signal_avg": -40, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040676, + "inactive": 254, + "rssi": -40, + "rx_bytes": 10904806, + "rx_duration": 0, + "rx_packets": 139579, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "station": "b8:27:eb:82:d5:65", + "tid_stats": [ + { + "rx_msdu": 139467, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 57, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 4259691, + "tx_duration": 9052644, + "tx_failed": 2, + "tx_packets": 80514, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -41, + "ack_signal_avg": -41, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040675, + "inactive": 54, + "ipaddr_v4": "10.2.195.147", + "rssi": -42, + "rx_bytes": 21333667, + "rx_duration": 0, + "rx_packets": 272028, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:63:73:0b", + "tid_stats": [ + { + "rx_msdu": 271980, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 24, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6641455, + "tx_duration": 14609472, + "tx_failed": 2, + "tx_packets": 126217, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -44, + "ack_signal_avg": -43, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040675, + "inactive": 54, + "rssi": -45, + "rx_bytes": 24594911, + "rx_duration": 0, + "rx_packets": 311653, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:79:b8:c4", + "tid_stats": [ + { + "rx_msdu": 311597, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 29, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7034168, + "tx_duration": 15084779, + "tx_failed": 1, + "tx_packets": 132890, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -34, + "ack_signal_avg": -34, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040672, + "inactive": 14, + "rssi": -34, + "rx_bytes": 23643522, + "rx_duration": 0, + "rx_packets": 299516, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:bf:d8:6b", + "tid_stats": [ + { + "rx_msdu": 299410, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 53, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6783715, + "tx_duration": 14768496, + "tx_failed": 1, + "tx_packets": 128646, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -41, + "ack_signal_avg": -40, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040671, + "inactive": 4, + "ipaddr_v4": "10.2.199.61", + "rssi": -41, + "rx_bytes": 25922497, + "rx_duration": 0, + "rx_packets": 327687, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:a9:9e:03", + "tid_stats": [ + { + "rx_msdu": 327679, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7280608, + "tx_duration": 15404780, + "tx_failed": 1, + "tx_packets": 137625, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -45, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040671, + "inactive": 44, + "ipaddr_v4": "10.2.107.152", + "rssi": -45, + "rx_bytes": 23109049, + "rx_duration": 0, + "rx_packets": 294701, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:d6:c4:39", + "tid_stats": [ + { + "rx_msdu": 294693, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7335976, + "tx_duration": 15414261, + "tx_failed": 0, + "tx_packets": 138137, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -48, + "ack_signal_avg": -47, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040671, + "inactive": 39, + "ipaddr_v4": "10.2.78.94", + "rssi": -45, + "rx_bytes": 25712978, + "rx_duration": 0, + "rx_packets": 324612, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:5b:4a:ef", + "tid_stats": [ + { + "rx_msdu": 324604, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7138934, + "tx_duration": 15205607, + "tx_failed": 1, + "tx_packets": 135082, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -42, + "ack_signal_avg": -42, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040670, + "inactive": 4, + "ipaddr_v4": "10.2.207.178", + "rssi": -41, + "rx_bytes": 25810163, + "rx_duration": 0, + "rx_packets": 325672, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:09:60:df", + "tid_stats": [ + { + "rx_msdu": 325664, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7122253, + "tx_duration": 15065169, + "tx_failed": 1, + "tx_packets": 134857, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -40, + "ack_signal_avg": -42, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040670, + "inactive": 4, + "ipaddr_v4": "10.2.53.136", + "rssi": -40, + "rx_bytes": 25923521, + "rx_duration": 0, + "rx_packets": 327639, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:24:e3:3d", + "tid_stats": [ + { + "rx_msdu": 327631, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7213296, + "tx_duration": 15332886, + "tx_failed": 0, + "tx_packets": 136659, + "tx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "tx_retries": 0 + }, + { + "ack_signal": -39, + "ack_signal_avg": -39, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040670, + "inactive": 14, + "rssi": -38, + "rx_bytes": 25849565, + "rx_duration": 0, + "rx_packets": 325994, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:97:32:ab", + "tid_stats": [ + { + "rx_msdu": 325986, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7032249, + "tx_duration": 14989483, + "tx_failed": 0, + "tx_packets": 133517, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -48, + "ack_signal_avg": -50, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040670, + "inactive": 9, + "ipaddr_v4": "10.2.28.214", + "rssi": -51, + "rx_bytes": 25635867, + "rx_duration": 0, + "rx_packets": 323630, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:d0:80:2d", + "tid_stats": [ + { + "rx_msdu": 323622, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7124112, + "tx_duration": 15109346, + "tx_failed": 0, + "tx_packets": 134774, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -45, + "ack_signal_avg": -44, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040669, + "inactive": 34, + "rssi": -44, + "rx_bytes": 25614031, + "rx_duration": 0, + "rx_packets": 323497, + "rx_rate": { + "bitrate": 39000, + "chwidth": 20, + "ht": true, + "mcs": 4 + }, + "station": "b8:27:eb:18:a1:61", + "tid_stats": [ + { + "rx_msdu": 323489, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7144231, + "tx_duration": 15185577, + "tx_failed": 0, + "tx_packets": 135110, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -43, + "ack_signal_avg": -43, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040669, + "inactive": 14, + "ipaddr_v4": "10.2.11.56", + "rssi": -43, + "rx_bytes": 25795645, + "rx_duration": 0, + "rx_packets": 325354, + "rx_rate": { + "bitrate": 39000, + "chwidth": 20, + "ht": true, + "mcs": 4 + }, + "station": "b8:27:eb:cc:e0:a1", + "tid_stats": [ + { + "rx_msdu": 325346, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7118120, + "tx_duration": 15041675, + "tx_failed": 0, + "tx_packets": 134647, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -44, + "ack_signal_avg": -47, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040669, + "inactive": 34, + "ipaddr_v4": "10.2.229.245", + "rssi": -44, + "rx_bytes": 25614482, + "rx_duration": 0, + "rx_packets": 323143, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:30:c8:07", + "tid_stats": [ + { + "rx_msdu": 323135, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7012040, + "tx_duration": 14966522, + "tx_failed": 0, + "tx_packets": 133044, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -46, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040669, + "inactive": 4, + "ipaddr_v4": "10.2.168.195", + "rssi": -43, + "rx_bytes": 25689909, + "rx_duration": 0, + "rx_packets": 323521, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:98:9d:77", + "tid_stats": [ + { + "rx_msdu": 323513, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6945508, + "tx_duration": 14728103, + "tx_failed": 0, + "tx_packets": 131817, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -52, + "ack_signal_avg": -52, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040669, + "inactive": 9, + "ipaddr_v4": "10.2.250.242", + "rssi": -48, + "rx_bytes": 25822574, + "rx_duration": 0, + "rx_packets": 326440, + "rx_rate": { + "bitrate": 21700, + "chwidth": 20, + "ht": true, + "mcs": 2, + "sgi": true + }, + "station": "b8:27:eb:0b:f8:d3", + "tid_stats": [ + { + "rx_msdu": 326432, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7214454, + "tx_duration": 15315044, + "tx_failed": 0, + "tx_packets": 136590, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -45, + "ack_signal_avg": -44, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040668, + "inactive": 4, + "rssi": -45, + "rx_bytes": 25669758, + "rx_duration": 0, + "rx_packets": 323076, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:3a:46:97", + "tid_stats": [ + { + "rx_msdu": 323068, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 6887614, + "tx_duration": 14625338, + "tx_failed": 0, + "tx_packets": 130873, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -47, + "ack_signal_avg": -48, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040668, + "inactive": 29, + "ipaddr_v4": "10.2.224.126", + "rssi": -48, + "rx_bytes": 23826843, + "rx_duration": 0, + "rx_packets": 302918, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:c3:af:91", + "tid_stats": [ + { + "rx_msdu": 302910, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7204978, + "tx_duration": 15338918, + "tx_failed": 0, + "tx_packets": 136014, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -42, + "ack_signal_avg": -41, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040668, + "inactive": 308, + "ipaddr_v4": "10.2.4.30", + "rssi": -41, + "rx_bytes": 73849, + "rx_duration": 0, + "rx_packets": 628, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:80:a5:c7", + "tid_stats": [ + { + "rx_msdu": 620, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 292076, + "tx_duration": 1078224, + "tx_failed": 0, + "tx_packets": 9924, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -50, + "ack_signal_avg": -48, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040667, + "inactive": 14, + "ipaddr_v4": "10.2.214.121", + "rssi": -50, + "rx_bytes": 33504957, + "rx_duration": 0, + "rx_packets": 442339, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:db:de:e6", + "tid_stats": [ + { + "rx_msdu": 348629, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 46575, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 15679201, + "tx_duration": 18409597, + "tx_failed": 46629, + "tx_packets": 173782, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -39, + "ack_signal_avg": -43, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040667, + "inactive": 54, + "ipaddr_v4": "10.2.151.73", + "rssi": -39, + "rx_bytes": 23471771, + "rx_duration": 0, + "rx_packets": 298299, + "rx_rate": { + "bitrate": 43300, + "chwidth": 20, + "ht": true, + "mcs": 4, + "sgi": true + }, + "station": "b8:27:eb:61:8a:ec", + "tid_stats": [ + { + "rx_msdu": 298291, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7050380, + "tx_duration": 14943141, + "tx_failed": 1, + "tx_packets": 133163, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -53, + "ack_signal_avg": -52, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040667, + "inactive": 14, + "ipaddr_v4": "10.2.167.215", + "rssi": -52, + "rx_bytes": 26139712, + "rx_duration": 0, + "rx_packets": 328817, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:59:0e:bc", + "tid_stats": [ + { + "rx_msdu": 328809, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7904098, + "tx_duration": 15395238, + "tx_failed": 0, + "tx_packets": 136302, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -46, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040667, + "inactive": 29, + "rssi": -45, + "rx_bytes": 22888241, + "rx_duration": 0, + "rx_packets": 291590, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:e2:01:73", + "tid_stats": [ + { + "rx_msdu": 291582, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 5, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 7197232, + "tx_duration": 15183227, + "tx_failed": 0, + "tx_packets": 135684, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -48, + "ack_signal_avg": -50, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 3040667, + "inactive": 24, + "rssi": -48, + "rx_bytes": 28348684, + "rx_duration": 0, + "rx_packets": 370023, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "station": "b8:27:eb:38:ab:5b", + "tid_stats": [ + { + "rx_msdu": 332333, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 18842, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 11691851, + "tx_duration": 17305674, + "tx_failed": 18866, + "tx_packets": 158064, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -42, + "ack_signal_avg": -42, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 1645180, + "inactive": 14, + "ipaddr_v4": "10.2.102.231", + "rssi": -42, + "rx_bytes": 12220553, + "rx_duration": 0, + "rx_packets": 153699, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:7a:dc:80", + "tid_stats": [ + { + "rx_msdu": 153659, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 21, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 3474941, + "tx_duration": 7595631, + "tx_failed": 1, + "tx_packets": 66239, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -39, + "ack_signal_avg": -39, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 1477749, + "inactive": 24, + "rssi": -39, + "rx_bytes": 11665665, + "rx_duration": 0, + "rx_packets": 143803, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:35:0a:d6", + "tid_stats": [ + { + "rx_msdu": 143747, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 29, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 2595233, + "tx_duration": 5882877, + "tx_failed": 2, + "tx_packets": 50670, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -43, + "ack_signal_avg": -43, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 1441300, + "inactive": 14, + "ipaddr_v4": "10.2.208.229", + "rssi": -43, + "rx_bytes": 10681790, + "rx_duration": 0, + "rx_packets": 133936, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:b8:c6:c8", + "tid_stats": [ + { + "rx_msdu": 133886, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 26, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 2941955, + "tx_duration": 6529705, + "tx_failed": 1, + "tx_packets": 56437, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -45, + "ack_signal_avg": -44, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 761008, + "inactive": 14, + "rssi": -45, + "rx_bytes": 6168751, + "rx_duration": 0, + "rx_packets": 75869, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:12:bf:e7", + "tid_stats": [ + { + "rx_msdu": 75841, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 15, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1576221, + "tx_duration": 3429615, + "tx_failed": 1, + "tx_packets": 29989, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -46, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 752690, + "inactive": 14, + "ipaddr_v4": "10.2.41.230", + "rssi": -46, + "rx_bytes": 6041368, + "rx_duration": 0, + "rx_packets": 73951, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "b8:27:eb:9d:c6:85", + "tid_stats": [ + { + "rx_msdu": 73933, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 10, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1405978, + "tx_duration": 3106673, + "tx_failed": 0, + "tx_packets": 27242, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -45, + "ack_signal_avg": -45, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 752281, + "inactive": 14, + "ipaddr_v4": "10.2.115.105", + "rssi": -45, + "rx_bytes": 5268754, + "rx_duration": 0, + "rx_packets": 65659, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:07:57:01", + "tid_stats": [ + { + "rx_msdu": 65645, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 8, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1672646, + "tx_duration": 3579509, + "tx_failed": 4, + "tx_packets": 31458, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -46, + "ack_signal_avg": -46, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 752281, + "inactive": 14, + "rssi": -47, + "rx_bytes": 6087335, + "rx_duration": 0, + "rx_packets": 74974, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:c8:85:01", + "tid_stats": [ + { + "rx_msdu": 74958, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 9, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1627193, + "tx_duration": 3518531, + "tx_failed": 1, + "tx_packets": 30647, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -40, + "ack_signal_avg": -40, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 732845, + "inactive": 54, + "rssi": -41, + "rx_bytes": 5895055, + "rx_duration": 0, + "rx_packets": 72700, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:9a:e8:9c", + "tid_stats": [ + { + "rx_msdu": 72694, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 4, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1729253, + "tx_duration": 3481277, + "tx_failed": 1, + "tx_packets": 30224, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -41, + "ack_signal_avg": -41, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 692421, + "inactive": 14, + "rssi": -42, + "rx_bytes": 5650922, + "rx_duration": 0, + "rx_packets": 69536, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "b8:27:eb:0c:45:1c", + "tid_stats": [ + { + "rx_msdu": 69524, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 7, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 1407037, + "tx_duration": 3131109, + "tx_failed": 0, + "tx_packets": 27056, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -62, + "ack_signal_avg": -61, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 563544, + "inactive": 26, + "ipaddr_v4": "10.2.227.180", + "rssi": -63, + "rx_bytes": 6805210, + "rx_duration": 0, + "rx_packets": 33483, + "rx_rate": { + "bitrate": 52000, + "chwidth": 20, + "ht": true, + "mcs": 5 + }, + "station": "18:b4:30:b7:14:bc", + "tid_stats": [ + { + "rx_msdu": 33481, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 2, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 3328721, + "tx_duration": 3984975, + "tx_failed": 46, + "tx_packets": 32103, + "tx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "tx_retries": 0 + }, + { + "ack_signal": -62, + "ack_signal_avg": -62, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 548444, + "inactive": 6, + "rssi": -67, + "rx_bytes": 1266194, + "rx_duration": 0, + "rx_packets": 19770, + "rx_rate": { + "bitrate": 57800, + "chwidth": 20, + "ht": true, + "mcs": 5, + "sgi": true + }, + "station": "18:b9:05:c0:bf:d7", + "tid_stats": [ + { + "rx_msdu": 19768, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 2, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 709068, + "tx_duration": 2001205, + "tx_failed": 0, + "tx_packets": 10663, + "tx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "tx_retries": 0 + }, + { + "ack_signal": -51, + "ack_signal_avg": -51, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 490649, + "inactive": 14, + "rssi": -51, + "rx_bytes": 2080166, + "rx_duration": 0, + "rx_packets": 24920, + "rx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "station": "b8:27:eb:49:bb:2c", + "tid_stats": [ + { + "rx_msdu": 24896, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 13, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 293860, + "tx_duration": 734925, + "tx_failed": 0, + "tx_packets": 6575, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -49, + "ack_signal_avg": -49, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 250427, + "inactive": 14, + "ipaddr_v4": "10.2.64.122", + "rssi": -50, + "rx_bytes": 1516788, + "rx_duration": 0, + "rx_packets": 17864, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 7 + }, + "station": "b8:27:eb:46:11:ee", + "tid_stats": [ + { + "rx_msdu": 17854, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 6, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 255920, + "tx_duration": 604398, + "tx_failed": 0, + "tx_packets": 5246, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -39, + "ack_signal_avg": -38, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 242509, + "inactive": 14, + "rssi": -39, + "rx_bytes": 2167316, + "rx_duration": 0, + "rx_packets": 25205, + "rx_rate": { + "bitrate": 58500, + "chwidth": 20, + "ht": true, + "mcs": 6 + }, + "station": "b8:27:eb:35:d0:6c", + "tid_stats": [ + { + "rx_msdu": 25183, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 12, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 581167, + "tx_duration": 1144785, + "tx_failed": 1, + "tx_packets": 10666, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -40, + "ack_signal_avg": -40, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 242509, + "inactive": 14, + "ipaddr_v4": "10.2.128.30", + "rssi": -41, + "rx_bytes": 2188276, + "rx_duration": 0, + "rx_packets": 25262, + "rx_rate": { + "bitrate": 65000, + "chwidth": 20, + "ht": true, + "mcs": 6, + "sgi": true + }, + "station": "b8:27:eb:29:e7:6b", + "tid_stats": [ + { + "rx_msdu": 25244, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 10, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 486281, + "tx_duration": 1019259, + "tx_failed": 1, + "tx_packets": 9221, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -51, + "ack_signal_avg": -51, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 30792, + "inactive": 183, + "ipaddr_v4": "10.2.145.184", + "rssi": -51, + "rx_bytes": 118761, + "rx_duration": 0, + "rx_packets": 1152, + "rx_rate": { + "bitrate": 48000, + "chwidth": 20 + }, + "station": "b8:27:eb:fc:49:55", + "tid_stats": [ + { + "rx_msdu": 1148, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 3, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 10436, + "tx_duration": 28917, + "tx_failed": 0, + "tx_packets": 250, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, + { + "ack_signal": -75, + "ack_signal_avg": -75, + "bssid": "90:3c:b3:bb:1c:9a", + "connected": 24892, + "inactive": 0, + "ipaddr_v4": "10.2.41.194", + "rssi": -76, + "rx_bytes": 722743918, + "rx_duration": 0, + "rx_packets": 681038, + "rx_rate": { + "bitrate": 13000, + "chwidth": 20, + "ht": true, + "mcs": 1 + }, + "station": "18:b4:30:da:58:89", + "tid_stats": [ + { + "rx_msdu": 680817, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 3, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, + { + "rx_msdu": 0, + "tx_msdu": 110, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + } + ], + "tx_bytes": 29187393, + "tx_duration": 129713312, + "tx_failed": 88, + "tx_packets": 439156, + "tx_rate": { + "bitrate": 21700, + "chwidth": 20, + "ht": true, + "mcs": 2, + "sgi": true + }, + "tx_retries": 0 + } + ], + "bssid": "90:3c:b3:bb:1c:9a", + "iface": "wlan1", + "location": "/interfaces/0/ssids/0", + "mode": "ap", + "phy": "platform/soc/c000000.wifi+1", + "radio": { + "$ref": "#/radios/1" + }, + "ssid": "petunia" + } + ], + "uptime": 3041376 + } + ], + "link-state": { + "downstream": { + "eth1": { + "carrier": 0 + }, + "eth2": { + "carrier": 0 + } + }, + "upstream": { + "eth0": { + "carrier": 1, + "duplex": "full", + "speed": 1000 + } + } + }, + "lldp-peers": { + "downstream": {}, + "upstream": { + "eth0": [ + { + "capability": [ + "Bridge" + ], + "description": "US-16-150W, 6.3.11.14082, Linux 3.6.5", + "mac": "fc:ec:da:7c:d8:8a", + "name": "1GLabSwitch", + "port": "eth0" + } + ] + } + }, + "radios": [ + { + "active_ms": 75672936, + "busy_ms": 633773, + "channel": 36, + "channel_width": "40", + "noise": -106, + "phy": "platform/soc/c000000.wifi", + "receive_ms": 13187, + "transmit_ms": 396006, + "tx_power": 23 + }, + { + "active_ms": 3039707124, + "busy_ms": 563857457, + "channel": 11, + "channel_width": "20", + "noise": -99, + "phy": "platform/soc/c000000.wifi+1", + "receive_ms": 83084874, + "transmit_ms": 66025098, + "tx_power": 23 + } + ], + "unit": { + "load": [ + 0.372076, + 0.274418, + 0.272465 + ], + "localtime": 1663183273, + "memory": { + "buffered": 9457664, + "cached": 26562560, + "free": 773447680, + "total": 973135872 + }, + "uptime": 3041403 + }, + "version": 1 +} \ No newline at end of file