#ifndef _BRCM_RATE_H_
#define _BRCM_RATE_H_
#include "types.h"
#include "d11.h"
#include "phy_hal.h"
extern const u8 rate_info[];
extern const struct brcms_c_rateset cck_ofdm_mimo_rates;
extern const struct brcms_c_rateset ofdm_mimo_rates;
extern const struct brcms_c_rateset cck_ofdm_rates;
extern const struct brcms_c_rateset ofdm_rates;
extern const struct brcms_c_rateset cck_rates;
extern const struct brcms_c_rateset gphy_legacy_rates;
extern const struct brcms_c_rateset rate_limit_1_2;
struct brcms_mcs_info { … };
#define BRCMS_MAXMCS …
#define MCS_TABLE_SIZE …
extern const struct brcms_mcs_info mcs_table[];
#define MCS_TXS_MASK …
#define MCS_TXS_SHIFT …
static inline u8 mcs_2_txstreams(u8 mcs)
{ … }
static inline uint mcs_2_rate(u8 mcs, bool is40, bool sgi)
{ … }
#define BRCMS_RATE_MASK_FULL …
#define RSPEC_RATE_MASK …
#define RSPEC_MIMORATE …
#define RSPEC_BW_MASK …
#define RSPEC_BW_SHIFT …
#define RSPEC_STF_MASK …
#define RSPEC_STF_SHIFT …
#define RSPEC_CT_MASK …
#define RSPEC_CT_SHIFT …
#define RSPEC_STC_MASK …
#define RSPEC_STC_SHIFT …
#define RSPEC_LDPC_CODING …
#define RSPEC_SHORT_GI …
#define RSPEC_OVERRIDE …
#define RSPEC_OVERRIDE_MCS_ONLY …
static inline bool rspec_active(u32 rspec)
{ … }
static inline u8 rspec_phytxbyte2(u32 rspec)
{ … }
static inline u32 rspec_get_bw(u32 rspec)
{ … }
static inline bool rspec_issgi(u32 rspec)
{ … }
static inline bool rspec_is40mhz(u32 rspec)
{ … }
static inline uint rspec2rate(u32 rspec)
{ … }
static inline u8 rspec_mimoplcp3(u32 rspec)
{ … }
static inline bool plcp3_issgi(u8 plcp)
{ … }
static inline uint rspec_stc(u32 rspec)
{ … }
static inline uint rspec_stf(u32 rspec)
{ … }
static inline bool is_mcs_rate(u32 ratespec)
{ … }
static inline bool is_ofdm_rate(u32 ratespec)
{ … }
static inline bool is_cck_rate(u32 ratespec)
{ … }
static inline bool is_single_stream(u8 mcs)
{ … }
static inline u8 cck_rspec(u8 cck)
{ … }
static inline u8 ofdm_phy2mac_rate(u8 rlpt)
{ … }
static inline u8 cck_phy2mac_rate(u8 signal)
{ … }
#define BRCMS_RATES_CCK_OFDM …
#define BRCMS_RATES_CCK …
#define BRCMS_RATES_OFDM …
bool brcms_c_rate_hwrs_filter_sort_validate(struct brcms_c_rateset *rs,
const struct brcms_c_rateset *hw_rs,
bool check_brate, u8 txstreams);
void brcms_c_rateset_copy(const struct brcms_c_rateset *src,
struct brcms_c_rateset *dst);
u32 brcms_c_compute_rspec(struct d11rxhdr *rxh, u8 *plcp);
void brcms_c_rateset_filter(struct brcms_c_rateset *src,
struct brcms_c_rateset *dst, bool basic_only,
u8 rates, uint xmask, bool mcsallow);
void brcms_c_rateset_default(struct brcms_c_rateset *rs_tgt,
const struct brcms_c_rateset *rs_hw, uint phy_type,
int bandtype, bool cck_only, uint rate_mask,
bool mcsallow, u8 bw, u8 txstreams);
s16 brcms_c_rate_legacy_phyctl(uint rate);
void brcms_c_rateset_mcs_upd(struct brcms_c_rateset *rs, u8 txstreams);
void brcms_c_rateset_mcs_clear(struct brcms_c_rateset *rateset);
void brcms_c_rateset_mcs_build(struct brcms_c_rateset *rateset, u8 txstreams);
void brcms_c_rateset_bw_mcs_filter(struct brcms_c_rateset *rateset, u8 bw);
#endif