summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-12-29 22:01:56 -0700
committerLinux Build Service Account <lnxbuild@localhost>2016-12-29 22:01:56 -0700
commitbb00fc1a5291ee2b6b3eb3ad63d20b751dd0f6d6 (patch)
treeb919750ed312c0f08bee4f358a605533da4ae681
parent6b47bfa2229c234fc3ec63985109a2f4f2e231e3 (diff)
parent58e7b523aa48d0a4a19abdc2bee59904aeffb5e8 (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.txt2
-rw-r--r--dp/inc/cdp_txrx_cfg.h26
-rw-r--r--dp/inc/cdp_txrx_ipa.h17
-rw-r--r--qdf/inc/qdf_nbuf.h14
-rw-r--r--qdf/linux/src/i_qdf_nbuf.h2
-rw-r--r--qdf/linux/src/qdf_nbuf.c20
-rw-r--r--wmi/inc/wmi_unified_api.h4
-rw-r--r--wmi/inc/wmi_unified_param.h16
-rw-r--r--wmi/inc/wmi_unified_priv.h3
-rw-r--r--wmi/inc/wmi_unified_tlv.h3
-rw-r--r--wmi/src/wmi_unified.c1
-rw-r--r--wmi/src/wmi_unified_api.c21
-rw-r--r--wmi/src/wmi_unified_tlv.c45
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,