summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch')
-rw-r--r--package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch239
1 files changed, 0 insertions, 239 deletions
diff --git a/package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch b/package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch
deleted file mode 100644
index dea65bb..0000000
--- a/package/kernel/mac80211/patches/303-ath10k-enable-adaptive-CCA.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From: Maharaja <c_mkenna@qti.qualcomm.com>
-Date: Wed, 21 Oct 2015 11:49:18 +0300
-Subject: [PATCH] ath10k: enable adaptive CCA
-
-European Union has made it mandatory that all devices working in 2.4 GHz
-has to adhere to the ETSI specification (ETSI EN 300 328 V1.9.1)
-beginnig this year. The standard basically speaks about interferences
-in 2.4Ghz band.
-For example, when 802.11 device detects interference, TX must be stopped
-as long as interference is present.
-
-Adaptive CCA is a feature, when enabled the device learns from the
-environment and configures CCA levels adaptively. This will improve
-detecting interferences and the device can stop trasmissions till the
-interference is present eventually leading to good performances in
-varying interference conditions.
-
-The patch includes code for enabling adaptive CCA for 10.2.4 firmware on
-QCA988X.
-
-Signed-off-by: Maharaja <c_mkenna@qti.qualcomm.com>
-Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
-Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
----
-
---- a/drivers/net/wireless/ath/ath10k/core.c
-+++ b/drivers/net/wireless/ath/ath10k/core.c
-@@ -151,6 +151,7 @@ static const char *const ath10k_core_fw_
- [ATH10K_FW_FEATURE_NO_NWIFI_DECAP_4ADDR_PADDING] = "no-4addr-pad",
- [ATH10K_FW_FEATURE_SUPPORTS_SKIP_CLOCK_INIT] = "skip-clock-init",
- [ATH10K_FW_FEATURE_RAW_MODE_SUPPORT] = "raw-mode",
-+ [ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA] = "adaptive-cca",
- };
-
- static unsigned int ath10k_core_get_fw_feature_str(char *buf,
---- a/drivers/net/wireless/ath/ath10k/core.h
-+++ b/drivers/net/wireless/ath/ath10k/core.h
-@@ -497,6 +497,9 @@ enum ath10k_fw_features {
- */
- ATH10K_FW_FEATURE_RAW_MODE_SUPPORT = 10,
-
-+ /* Firmware Supports Adaptive CCA*/
-+ ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA = 11,
-+
- /* keep last */
- ATH10K_FW_FEATURE_COUNT,
- };
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -3905,6 +3905,18 @@ static int ath10k_start(struct ieee80211
- goto err_core_stop;
- }
-
-+ if (test_bit(ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA,
-+ ar->fw_features)) {
-+ ret = ath10k_wmi_pdev_enable_adaptive_cca(ar, 1,
-+ WMI_CCA_DETECT_LEVEL_AUTO,
-+ WMI_CCA_DETECT_MARGIN_AUTO);
-+ if (ret) {
-+ ath10k_warn(ar, "failed to enable adaptive cca: %d\n",
-+ ret);
-+ goto err_core_stop;
-+ }
-+ }
-+
- ret = ath10k_wmi_pdev_set_param(ar,
- ar->wmi.pdev_param->ani_enable, 1);
- if (ret) {
---- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
-+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
-@@ -182,6 +182,10 @@ struct wmi_ops {
- void (*fw_stats_fill)(struct ath10k *ar,
- struct ath10k_fw_stats *fw_stats,
- char *buf);
-+ struct sk_buff *(*gen_pdev_enable_adaptive_cca)(struct ath10k *ar,
-+ u8 enable,
-+ u32 detect_level,
-+ u32 detect_margin);
- };
-
- int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
-@@ -1302,4 +1306,25 @@ ath10k_wmi_fw_stats_fill(struct ath10k *
- ar->wmi.ops->fw_stats_fill(ar, fw_stats, buf);
- return 0;
- }
-+
-+static inline int
-+ath10k_wmi_pdev_enable_adaptive_cca(struct ath10k *ar, u8 enable,
-+ u32 detect_level, u32 detect_margin)
-+{
-+ struct sk_buff *skb;
-+
-+ if (!ar->wmi.ops->gen_pdev_enable_adaptive_cca)
-+ return -EOPNOTSUPP;
-+
-+ skb = ar->wmi.ops->gen_pdev_enable_adaptive_cca(ar, enable,
-+ detect_level,
-+ detect_margin);
-+
-+ if (IS_ERR(skb))
-+ return PTR_ERR(skb);
-+
-+ return ath10k_wmi_cmd_send(ar, skb,
-+ ar->wmi.cmd->pdev_enable_adaptive_cca_cmdid);
-+}
-+
- #endif
---- a/drivers/net/wireless/ath/ath10k/wmi.c
-+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -148,6 +148,7 @@ static struct wmi_cmd_map wmi_cmd_map =
- .gpio_config_cmdid = WMI_GPIO_CONFIG_CMDID,
- .gpio_output_cmdid = WMI_GPIO_OUTPUT_CMDID,
- .pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
-+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
- .scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
-@@ -313,6 +314,7 @@ static struct wmi_cmd_map wmi_10x_cmd_ma
- .gpio_config_cmdid = WMI_10X_GPIO_CONFIG_CMDID,
- .gpio_output_cmdid = WMI_10X_GPIO_OUTPUT_CMDID,
- .pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
-+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
- .scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
-@@ -477,6 +479,7 @@ static struct wmi_cmd_map wmi_10_2_4_cmd
- .gpio_config_cmdid = WMI_10_2_GPIO_CONFIG_CMDID,
- .gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID,
- .pdev_get_temperature_cmdid = WMI_10_2_PDEV_GET_TEMPERATURE_CMDID,
-+ .pdev_enable_adaptive_cca_cmdid = WMI_10_2_SET_CCA_PARAMS,
- .scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
-@@ -1407,6 +1410,7 @@ static struct wmi_cmd_map wmi_10_2_cmd_m
- .gpio_config_cmdid = WMI_10_2_GPIO_CONFIG_CMDID,
- .gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID,
- .pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
-+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
- .scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
- .vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
-@@ -6996,6 +7000,28 @@ unlock:
- buf[len] = 0;
- }
-
-+static struct sk_buff *
-+ath10k_wmi_op_gen_pdev_enable_adaptive_cca(struct ath10k *ar, u8 enable,
-+ u32 detect_level, u32 detect_margin)
-+{
-+ struct wmi_pdev_set_adaptive_cca_params *cmd;
-+ struct sk_buff *skb;
-+
-+ skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd));
-+ if (!skb)
-+ return ERR_PTR(-ENOMEM);
-+
-+ cmd = (struct wmi_pdev_set_adaptive_cca_params *)skb->data;
-+ cmd->enable = __cpu_to_le32(enable);
-+ cmd->cca_detect_level = __cpu_to_le32(detect_level);
-+ cmd->cca_detect_margin = __cpu_to_le32(detect_margin);
-+
-+ ath10k_dbg(ar, ATH10K_DBG_WMI,
-+ "wmi pdev set adaptive cca params enable:%d detection level:%d detection margin:%d\n",
-+ enable, detect_level, detect_margin);
-+ return skb;
-+}
-+
- static const struct wmi_ops wmi_ops = {
- .rx = ath10k_wmi_op_rx,
- .map_svc = wmi_main_svc_map,
-@@ -7059,6 +7085,7 @@ static const struct wmi_ops wmi_ops = {
- /* .gen_prb_tmpl not implemented */
- /* .gen_p2p_go_bcn_ie not implemented */
- /* .gen_adaptive_qcs not implemented */
-+ /* .gen_pdev_enable_adaptive_cca not implemented */
- };
-
- static const struct wmi_ops wmi_10_1_ops = {
-@@ -7125,6 +7152,7 @@ static const struct wmi_ops wmi_10_1_ops
- /* .gen_prb_tmpl not implemented */
- /* .gen_p2p_go_bcn_ie not implemented */
- /* .gen_adaptive_qcs not implemented */
-+ /* .gen_pdev_enable_adaptive_cca not implemented */
- };
-
- static const struct wmi_ops wmi_10_2_ops = {
-@@ -7188,6 +7216,7 @@ static const struct wmi_ops wmi_10_2_ops
- .gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
- .gen_delba_send = ath10k_wmi_op_gen_delba_send,
- .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
-+ /* .gen_pdev_enable_adaptive_cca not implemented */
- };
-
- static const struct wmi_ops wmi_10_2_4_ops = {
-@@ -7251,6 +7280,8 @@ static const struct wmi_ops wmi_10_2_4_o
- .gen_delba_send = ath10k_wmi_op_gen_delba_send,
- .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
- .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
-+ .gen_pdev_enable_adaptive_cca =
-+ ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
- /* .gen_bcn_tmpl not implemented */
- /* .gen_prb_tmpl not implemented */
- /* .gen_p2p_go_bcn_ie not implemented */
---- a/drivers/net/wireless/ath/ath10k/wmi.h
-+++ b/drivers/net/wireless/ath/ath10k/wmi.h
-@@ -772,6 +772,7 @@ struct wmi_cmd_map {
- u32 mu_cal_start_cmdid;
- u32 set_cca_params_cmdid;
- u32 pdev_bss_chan_info_request_cmdid;
-+ u32 pdev_enable_adaptive_cca_cmdid;
- };
-
- /*
-@@ -1381,6 +1382,9 @@ enum wmi_10_2_cmd_id {
- WMI_10_2_VDEV_ATF_REQUEST_CMDID,
- WMI_10_2_PEER_ATF_REQUEST_CMDID,
- WMI_10_2_PDEV_GET_TEMPERATURE_CMDID,
-+ WMI_10_2_MU_CAL_START_CMDID,
-+ WMI_10_2_SET_LTEU_CONFIG_CMDID,
-+ WMI_10_2_SET_CCA_PARAMS,
- WMI_10_2_PDEV_UTF_CMDID = WMI_10_2_END_CMDID - 1,
- };
-
-@@ -6094,6 +6098,15 @@ enum wmi_txbf_conf {
- WMI_TXBF_CONF_AFTER_ASSOC,
- };
-
-+#define WMI_CCA_DETECT_LEVEL_AUTO 0
-+#define WMI_CCA_DETECT_MARGIN_AUTO 0
-+
-+struct wmi_pdev_set_adaptive_cca_params {
-+ __le32 enable;
-+ __le32 cca_detect_level;
-+ __le32 cca_detect_margin;
-+} __packed;
-+
- struct ath10k;
- struct ath10k_vif;
- struct ath10k_fw_stats_pdev;