iwlwifi: implement iwl5000_calc_rssi
This patch implements rssi calculation for 5000 HW. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
da99c4b6c2
commit
caab8f1a5d
@@ -1075,10 +1075,12 @@ struct iwl4965_rx_frame {
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Fixed (non-configurable) rx data from phy */
|
||||
#define RX_PHY_FLAGS_ANTENNAE_OFFSET (4)
|
||||
#define RX_PHY_FLAGS_ANTENNAE_MASK (0x70)
|
||||
#define IWL_AGC_DB_MASK (0x3f80) /* MASK(7,13) */
|
||||
#define IWL_AGC_DB_POS (7)
|
||||
|
||||
#define IWL49_RX_RES_PHY_CNT 14
|
||||
#define IWL49_RX_PHY_FLAGS_ANTENNAE_OFFSET (4)
|
||||
#define IWL49_RX_PHY_FLAGS_ANTENNAE_MASK (0x70)
|
||||
#define IWL49_AGC_DB_MASK (0x3f80) /* MASK(7,13) */
|
||||
#define IWL49_AGC_DB_POS (7)
|
||||
struct iwl4965_rx_non_cfg_phy {
|
||||
__le16 ant_selection; /* ant A bit 4, ant B bit 5, ant C bit 6 */
|
||||
__le16 agc_info; /* agc code 0:6, agc dB 7:13, reserved 14:15 */
|
||||
@@ -1086,12 +1088,30 @@ struct iwl4965_rx_non_cfg_phy {
|
||||
u8 pad[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
#define IWL50_RX_RES_PHY_CNT 8
|
||||
#define IWL50_RX_RES_AGC_IDX 1
|
||||
#define IWL50_RX_RES_RSSI_AB_IDX 2
|
||||
#define IWL50_RX_RES_RSSI_C_IDX 3
|
||||
#define IWL50_OFDM_AGC_MSK 0xfe00
|
||||
#define IWL50_OFDM_AGC_BIT_POS 9
|
||||
#define IWL50_OFDM_RSSI_A_MSK 0x00ff
|
||||
#define IWL50_OFDM_RSSI_A_BIT_POS 0
|
||||
#define IWL50_OFDM_RSSI_B_MSK 0xff0000
|
||||
#define IWL50_OFDM_RSSI_B_BIT_POS 16
|
||||
#define IWL50_OFDM_RSSI_C_MSK 0x00ff
|
||||
#define IWL50_OFDM_RSSI_C_BIT_POS 0
|
||||
|
||||
struct iwl5000_non_cfg_phy {
|
||||
__le32 non_cfg_phy[IWL50_RX_RES_PHY_CNT]; /* upto 8 phy entries */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
/*
|
||||
* REPLY_RX = 0xc3 (response only, not a command)
|
||||
* Used only for legacy (non 11n) frames.
|
||||
*/
|
||||
#define RX_RES_PHY_CNT 14
|
||||
struct iwl4965_rx_phy_res {
|
||||
struct iwl_rx_phy_res {
|
||||
u8 non_cfg_phy_cnt; /* non configurable DSP phy data byte count */
|
||||
u8 cfg_phy_cnt; /* configurable DSP phy data byte count */
|
||||
u8 stat_id; /* configurable DSP phy data set ID */
|
||||
@@ -1100,8 +1120,7 @@ struct iwl4965_rx_phy_res {
|
||||
__le32 beacon_time_stamp; /* beacon at on-air rise */
|
||||
__le16 phy_flags; /* general phy flags: band, modulation, ... */
|
||||
__le16 channel; /* channel number */
|
||||
__le16 non_cfg_phy[RX_RES_PHY_CNT]; /* upto 14 phy entries */
|
||||
__le32 reserved2;
|
||||
u8 non_cfg_phy_buf[32]; /* for various implementations of non_cfg_phy */
|
||||
__le32 rate_n_flags; /* RATE_MCS_* */
|
||||
__le16 byte_count; /* frame's byte-count */
|
||||
__le16 reserved3;
|
||||
|
Reference in New Issue
Block a user