// 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.

library fuchsia.wlan.minstrel;

struct Peers {
    vector<array<uint8>:6> peers;
};

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

struct Peer {
    array<uint8>:6 mac_addr;
    uint16 max_tp;
    uint16 max_probability;
    uint16 basic_highest;
    uint16 basic_max_probability;
    uint64 probes;
    vector<StatsEntry> entries;
};
// LINT.ThenChange(//garnet/drivers/wlan/wlan/minstrel.h)
