diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-12-29 22:01:56 -0700 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2016-12-29 22:01:56 -0700 |
| commit | bb00fc1a5291ee2b6b3eb3ad63d20b751dd0f6d6 (patch) | |
| tree | b919750ed312c0f08bee4f358a605533da4ae681 | |
| parent | 6b47bfa2229c234fc3ec63985109a2f4f2e231e3 (diff) | |
| parent | 58e7b523aa48d0a4a19abdc2bee59904aeffb5e8 (diff) | |
Promotion of wlan-cmn.driver.lnx.1.0-00113.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
982728 I0eec0636794da3b4729b8be825afe6a1275915a4 qcacmn: Change HDD IPA to comply with the refactored SKB
999114 I40b49d42df94085784c8f1d8321de0ee61473ae0 qcacmn: Drop Action frame in FW config by host
688141 Id9d87dcc6cdc615b899c91da743776d5b883f472 Release 5.1.0.26H
688141 I786b51f430aa8af04ccc5b283468c7292e2225b7 Release 5.1.0.26I
688141 I8707cbf9d60e7152989555087e917424d08de503 Release 5.1.0.26G
1101602 I1e06e2f9194e7b5f527d3e59d12073b1af1fb8ed qcacmn: Move struct ol_tx_sched_wrr_ac_specs_t to wlan-c
1095710 I05d9d50fad735fa0a57c4de23c81461f6e12b648 qcacmn: Add interface to WDI-stats and quota limit
Change-Id: I8b23f98da7269c3dae0945f8f98a1865305d49cf
CRs-Fixed: 688141, 1101602, 1095710, 999114, 982728
| -rw-r--r-- | VERSION.txt | 2 | ||||
| -rw-r--r-- | dp/inc/cdp_txrx_cfg.h | 26 | ||||
| -rw-r--r-- | dp/inc/cdp_txrx_ipa.h | 17 | ||||
| -rw-r--r-- | qdf/inc/qdf_nbuf.h | 14 | ||||
| -rw-r--r-- | qdf/linux/src/i_qdf_nbuf.h | 2 | ||||
| -rw-r--r-- | qdf/linux/src/qdf_nbuf.c | 20 | ||||
| -rw-r--r-- | wmi/inc/wmi_unified_api.h | 4 | ||||
| -rw-r--r-- | wmi/inc/wmi_unified_param.h | 16 | ||||
| -rw-r--r-- | wmi/inc/wmi_unified_priv.h | 3 | ||||
| -rw-r--r-- | wmi/inc/wmi_unified_tlv.h | 3 | ||||
| -rw-r--r-- | wmi/src/wmi_unified.c | 1 | ||||
| -rw-r--r-- | wmi/src/wmi_unified_api.c | 21 | ||||
| -rw-r--r-- | wmi/src/wmi_unified_tlv.c | 45 |
13 files changed, 169 insertions, 5 deletions
diff --git a/VERSION.txt b/VERSION.txt index 18ad31b435b9..7f155ebc84bc 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.26F +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.26I Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22D diff --git a/dp/inc/cdp_txrx_cfg.h b/dp/inc/cdp_txrx_cfg.h index 03fb41de9b5e..cd1c188cbbcb 100644 --- a/dp/inc/cdp_txrx_cfg.h +++ b/dp/inc/cdp_txrx_cfg.h @@ -31,7 +31,31 @@ #ifndef _CDP_TXRX_CFG_H_ #define _CDP_TXRX_CFG_H_ -#include "cds_config.h" +#define TX_WMM_AC_NUM 4 + +/** + * struct ol_tx_sched_wrr_ac_specs_t - the wrr ac specs params structure + * @wrr_skip_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs. + * wrr_skip_weight + * @credit_threshold: map to ol_tx_sched_wrr_adv_category_info_t.specs. + * credit_threshold + * @send_limit: map to ol_tx_sched_wrr_adv_category_info_t.specs. + * send_limit + * @credit_reserve: map to ol_tx_sched_wrr_adv_category_info_t.specs. + * credit_reserve + * @discard_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs. + * discard_weight + * + * This structure is for wrr ac specs params set from user, it will update + * its content corresponding to the ol_tx_sched_wrr_adv_category_info_t.specs. + */ +struct ol_tx_sched_wrr_ac_specs_t { + int wrr_skip_weight; + uint32_t credit_threshold; + uint16_t send_limit; + int credit_reserve; + int discard_weight; +}; /** * struct txrx_pdev_cfg_param_t - configuration information diff --git a/dp/inc/cdp_txrx_ipa.h b/dp/inc/cdp_txrx_ipa.h index 67f2478f40f8..3f166e38f670 100644 --- a/dp/inc/cdp_txrx_ipa.h +++ b/dp/inc/cdp_txrx_ipa.h @@ -79,6 +79,11 @@ void ol_txrx_ipa_uc_register_op_cb(ol_txrx_pdev_handle pdev, void ol_txrx_ipa_uc_get_stat(ol_txrx_pdev_handle pdev); +void ol_txrx_ipa_uc_get_share_stats(ol_txrx_pdev_handle pdev, + uint8_t reset_stats); + +void ol_txrx_ipa_uc_set_quota(ol_txrx_pdev_handle pdev, uint64_t quota_bytes); + qdf_nbuf_t ol_tx_send_ipa_data_frame(void *vdev, qdf_nbuf_t skb); #else @@ -119,6 +124,18 @@ ol_txrx_ipa_uc_register_op_cb(ol_txrx_pdev_handle pdev, return; } +static inline void ol_txrx_ipa_uc_get_share_stats(ol_txrx_pdev_handle pdev, + uint8_t reset_stats) +{ + return; +} + +static inline void ol_txrx_ipa_uc_set_quota(ol_txrx_pdev_handle pdev, + uint64_t quota_bytes) +{ + return; +} + static inline void ol_txrx_ipa_uc_get_stat(ol_txrx_pdev_handle pdev) { return; diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index 4949b2856bcf..66257a2a001c 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -2104,4 +2104,18 @@ qdf_nbuf_mark_wakeup_frame(qdf_nbuf_t buf) __qdf_nbuf_mark_wakeup_frame(buf); } +/** + * qdf_nbuf_reg_free_cb - Registers nbuf free callback + * @cb_func_ptr: Callback pointer + * + * This function registers nbuf free callback + * + * Return: void + */ +static inline void +qdf_nbuf_reg_free_cb(qdf_nbuf_free_t cb_func_ptr) +{ + __qdf_nbuf_reg_free_cb(cb_func_ptr); +} + #endif /* _QDF_NBUF_H */ diff --git a/qdf/linux/src/i_qdf_nbuf.h b/qdf/linux/src/i_qdf_nbuf.h index f2cad4306cd2..7a90e30506b1 100644 --- a/qdf/linux/src/i_qdf_nbuf.h +++ b/qdf/linux/src/i_qdf_nbuf.h @@ -328,6 +328,7 @@ struct qdf_nbuf_cb { */ typedef void (*qdf_nbuf_trace_update_t)(char *); +typedef void (*qdf_nbuf_free_t)(__qdf_nbuf_t); #define __qdf_nbuf_mapped_paddr_get(skb) QDF_NBUF_CB_PADDR(skb) @@ -480,6 +481,7 @@ QDF_STATUS __qdf_nbuf_map_single(__qdf_device_t osdev, void __qdf_nbuf_unmap_single(__qdf_device_t osdev, struct sk_buff *skb, qdf_dma_dir_t dir); void __qdf_nbuf_reg_trace_cb(qdf_nbuf_trace_update_t cb_func_ptr); +void __qdf_nbuf_reg_free_cb(qdf_nbuf_free_t cb_func_ptr); QDF_STATUS __qdf_nbuf_dmamap_create(qdf_device_t osdev, __qdf_dma_map_t *dmap); void __qdf_nbuf_dmamap_destroy(qdf_device_t osdev, __qdf_dma_map_t dmap); diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index 593ba50a5967..cf3105fa5bed 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -166,6 +166,7 @@ EXPORT_SYMBOL(qdf_nbuf_set_state); /* globals do not need to be initialized to NULL/0 */ qdf_nbuf_trace_update_t qdf_trace_update_cb; +qdf_nbuf_free_t nbuf_free_cb; /** * __qdf_nbuf_alloc() - Allocate nbuf @@ -234,9 +235,8 @@ EXPORT_SYMBOL(__qdf_nbuf_alloc); */ void __qdf_nbuf_free(struct sk_buff *skb) { - if (qdf_nbuf_ipa_owned_get(skb)) - /* IPA cleanup function will need to be called here */ - QDF_BUG(1); + if (nbuf_free_cb) + nbuf_free_cb(skb); else dev_kfree_skb_any(skb); } @@ -2461,3 +2461,17 @@ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status, return 0; } #endif + +/** + * __qdf_nbuf_reg_free_cb() - register nbuf free callback + * @cb_func_ptr: function pointer to the nbuf free callback + * + * This function registers a callback function for nbuf free. + * + * Return: none + */ +void __qdf_nbuf_reg_free_cb(qdf_nbuf_free_t cb_func_ptr) +{ + nbuf_free_cb = cb_func_ptr; + return; +} diff --git a/wmi/inc/wmi_unified_api.h b/wmi/inc/wmi_unified_api.h index 580edda584ea..d1a762c41336 100644 --- a/wmi/inc/wmi_unified_api.h +++ b/wmi/inc/wmi_unified_api.h @@ -641,8 +641,12 @@ QDF_STATUS wmi_unified_get_link_speed_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl, wmi_ap_ps_egap_param_cmd_fixed_param *egap_params); + #endif +QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl, + struct action_wakeup_set_param *action_params); + QDF_STATUS wmi_unified_fw_profiling_data_cmd(void *wmi_hdl, uint32_t cmd, uint32_t value1, uint32_t value2); diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 6b24fa743abc..dd008f5f7a55 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -6648,5 +6648,21 @@ struct sar_limit_cmd_params { }; +#define WMI_SUPPORTED_ACTION_CATEGORY 256 +#define WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST (WMI_SUPPORTED_ACTION_CATEGORY/32) + +/** + * struct action_wakeup_set_param - action wakeup set params + * @vdev_id: virtual device id + * @operation: 0 reset to fw default, 1 set the bits, + * 2 add the setting bits, 3 delete the setting bits + * @action_category_map: bit mapping. + */ +struct action_wakeup_set_param { + uint32_t vdev_id; + uint32_t operation; + uint32_t action_category_map[WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST]; +}; + #endif /* _WMI_UNIFIED_PARAM_H_ */ diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index 0bafe462c2e8..ce6b728a264f 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -514,6 +514,9 @@ QDF_STATUS (*send_pktlog_wmi_send_cmd)(wmi_unified_t wmi_handle, WMI_CMD_ID cmd_id, uint8_t user_triggered); #endif +QDF_STATUS (*send_action_frame_patterns_cmd)(wmi_unified_t wmi_handle, + struct action_wakeup_set_param *action_params); + QDF_STATUS (*send_fw_profiling_cmd)(wmi_unified_t wmi_handle, uint32_t cmd, uint32_t value1, uint32_t value2); diff --git a/wmi/inc/wmi_unified_tlv.h b/wmi/inc/wmi_unified_tlv.h index 5606315c52dd..6b54611cdac8 100644 --- a/wmi/inc/wmi_unified_tlv.h +++ b/wmi/inc/wmi_unified_tlv.h @@ -357,6 +357,9 @@ QDF_STATUS send_get_link_speed_cmd_tlv(wmi_unified_t wmi_handle, QDF_STATUS send_egap_conf_params_cmd_tlv(wmi_unified_t wmi_handle, wmi_ap_ps_egap_param_cmd_fixed_param *egap_params); +QDF_STATUS send_action_frame_patterns_cmd_tlv(wmi_unified_t wmi_handle, + struct action_wakeup_set_param *action_params); + QDF_STATUS send_fw_profiling_cmd_tlv(wmi_unified_t wmi_handle, uint32_t cmd, uint32_t value1, uint32_t value2); diff --git a/wmi/src/wmi_unified.c b/wmi/src/wmi_unified.c index 5fab8dc5f2bd..6665a559c36c 100644 --- a/wmi/src/wmi_unified.c +++ b/wmi/src/wmi_unified.c @@ -1680,6 +1680,7 @@ static bool wmi_is_runtime_pm_cmd(uint32_t cmd_id) case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID: case WMI_PDEV_RESUME_CMDID: case WMI_WOW_DEL_WAKE_PATTERN_CMDID: + case WMI_WOW_SET_ACTION_WAKE_UP_CMDID: case WMI_D0_WOW_ENABLE_DISABLE_CMDID: return true; diff --git a/wmi/src/wmi_unified_api.c b/wmi/src/wmi_unified_api.c index 3d686796b564..9e5ffefe96d4 100644 --- a/wmi/src/wmi_unified_api.c +++ b/wmi/src/wmi_unified_api.c @@ -2173,9 +2173,30 @@ QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl, return QDF_STATUS_E_FAILURE; } + #endif /** + * wmi_unified_action_frame_patterns_cmd() - send wmi cmd of action filter params + * @wmi_handle: wmi handler + * @action_params: pointer to action_params + * + * Return: 0 for success, otherwise appropriate error code + */ +QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl, + struct action_wakeup_set_param *action_params) +{ + wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl; + + if (wmi_handle->ops->send_action_frame_patterns_cmd) + return wmi_handle->ops->send_action_frame_patterns_cmd( + wmi_handle, + action_params); + + return QDF_STATUS_E_FAILURE; +} + +/** * wmi_unified_fw_profiling_data_cmd() - send FW profiling cmd to WLAN FW * @wmi_handl: wmi handle * @cmd: Profiling command index diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index fbf8d68765f6..d3dd01530af3 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -6897,6 +6897,50 @@ QDF_STATUS send_egap_conf_params_cmd_tlv(wmi_unified_t wmi_handle, } /** + * send_action_frame_patterns_cmd_tlv() - send wmi cmd of action filter params + * @wmi_handle: wmi handler + * @action_params: pointer to action_params + * + * Return: 0 for success, otherwise appropriate error code + */ +QDF_STATUS send_action_frame_patterns_cmd_tlv(wmi_unified_t wmi_handle, + struct action_wakeup_set_param *action_params) +{ + WMI_WOW_SET_ACTION_WAKE_UP_CMD_fixed_param *cmd; + wmi_buf_t buf; + int i; + int32_t err; + + buf = wmi_buf_alloc(wmi_handle, sizeof(*cmd)); + if (!buf) { + WMI_LOGE("Failed to allocate buffer to send action filter cmd"); + return QDF_STATUS_E_NOMEM; + } + cmd = (WMI_WOW_SET_ACTION_WAKE_UP_CMD_fixed_param *) wmi_buf_data(buf); + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_wmi_wow_set_action_wake_up_cmd_fixed_param, + WMITLV_GET_STRUCT_TLVLEN( + WMI_WOW_SET_ACTION_WAKE_UP_CMD_fixed_param)); + + cmd->vdev_id = action_params->vdev_id; + cmd->operation = action_params->operation; + + for (i = 0; i < MAX_SUPPORTED_ACTION_CATEGORY_ELE_LIST; i++) + cmd->action_category_map[i] = + action_params->action_category_map[i]; + + err = wmi_unified_cmd_send(wmi_handle, buf, + sizeof(*cmd), WMI_WOW_SET_ACTION_WAKE_UP_CMDID); + if (err) { + WMI_LOGE("Failed to send ap_ps_egap cmd"); + wmi_buf_free(buf); + return QDF_STATUS_E_FAILURE; + } + + return QDF_STATUS_SUCCESS; +} + +/** * send_fw_profiling_cmd_tlv() - send FW profiling cmd to WLAN FW * @wmi_handl: wmi handle * @cmd: Profiling command index @@ -12332,6 +12376,7 @@ struct wmi_ops tlv_ops = { .send_process_dhcp_ind_cmd = send_process_dhcp_ind_cmd_tlv, .send_get_link_speed_cmd = send_get_link_speed_cmd_tlv, .send_egap_conf_params_cmd = send_egap_conf_params_cmd_tlv, + .send_action_frame_patterns_cmd = send_action_frame_patterns_cmd_tlv, .send_bcn_buf_ll_cmd = send_bcn_buf_ll_cmd_tlv, .send_process_update_edca_param_cmd = send_process_update_edca_param_cmd_tlv, |
