// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@available(added=HEAD)
library fuchsia.wlan.minstrel;

using fuchsia.wlan.ieee80211 as ieee80211;

type Peers = struct {
    addrs vector<ieee80211.MacAddr>;
};

// LINT.IfChange
type StatsEntry = struct {
    tx_vector_idx uint16;
    tx_vec_desc string;
    success_cur uint64;
    attempts_cur uint64;
    probability float32;
    cur_tp float32;
    success_total uint64;
    attempts_total uint64;
    probes_total uint64;
    probe_cycles_skipped uint8;
};

type Peer = struct {
    addr ieee80211.MacAddr;
    max_tp uint16;
    max_probability uint16;
    basic_highest uint16;
    basic_max_probability uint16;
    probes uint64;
    entries vector<StatsEntry>;
};
// LINT.ThenChange(//garnet/drivers/wlan/wlan/minstrel.h)
