1 #ifndef LINUX_B43_PPR_H_ 2 #define LINUX_B43_PPR_H_ 3 4 #include <linux/types.h> 5 6 #define B43_PPR_CCK_RATES_NUM 4 7 #define B43_PPR_OFDM_RATES_NUM 8 8 #define B43_PPR_MCS_RATES_NUM 8 9 10 #define B43_PPR_RATES_NUM (B43_PPR_CCK_RATES_NUM + \ 11 B43_PPR_OFDM_RATES_NUM * 2 + \ 12 B43_PPR_MCS_RATES_NUM * 4) 13 14 struct b43_ppr_rates { 15 u8 cck[B43_PPR_CCK_RATES_NUM]; 16 u8 ofdm[B43_PPR_OFDM_RATES_NUM]; 17 u8 ofdm_20_cdd[B43_PPR_OFDM_RATES_NUM]; 18 u8 mcs_20[B43_PPR_MCS_RATES_NUM]; /* SISO */ 19 u8 mcs_20_cdd[B43_PPR_MCS_RATES_NUM]; 20 u8 mcs_20_stbc[B43_PPR_MCS_RATES_NUM]; 21 u8 mcs_20_sdm[B43_PPR_MCS_RATES_NUM]; 22 }; 23 24 struct b43_ppr { 25 /* All powers are in qdbm (Q5.2) */ 26 union { 27 u8 __all_rates[B43_PPR_RATES_NUM]; 28 struct b43_ppr_rates rates; 29 }; 30 }; 31 32 struct b43_wldev; 33 enum b43_band; 34 35 void b43_ppr_clear(struct b43_wldev *dev, struct b43_ppr *ppr); 36 37 void b43_ppr_add(struct b43_wldev *dev, struct b43_ppr *ppr, int diff); 38 void b43_ppr_apply_max(struct b43_wldev *dev, struct b43_ppr *ppr, u8 max); 39 void b43_ppr_apply_min(struct b43_wldev *dev, struct b43_ppr *ppr, u8 min); 40 u8 b43_ppr_get_max(struct b43_wldev *dev, struct b43_ppr *ppr); 41 42 bool b43_ppr_load_max_from_sprom(struct b43_wldev *dev, struct b43_ppr *ppr, 43 enum b43_band band); 44 45 #endif /* LINUX_B43_PPR_H_ */ 46