All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2] ath10k: Enable adaptive CCA
@ 2015-10-12  5:43 ` c_mkenna
  0 siblings, 0 replies; 8+ messages in thread
From: c_mkenna @ 2015-10-12  5:43 UTC (permalink / raw)
  To: kvalo; +Cc: ath10k, linux-wireless, Maharaja, Manikanta Pubbisetty

From: Maharaja <c_mkenna@qti.qualcomm.com>

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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
---

v2:
	1.Fixed the conflicts present in the files wmi.c and wmi-ops.h

 drivers/net/wireless/ath/ath10k/core.h    |  3 +++
 drivers/net/wireless/ath/ath10k/mac.c     | 13 +++++++++++++
 drivers/net/wireless/ath/ath10k/wmi-ops.h | 24 ++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.c     | 31 +++++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.h     | 13 +++++++++++++
 5 files changed, 84 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 002de71..f76e6ac 100644
--- 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,
 };
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 7579ace..10057ae 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3905,6 +3905,19 @@ static int ath10k_start(struct ieee80211_hw *hw)
 		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) {
diff --git a/drivers/net/wireless/ath/ath10k/wmi-ops.h b/drivers/net/wireless/ath/ath10k/wmi-ops.h
index d3bc6df..a7533fd 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
@@ -179,6 +179,10 @@ struct wmi_ops {
 	struct sk_buff *(*gen_adaptive_qcs)(struct ath10k *ar, bool enable);
 	struct sk_buff *(*gen_pdev_get_tpc_config)(struct ath10k *ar,
 						   u32 param);
+	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);
@@ -1289,4 +1293,24 @@ ath10k_wmi_pdev_get_tpc_config(struct ath10k *ar, u32 param)
 				   ar->wmi.cmd->pdev_get_tpc_config_cmdid);
 }
 
+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
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 063469b..6a41f5f 100644
--- 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_map = {
 	.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_map = {
 	.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_map = {
 	.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,
@@ -6621,6 +6625,28 @@ ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config(struct ath10k *ar, u32 param)
 	return skb;
 }
 
+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,
@@ -6683,6 +6709,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 = {
@@ -6748,6 +6775,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 = {
@@ -6810,6 +6838,7 @@ static const struct wmi_ops wmi_10_2_ops = {
 	.gen_addba_send = ath10k_wmi_op_gen_addba_send,
 	.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
 	.gen_delba_send = ath10k_wmi_op_gen_delba_send,
+	/* .gen_pdev_enable_adaptive_cca not implemented */
 };
 
 static const struct wmi_ops wmi_10_2_4_ops = {
@@ -6872,6 +6901,8 @@ static const struct wmi_ops wmi_10_2_4_ops = {
 	.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
 	.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,
+	.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 */
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 4c373b2..7b34bdd 100644
--- 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;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCHv2] ath10k: Enable adaptive CCA
@ 2015-10-12  5:43 ` c_mkenna
  0 siblings, 0 replies; 8+ messages in thread
From: c_mkenna @ 2015-10-12  5:43 UTC (permalink / raw)
  To: kvalo; +Cc: Manikanta Pubbisetty, linux-wireless, ath10k, Maharaja

From: Maharaja <c_mkenna@qti.qualcomm.com>

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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
---

v2:
	1.Fixed the conflicts present in the files wmi.c and wmi-ops.h

 drivers/net/wireless/ath/ath10k/core.h    |  3 +++
 drivers/net/wireless/ath/ath10k/mac.c     | 13 +++++++++++++
 drivers/net/wireless/ath/ath10k/wmi-ops.h | 24 ++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.c     | 31 +++++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.h     | 13 +++++++++++++
 5 files changed, 84 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 002de71..f76e6ac 100644
--- 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,
 };
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 7579ace..10057ae 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3905,6 +3905,19 @@ static int ath10k_start(struct ieee80211_hw *hw)
 		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) {
diff --git a/drivers/net/wireless/ath/ath10k/wmi-ops.h b/drivers/net/wireless/ath/ath10k/wmi-ops.h
index d3bc6df..a7533fd 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
@@ -179,6 +179,10 @@ struct wmi_ops {
 	struct sk_buff *(*gen_adaptive_qcs)(struct ath10k *ar, bool enable);
 	struct sk_buff *(*gen_pdev_get_tpc_config)(struct ath10k *ar,
 						   u32 param);
+	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);
@@ -1289,4 +1293,24 @@ ath10k_wmi_pdev_get_tpc_config(struct ath10k *ar, u32 param)
 				   ar->wmi.cmd->pdev_get_tpc_config_cmdid);
 }
 
+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
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 063469b..6a41f5f 100644
--- 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_map = {
 	.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_map = {
 	.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_map = {
 	.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,
@@ -6621,6 +6625,28 @@ ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config(struct ath10k *ar, u32 param)
 	return skb;
 }
 
+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,
@@ -6683,6 +6709,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 = {
@@ -6748,6 +6775,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 = {
@@ -6810,6 +6838,7 @@ static const struct wmi_ops wmi_10_2_ops = {
 	.gen_addba_send = ath10k_wmi_op_gen_addba_send,
 	.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
 	.gen_delba_send = ath10k_wmi_op_gen_delba_send,
+	/* .gen_pdev_enable_adaptive_cca not implemented */
 };
 
 static const struct wmi_ops wmi_10_2_4_ops = {
@@ -6872,6 +6901,8 @@ static const struct wmi_ops wmi_10_2_4_ops = {
 	.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
 	.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,
+	.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 */
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 4c373b2..7b34bdd 100644
--- 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;
-- 
1.9.1


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
  2015-10-12  5:43 ` c_mkenna
@ 2015-10-14  6:17   ` Kalle Valo
  -1 siblings, 0 replies; 8+ messages in thread
From: Kalle Valo @ 2015-10-14  6:17 UTC (permalink / raw)
  To: c_mkenna; +Cc: Manikanta Pubbisetty, linux-wireless, ath10k

<c_mkenna@qti.qualcomm.com> writes:

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

Please do not send untested code:

In function 'ath10k_core_get_fw_feature_str',
    inlined from 'ath10k_core_get_fw_features_str' at
    drivers/net/wireless/ath/ath10k/core.c:184:41:
drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
    '__compiletime_assert_162' declared with attribute error:
    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
    ATH10K_FW_FEATURE_COUNT

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
@ 2015-10-14  6:17   ` Kalle Valo
  0 siblings, 0 replies; 8+ messages in thread
From: Kalle Valo @ 2015-10-14  6:17 UTC (permalink / raw)
  To: c_mkenna; +Cc: Manikanta Pubbisetty, linux-wireless, ath10k

<c_mkenna@qti.qualcomm.com> writes:

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

Please do not send untested code:

In function 'ath10k_core_get_fw_feature_str',
    inlined from 'ath10k_core_get_fw_features_str' at
    drivers/net/wireless/ath/ath10k/core.c:184:41:
drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
    '__compiletime_assert_162' declared with attribute error:
    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
    ATH10K_FW_FEATURE_COUNT

-- 
Kalle Valo

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
  2015-10-14  6:17   ` Kalle Valo
@ 2015-10-14 10:11     ` Kennady Rajan, Maharaja
  -1 siblings, 0 replies; 8+ messages in thread
From: Kennady Rajan, Maharaja @ 2015-10-14 10:11 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: linux-wireless, ath10k

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
>> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
>> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

>Please do not send untested code:

>In function 'ath10k_core_get_fw_feature_str',
>    inlined from 'ath10k_core_get_fw_features_str' at
>    drivers/net/wireless/ath/ath10k/core.c:184:41:
>drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
>    '__compiletime_assert_162' declared with attribute error:
>    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
>    ATH10K_FW_FEATURE_COUNT

I have missed to add the wireless module in menuconfig while compilation. So I haven't see the errors while running the compilation script. Now I changed and compilation error has been resolved.

Regards,
Maha

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
@ 2015-10-14 10:11     ` Kennady Rajan, Maharaja
  0 siblings, 0 replies; 8+ messages in thread
From: Kennady Rajan, Maharaja @ 2015-10-14 10:11 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: linux-wireless, ath10k

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
>> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
>> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

>Please do not send untested code:

>In function 'ath10k_core_get_fw_feature_str',
>    inlined from 'ath10k_core_get_fw_features_str' at
>    drivers/net/wireless/ath/ath10k/core.c:184:41:
>drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
>    '__compiletime_assert_162' declared with attribute error:
>    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
>    ATH10K_FW_FEATURE_COUNT

I have missed to add the wireless module in menuconfig while compilation. So I haven't see the errors while running the compilation script. Now I changed and compilation error has been resolved.

Regards,
Maha
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
  2015-10-14 10:11     ` Kennady Rajan, Maharaja
@ 2015-10-14 10:50       ` Kennady Rajan, Maharaja
  -1 siblings, 0 replies; 8+ messages in thread
From: Kennady Rajan, Maharaja @ 2015-10-14 10:50 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: linux-wireless, ath10k

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
>>> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
>>> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

>>Please do not send untested code:

>>In function 'ath10k_core_get_fw_feature_str',
>>    inlined from 'ath10k_core_get_fw_features_str' at
>>    drivers/net/wireless/ath/ath10k/core.c:184:41:
>>drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
>>    '__compiletime_assert_162' declared with attribute error:
>>    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
>>    ATH10K_FW_FEATURE_COUNT

>I have missed to add the wireless module in menuconfig while compilation. So I haven't see >the errors while running the compilation script. Now I changed and compilation error has >been resolved.

Apologize for that issue. I did the test cases by mistake. Regret for the inconvenience.

Regards,
Maha

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCHv2] ath10k: Enable adaptive CCA
@ 2015-10-14 10:50       ` Kennady Rajan, Maharaja
  0 siblings, 0 replies; 8+ messages in thread
From: Kennady Rajan, Maharaja @ 2015-10-14 10:50 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: linux-wireless, ath10k

> From: Maharaja <c_mkenna@qti.qualcomm.com>
>
>>> 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 Kennadyrajan <c_mkenna@qti.qualcomm.com>
>>> Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>

>>Please do not send untested code:

>>In function 'ath10k_core_get_fw_feature_str',
>>    inlined from 'ath10k_core_get_fw_features_str' at
>>    drivers/net/wireless/ath/ath10k/core.c:184:41:
>>drivers/net/wireless/ath/ath10k/core.c:161:2: error: call to
>>    '__compiletime_assert_162' declared with attribute error:
>>    BUILD_BUG_ON failed: ARRAY_SIZE(ath10k_core_fw_feature_str) !=
>>    ATH10K_FW_FEATURE_COUNT

>I have missed to add the wireless module in menuconfig while compilation. So I haven't see >the errors while running the compilation script. Now I changed and compilation error has >been resolved.

Apologize for that issue. I did the test cases by mistake. Regret for the inconvenience.

Regards,
Maha
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-10-14 10:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-12  5:43 [PATCHv2] ath10k: Enable adaptive CCA c_mkenna
2015-10-12  5:43 ` c_mkenna
2015-10-14  6:17 ` Kalle Valo
2015-10-14  6:17   ` Kalle Valo
2015-10-14 10:11   ` Kennady Rajan, Maharaja
2015-10-14 10:11     ` Kennady Rajan, Maharaja
2015-10-14 10:50     ` Kennady Rajan, Maharaja
2015-10-14 10:50       ` Kennady Rajan, Maharaja

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.