Search Linux Wireless

Re: [PATCH 3/6] mac80211: Add airtime accounting and scheduling to TXQs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018-11-02 03:30, Toke Høiland-Jørgensen wrote:
Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxx> writes:

On 2018-10-28 15:01, Rajkumar Manoharan wrote:
On 2018-10-28 08:48, Toke Høiland-Jørgensen wrote:
Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxx> writes:


4ms         223 (40%)         214 (40%)    109 (10%)       94 (10%)

4ms         337 (90%)         182 (8%)      23 (1%)        30 (1%)

So this looks like it's doing *something*, but not like it's
succeeding
in achieving the set percentages. Did you check if the actual airtime
values (in debugfs) corresponds to the configured weights?

No. Will check that.

Toke,

From above results, different airtime for each station is reflecting on output performance. Unfortunately I don't see such tput difference, when
the tx mode is fixed in push-only. Even low weight station is giving
same
performance. Are you also seeing the same behavior in your setup? Could
you please share your results?

Sorry, I've been travelling this week; I'll be back in the office next
week and can run some tests then. I may also have an idea for a
different algorithm that will work better in pull mode, but need to see
if it works at all first :)

Wow... :)

Meanwhile we did some more experiments with both modes. The experiment was done in open environment and fixed rate and UDP traffic ran for 60 seconds.

Seems like push mode not honoring the configured weight. Always the airtime was almost same whereas in pull-mode airtime is changing based on configured
weight. Hence I would like to know your results.

		sta1		sta2		sta3		sta4
pull-mode	8s(205us)	18s(3.2ms)	8s(205us)	14s(410us)
		12s(256us)	12s(256us)	13s(256us)	12s(256us)
		14s(4ms)	13s(4ms)	14s(4ms)	13s(4ms)

push-mode	15s(205us)	12s(3.2ms)	16s(205us)	12s(410us)
		15s(256us)	12s(256us)	16s(256us)	12s(256us)
		14s(4ms)	13s(4ms)	16s(4ms)	12s(4ms)


How do I force ath10k into push mode?

Attaching the change to fix push mode.

-Rajkumar
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index c8dbbfa901af..1981e0ea8c7e 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -41,6 +41,7 @@
 static bool uart_print;
 static bool skip_otp;
 static bool rawmode;
+bool peer_flow_ctl = false;
 
 unsigned long ath10k_coredump_mask = BIT(ATH10K_FW_CRASH_DUMP_REGISTERS) |
 				     BIT(ATH10K_FW_CRASH_DUMP_CE_DATA);
@@ -52,6 +53,7 @@
 module_param(skip_otp, bool, 0644);
 module_param(rawmode, bool, 0644);
 module_param_named(coredump_mask, ath10k_coredump_mask, ulong, 0444);
+module_param(peer_flow_ctl, bool, 0644);
 
 MODULE_PARM_DESC(debug_mask, "Debugging mask");
 MODULE_PARM_DESC(uart_print, "Uart target debugging");
diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index e6f597d9f226..bf2e70411d90 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -1201,6 +1201,7 @@ static inline bool ath10k_peer_stats_enabled(struct ath10k *ar)
 }
 
 extern unsigned long ath10k_coredump_mask;
+extern bool peer_flow_ctl;
 
 struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
 				  enum ath10k_bus bus,
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index d74b55ba9914..d5ad88b85b69 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -216,6 +216,9 @@ int ath10k_mac_ext_resource_config(struct ath10k *ar, u32 val)
 	else
 		platform_type = WMI_HOST_PLATFORM_HIGH_PERF;
 
+	if (!peer_flow_ctl)
+		platform_type = WMI_HOST_PLATFORM_LOW_PERF_NO_FETCH;
+
 	ret = ath10k_wmi_ext_resource_config(ar, platform_type, val);
 
 	if (ret && ret != -EOPNOTSUPP) {
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index f7badd079051..6958d4f58a21 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -7128,6 +7128,7 @@ struct wmi_pno_scan_req {
 enum wmi_host_platform_type {
 	WMI_HOST_PLATFORM_HIGH_PERF,
 	WMI_HOST_PLATFORM_LOW_PERF,
+	WMI_HOST_PLATFORM_LOW_PERF_NO_FETCH,
 };
 
 enum wmi_bss_survey_req_type {

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux