qcacld-3.0: Add interface files for dynamic antenna selection

Add interface files for dynamic antenna selection feature

CRs-Fixed: 931250
Change-Id: Ieafe368a25c3a69e32cd5de6822ef84130528096
This commit is contained in:
Archana Ramachandran 2016-02-10 15:48:06 -08:00 • committed by Vishwajith Upendra
commit d41c3ed58c
8 changed files with 100 additions and 1 deletions

View file

@ -146,6 +146,9 @@
/* Scan Req Timeout */
#define WLAN_WAIT_TIME_SCAN_REQ 100
#define WLAN_WAIT_TIME_ANTENNA_MODE_REQ 3000
#define WLAN_WAIT_TIME_SET_DUAL_MAC_CFG 1500
#define MAX_NUMBER_OF_ADAPTERS 4
#define MAX_CFG_STRING_LEN 255
@ -1112,6 +1115,36 @@ typedef struct {
} fw_log_info;
/**
* enum antenna_mode - number of TX/RX chains
* @HDD_ANTENNA_MODE_INVALID: Invalid mode place holder
* @HDD_ANTENNA_MODE_1X1: Number of TX/RX chains equals 1
* @HDD_ANTENNA_MODE_2X2: Number of TX/RX chains equals 2
* @HDD_ANTENNA_MODE_MAX: Place holder for max mode
*/
enum antenna_mode {
HDD_ANTENNA_MODE_INVALID,
HDD_ANTENNA_MODE_1X1,
HDD_ANTENNA_MODE_2X2,
HDD_ANTENNA_MODE_MAX
};
/**
* enum smps_mode - SM power save mode
* @HDD_SMPS_MODE_STATIC: Static power save
* @HDD_SMPS_MODE_DYNAMIC: Dynamic power save
* @HDD_SMPS_MODE_RESERVED: Reserved
* @HDD_SMPS_MODE_DISABLED: Disable power save
* @HDD_SMPS_MODE_MAX: Place holder for max mode
*/
enum smps_mode {
HDD_SMPS_MODE_STATIC,
HDD_SMPS_MODE_DYNAMIC,
HDD_SMPS_MODE_RESERVED,
HDD_SMPS_MODE_DISABLED,
HDD_SMPS_MODE_MAX
};
#ifdef WLAN_FEATURE_OFFLOAD_PACKETS
/**
* struct hdd_offloaded_packets - request id to pattern id mapping
@ -1372,6 +1405,10 @@ struct hdd_context_s {
* at runtime and intersecting it with target capab before updating.
*/
uint32_t fine_time_meas_cap_target;
/* completion variable to indicate set antenna mode complete*/
struct completion set_antenna_mode_cmpl;
/* Current number of TX X RX chains being used */
enum antenna_mode current_antenna_mode;
};
/*---------------------------------------------------------------------------
@ -1566,6 +1603,8 @@ static inline void wlan_hdd_stop_sap(hdd_adapter_t *ap_adapter) {}
static inline void wlan_hdd_start_sap(hdd_adapter_t *ap_adapter) {}
#endif
void wlan_hdd_soc_set_antenna_mode_cb(enum set_antenna_mode_status status);
#ifdef QCA_CONFIG_SMP
int wlan_hdd_get_cpu(void);
#else

View file

@ -452,6 +452,31 @@ struct sir_set_dual_mac_cfg {
struct sir_dual_mac_config set_dual_mac;
};
/**
* struct sir_antenna_mode_param - antenna mode param
* @num_tx_chains: Number of TX chains
* @num_rx_chains: Number of RX chains
* @reason: Reason for setting antenna mode
* @set_antenna_mode_resp: callback to set antenna mode command
*/
struct sir_antenna_mode_param {
uint32_t num_tx_chains;
uint32_t num_rx_chains;
void *set_antenna_mode_resp;
};
/**
* struct sir_set_antenna_mode - Set antenna mode request
* @message_type: Message type
* @length: Length of the message
* @set_antenna_mode: Params containing antenna mode params
*/
struct sir_set_antenna_mode {
uint16_t message_type;
uint16_t length;
struct sir_antenna_mode_param set_antenna_mode;
};
/* / BSS type enum used in while scanning/joining etc */
typedef enum eSirBssType {
eSIR_INFRASTRUCTURE_MODE,
@ -3258,6 +3283,29 @@ struct sir_dual_mac_config_resp {
uint32_t status;
};
/**
* enum set_antenna_mode_status - Status of set antenna mode
* command
* @SET_ANTENNA_MODE_STATUS_OK: command successful
* @SET_ANTENNA_MODE_STATUS_EINVAL: invalid antenna mode
* @SET_ANTENNA_MODE_STATUS_ECANCELED: mode change cancelled
* @SET_ANTENNA_MODE_STATUS_ENOTSUP: mode not supported
*/
enum set_antenna_mode_status {
SET_ANTENNA_MODE_STATUS_OK,
SET_ANTENNA_MODE_STATUS_EINVAL,
SET_ANTENNA_MODE_STATUS_ECANCELED,
SET_ANTENNA_MODE_STATUS_ENOTSUP,
};
/**
* struct sir_antenna_mode_resp - set antenna mode response
* @status: Status of setting the antenna mode
*/
struct sir_antenna_mode_resp {
enum set_antenna_mode_status status;
};
#ifdef WLAN_WAKEUP_EVENTS
/*---------------------------------------------------------------------------
tSirWakeReasonInd
@ -5157,6 +5205,7 @@ typedef void (*hw_mode_transition_cb)(uint32_t old_hw_mode_index,
struct sir_vdev_mac_map *vdev_mac_map);
typedef void (*dual_mac_cb)(uint32_t status, uint32_t scan_config,
uint32_t fw_mode_config);
typedef void (*antenna_mode_cb)(uint32_t status);
/**
* struct sir_nss_update_request

View file

@ -246,6 +246,8 @@ enum eWniMsgTypes {
eWNI_SME_EXT_CHANGE_CHANNEL_IND,
eWNI_SME_REGISTER_MGMT_FRAME_CB,
eWNI_SME_HT40_OBSS_SCAN_IND, /* START and UPDATE OBSS SCAN Indication*/
eWNI_SME_SET_ANTENNA_MODE_REQ,
eWNI_SME_SET_ANTENNA_MODE_RESP,
eWNI_SME_MSG_TYPES_END
};

View file

@ -358,9 +358,11 @@ typedef struct sSirMbMsgP2p {
#ifdef FEATURE_WLAN_SCAN_PNO
#define SIR_HAL_SET_PNO_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 119)
/* (SIR_HAL_ITC_MSG_TYPES_BEGIN + 120) is unused */
#endif /* FEATURE_WLAN_SCAN_PNO */
#define SIR_HAL_SOC_ANTENNA_MODE_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 120)
#define SIR_HAL_SOC_ANTENNA_MODE_RESP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 121)
/* (SIR_HAL_ITC_MSG_TYPES_BEGIN + 122) is unused */
#ifdef WLAN_FEATURE_PACKET_FILTERING

View file

@ -1003,6 +1003,8 @@ QDF_STATUS sme_set_peer_authorized(uint8_t *peer_addr,
uint32_t vdev_id);
QDF_STATUS sme_soc_set_dual_mac_config(tHalHandle hal,
struct sir_dual_mac_config msg);
QDF_STATUS sme_soc_set_antenna_mode(tHalHandle hal,
struct sir_antenna_mode_param *msg);
void sme_set_scan_disable(tHalHandle h_hal, int value);
void sme_setdef_dot11mode(tHalHandle hal);

View file

@ -191,6 +191,7 @@ typedef struct tagSmeCmd {
struct sir_hw_mode set_hw_mode_cmd;
struct s_nss_update_cmd nss_update_cmd;
struct sir_dual_mac_config set_dual_mac_cmd;
struct sir_antenna_mode_param set_antenna_mode_cmd;
} u;
} tSmeCmd;
@ -282,6 +283,7 @@ QDF_STATUS csr_create_roam_scan_channel_list(tpAniSirGlobal pMac,
ePhyChanBondState csr_convert_cb_ini_value_to_phy_cb_state(uint32_t cbIniValue);
void active_list_cmd_timeout_handle(void *userData);
void csr_process_set_dual_mac_config(tpAniSirGlobal mac, tSmeCmd *command);
void csr_process_set_antenna_mode(tpAniSirGlobal mac, tSmeCmd *command);
void csr_process_set_hw_mode(tpAniSirGlobal mac, tSmeCmd *command);
void csr_process_nss_update_req(tpAniSirGlobal mac, tSmeCmd *command);

View file

@ -92,6 +92,7 @@ typedef enum eSmeCommandType {
e_sme_command_set_hw_mode,
e_sme_command_nss_update,
e_sme_command_set_dual_mac_config,
e_sme_command_set_antenna_mode,
} eSmeCommandType;
typedef enum eSmeState {

View file

@ -1972,6 +1972,8 @@ QDF_STATUS wma_get_scan_id(uint32_t *scan_id);
QDF_STATUS wma_send_soc_set_dual_mac_config(tp_wma_handle wma_handle,
struct sir_dual_mac_config *msg);
QDF_STATUS wma_send_pdev_set_antenna_mode(tp_wma_handle wma_handle,
struct sir_antenna_mode_param *msg);
QDF_STATUS wma_crash_inject(tp_wma_handle wma_handle, uint32_t type,
uint32_t delay_time_ms);