if_bwn_phy_n_ppr.h revision 300016
1300016Sadrian/* 2300016Sadrian 3300016Sadrian Broadcom B43 wireless driver 4300016Sadrian IEEE 802.11n PHY data tables 5300016Sadrian 6300016Sadrian Copyright (c) 2008 Michael Buesch <m@bues.ch> 7300016Sadrian Copyright (c) 2010 Rafa�� Mi��ecki <zajec5@gmail.com> 8300016Sadrian 9300016Sadrian This program is free software; you can redistribute it and/or modify 10300016Sadrian it under the terms of the GNU General Public License as published by 11300016Sadrian the Free Software Foundation; either version 2 of the License, or 12300016Sadrian (at your option) any later version. 13300016Sadrian 14300016Sadrian This program is distributed in the hope that it will be useful, 15300016Sadrian but WITHOUT ANY WARRANTY; without even the implied warranty of 16300016Sadrian MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17300016Sadrian GNU General Public License for more details. 18300016Sadrian 19300016Sadrian You should have received a copy of the GNU General Public License 20300016Sadrian along with this program; see the file COPYING. If not, write to 21300016Sadrian the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, 22300016Sadrian Boston, MA 02110-1301, USA. 23300016Sadrian 24300016Sadrian*/ 25300016Sadrian 26300016Sadrian/* 27300016Sadrian * $FreeBSD: head/sys/gnu/dev/bwn/phy_n/if_bwn_phy_n_ppr.h 300016 2016-05-17 07:09:24Z adrian $ 28300016Sadrian */ 29300016Sadrian 30300016Sadrian#ifndef __IF_BWN_PHY_PPR_H__ 31300016Sadrian#define __IF_BWN_PHY_PPR_H__ 32300016Sadrian 33300016Sadrian#define BWN_PPR_CCK_RATES_NUM 4 34300016Sadrian#define BWN_PPR_OFDM_RATES_NUM 8 35300016Sadrian#define BWN_PPR_MCS_RATES_NUM 8 36300016Sadrian 37300016Sadrian#define BWN_PPR_RATES_NUM (BWN_PPR_CCK_RATES_NUM + \ 38300016Sadrian BWN_PPR_OFDM_RATES_NUM * 2 + \ 39300016Sadrian BWN_PPR_MCS_RATES_NUM * 4) 40300016Sadrian 41300016Sadrianstruct bwn_ppr_rates { 42300016Sadrian uint8_t cck[BWN_PPR_CCK_RATES_NUM]; 43300016Sadrian uint8_t ofdm[BWN_PPR_OFDM_RATES_NUM]; 44300016Sadrian uint8_t ofdm_20_cdd[BWN_PPR_OFDM_RATES_NUM]; 45300016Sadrian uint8_t mcs_20[BWN_PPR_MCS_RATES_NUM]; /* single stream rates */ 46300016Sadrian uint8_t mcs_20_cdd[BWN_PPR_MCS_RATES_NUM]; 47300016Sadrian uint8_t mcs_20_stbc[BWN_PPR_MCS_RATES_NUM]; 48300016Sadrian uint8_t mcs_20_sdm[BWN_PPR_MCS_RATES_NUM]; 49300016Sadrian}; 50300016Sadrian 51300016Sadrianstruct bwn_ppr { 52300016Sadrian /* All powers are in 1/4 dBm (Q5.2) */ 53300016Sadrian union { 54300016Sadrian uint8_t __all_rates[BWN_PPR_RATES_NUM]; 55300016Sadrian struct bwn_ppr_rates rates; 56300016Sadrian }; 57300016Sadrian}; 58300016Sadrian 59300016Sadrianextern void bwn_ppr_clear(struct bwn_mac *mac, struct bwn_ppr *ppr); 60300016Sadrianextern void bwn_ppr_add(struct bwn_mac *mac, struct bwn_ppr *ppr, int diff); 61300016Sadrianextern void bwn_ppr_apply_max(struct bwn_mac *mac, struct bwn_ppr *ppr, 62300016Sadrian uint8_t max); 63300016Sadrianextern void bwn_ppr_apply_min(struct bwn_mac *mac, struct bwn_ppr *ppr, 64300016Sadrian uint8_t min); 65300016Sadrianextern uint8_t bwn_ppr_get_max(struct bwn_mac *mac, struct bwn_ppr *ppr); 66300016Sadrianextern bool bwn_ppr_load_max_from_sprom(struct bwn_mac *mac, 67300016Sadrian struct bwn_ppr *ppr, bwn_phy_band_t band); 68300016Sadrian 69300016Sadrian#endif 70