diff mbox

ath10k: Enable RX batching

Message ID 87fvbt62x9.fsf@kamboji.qca.qualcomm.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Kalle Valo Jan. 2, 2015, 7:45 a.m. UTC
Sujith Manoharan <sujith@msujith.org> writes:

> From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
>
> This feature allows the FW to batch RX indications,
> reducing the rate of host interrupt generation, which
> in turn reduces CPU load. Currently, this is enabled
> only for the 10.2 firmware.
>
> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Any throughput improvements?

Also I simplified the patch a bit in ath-next-test:

Comments

Sujith Manoharan Jan. 2, 2015, 8:41 a.m. UTC | #1
Kalle Valo wrote:
> Any throughput improvements?

Along with the other patch and an internal fix,
UDP RX increased to about 950 Mbps.

Sujith
Kalle Valo Jan. 2, 2015, 8:49 a.m. UTC | #2
Sujith Manoharan <sujith@msujith.org> writes:

> Along with the other patch and an internal fix,
> UDP RX increased to about 950 Mbps.

What was the number before?
Sujith Manoharan Jan. 2, 2015, 10:43 a.m. UTC | #3
Kalle Valo wrote:
> > Along with the other patch and an internal fix,
> > UDP RX increased to about 950 Mbps.
> 
> What was the number before?

It was about 600 Mbps. Maybe slightly higher, but the CPU
was maxed out by the torrent of tasklets trying to
replenish HTT buffers.

Sujith
Kalle Valo Jan. 2, 2015, 1:33 p.m. UTC | #4
Sujith Manoharan <sujith@msujith.org> writes:

> Kalle Valo wrote:
>> > Along with the other patch and an internal fix,
>> > UDP RX increased to about 950 Mbps.
>> 
>> What was the number before?
>
> It was about 600 Mbps. Maybe slightly higher, but the CPU
> was maxed out by the torrent of tasklets trying to
> replenish HTT buffers.

Wow, that's a huge improvement.
diff mbox

Patch

--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -3710,7 +3710,7 @@  static struct sk_buff *ath10k_wmi_10_2_op_gen_init(struct ath10k *ar)
        struct wmi_init_cmd_10_2 *cmd;
        struct sk_buff *buf;
        struct wmi_resource_config_10x config = {};
-       u32 len, val, features = 0;
+       u32 len, val, features;
 
        config.num_vdevs = __cpu_to_le32(TARGET_10X_NUM_VDEVS);
        config.num_peers = __cpu_to_le32(TARGET_10X_NUM_PEERS);
@@ -3764,7 +3764,7 @@  static struct sk_buff *ath10k_wmi_10_2_op_gen_init(struct ath10k *ar)
 
        cmd = (struct wmi_init_cmd_10_2 *)buf->data;
 
-       features |= WMI_10_2_RX_BATCH_MODE;
+       features = WMI_10_2_RX_BATCH_MODE;
        cmd->resource_config.feature_mask = __cpu_to_le32(features);
 
        memcpy(&cmd->resource_config.common, &config, sizeof(config));