* [PATCH v2 0/3] wil6210 patches
@ 2014-01-12 8:41 Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 1/3] wil6210: interrupt moderation Vladimir Kondratiev
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Vladimir Kondratiev @ 2014-01-12 8:41 UTC (permalink / raw)
To: John W . Linville; +Cc: Vladimir Kondratiev, linux-wireless, wil6210
in the previour submission, bug was found by kbuild, see below.
It is about incorrect #include, one I used do not work for the
architectures lacking native prefetch().
Re-submitting all series.
tree: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git master
head: 1e2f9295f4c657500111514f92a3d3894d0e05b4
commit: 1cbbcb08c786964a16773c39f2536f1923c73c58 [135/140] wil6210: prefetch head of packet
config: make ARCH=microblaze allyesconfig
All error/warnings:
drivers/net/wireless/ath/wil6210/txrx.c: In function 'wil_vring_reap_rx':
>> drivers/net/wireless/ath/wil6210/txrx.c:381:2: error: implicit declaration of function 'prefetch' [-Werror=implicit-function-declaration]
prefetch(skb->data);
^
cc1: some warnings being treated as errors
vim +/prefetch +381 drivers/net/wireless/ath/wil6210/txrx.c
375 wil_err(wil, "Rx size too large: %d bytes!\n", dmalen);
376 kfree_skb(skb);
377 return NULL;
378 }
379 skb_trim(skb, dmalen);
380
> 381 prefetch(skb->data);
382
383 wil_hex_dump_txrx("Rx ", DUMP_PREFIX_OFFSET, 16, 1,
384 skb->data, skb_headlen(skb), false);
Vladimir Kondratiev (3):
wil6210: interrupt moderation
wil6210: Fix IP version indication for Tx csum offload
wil6210: prefetch head of packet
drivers/net/wireless/ath/wil6210/interrupt.c | 13 +++++++++++++
drivers/net/wireless/ath/wil6210/txrx.c | 8 ++++++--
drivers/net/wireless/ath/wil6210/wil6210.h | 1 +
3 files changed, 20 insertions(+), 2 deletions(-)
--
1.8.3.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2 1/3] wil6210: interrupt moderation
2014-01-12 8:41 [PATCH v2 0/3] wil6210 patches Vladimir Kondratiev
@ 2014-01-12 8:41 ` Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 2/3] wil6210: Fix IP version indication for Tx csum offload Vladimir Kondratiev
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Vladimir Kondratiev @ 2014-01-12 8:41 UTC (permalink / raw)
To: John W . Linville; +Cc: Vladimir Kondratiev, linux-wireless, wil6210
Use hardware capabilities to limit IRQ generation to about 15 per msec
It corresponds to about 7 packets/IRQ when running iperf with default
parameters at 1.3Gbps
Do not enable this feature in the sniffer (monitor) mode, because
interrupt moderation cause timestamp accuracy deterioration.
For the sniffer flow, it is important to get precise timestamp.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
---
drivers/net/wireless/ath/wil6210/interrupt.c | 13 +++++++++++++
drivers/net/wireless/ath/wil6210/wil6210.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/drivers/net/wireless/ath/wil6210/interrupt.c b/drivers/net/wireless/ath/wil6210/interrupt.c
index 8205d3e..10919f9 100644
--- a/drivers/net/wireless/ath/wil6210/interrupt.c
+++ b/drivers/net/wireless/ath/wil6210/interrupt.c
@@ -156,6 +156,19 @@ void wil6210_enable_irq(struct wil6210_priv *wil)
iowrite32(WIL_ICR_ICC_VALUE, wil->csr + HOSTADDR(RGF_DMA_EP_MISC_ICR) +
offsetof(struct RGF_ICR, ICC));
+ /* interrupt moderation parameters */
+ if (wil->wdev->iftype == NL80211_IFTYPE_MONITOR) {
+ /* disable interrupt moderation for monitor
+ * to get better timestamp precision
+ */
+ iowrite32(0, wil->csr + HOSTADDR(RGF_DMA_ITR_CNT_CRL));
+ } else {
+ iowrite32(WIL6210_ITR_TRSH,
+ wil->csr + HOSTADDR(RGF_DMA_ITR_CNT_TRSH));
+ iowrite32(BIT_DMA_ITR_CNT_CRL_EN,
+ wil->csr + HOSTADDR(RGF_DMA_ITR_CNT_CRL));
+ }
+
wil6210_unmask_irq_pseudo(wil);
wil6210_unmask_irq_tx(wil);
wil6210_unmask_irq_rx(wil);
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h
index c4a5163..1f91eaf 100644
--- a/drivers/net/wireless/ath/wil6210/wil6210.h
+++ b/drivers/net/wireless/ath/wil6210/wil6210.h
@@ -39,6 +39,7 @@ static inline u32 WIL_GET_BITS(u32 x, int b0, int b1)
#define WIL6210_MAX_TX_RINGS (24) /* HW limit */
#define WIL6210_MAX_CID (8) /* HW limit */
#define WIL6210_NAPI_BUDGET (16) /* arbitrary */
+#define WIL6210_ITR_TRSH (10000) /* arbitrary - about 15 IRQs/msec */
/* Hardware definitions begin */
--
1.8.3.2
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v2 2/3] wil6210: Fix IP version indication for Tx csum offload
2014-01-12 8:41 [PATCH v2 0/3] wil6210 patches Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 1/3] wil6210: interrupt moderation Vladimir Kondratiev
@ 2014-01-12 8:41 ` Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 3/3] wil6210: prefetch head of packet Vladimir Kondratiev
2014-01-13 19:49 ` [PATCH v2 0/3] wil6210 patches John W. Linville
3 siblings, 0 replies; 7+ messages in thread
From: Vladimir Kondratiev @ 2014-01-12 8:41 UTC (permalink / raw)
To: John W . Linville; +Cc: Vladimir Kondratiev, linux-wireless, wil6210
Bit DMA_CFG_DESC_TX_OFFLOAD_CFG_L3T_IPV4_POS should be set for IPv4
only. Don't set it for IPv6
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
---
drivers/net/wireless/ath/wil6210/txrx.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index d505b26..18003c0 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -673,9 +673,12 @@ static int wil_tx_desc_offload_cksum_set(struct wil6210_priv *wil,
if (skb->ip_summed != CHECKSUM_PARTIAL)
return 0;
+ d->dma.b11 = ETH_HLEN; /* MAC header length */
+
switch (skb->protocol) {
case cpu_to_be16(ETH_P_IP):
protocol = ip_hdr(skb)->protocol;
+ d->dma.b11 |= BIT(DMA_CFG_DESC_TX_OFFLOAD_CFG_L3T_IPV4_POS);
break;
case cpu_to_be16(ETH_P_IPV6):
protocol = ipv6_hdr(skb)->nexthdr;
@@ -701,8 +704,6 @@ static int wil_tx_desc_offload_cksum_set(struct wil6210_priv *wil,
}
d->dma.ip_length = skb_network_header_len(skb);
- d->dma.b11 = ETH_HLEN; /* MAC header length */
- d->dma.b11 |= BIT(DMA_CFG_DESC_TX_OFFLOAD_CFG_L3T_IPV4_POS);
/* Enable TCP/UDP checksum */
d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_TCP_UDP_CHECKSUM_EN_POS);
/* Calculate pseudo-header */
--
1.8.3.2
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v2 3/3] wil6210: prefetch head of packet
2014-01-12 8:41 [PATCH v2 0/3] wil6210 patches Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 1/3] wil6210: interrupt moderation Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 2/3] wil6210: Fix IP version indication for Tx csum offload Vladimir Kondratiev
@ 2014-01-12 8:41 ` Vladimir Kondratiev
2014-01-13 19:49 ` [PATCH v2 0/3] wil6210 patches John W. Linville
3 siblings, 0 replies; 7+ messages in thread
From: Vladimir Kondratiev @ 2014-01-12 8:41 UTC (permalink / raw)
To: John W . Linville; +Cc: Vladimir Kondratiev, linux-wireless, wil6210
As soon as skb is ready to be reaped, prefetch 1-st cache line.
This accelerates data access that is performed later, during the
packet classification by the driver and IP stack.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
---
drivers/net/wireless/ath/wil6210/txrx.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index 18003c0..0b0975d 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -21,6 +21,7 @@
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <net/ipv6.h>
+#include <linux/prefetch.h>
#include "wil6210.h"
#include "wmi.h"
@@ -377,6 +378,8 @@ static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil,
}
skb_trim(skb, dmalen);
+ prefetch(skb->data);
+
wil_hex_dump_txrx("Rx ", DUMP_PREFIX_OFFSET, 16, 1,
skb->data, skb_headlen(skb), false);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v2 0/3] wil6210 patches
2014-01-12 8:41 [PATCH v2 0/3] wil6210 patches Vladimir Kondratiev
` (2 preceding siblings ...)
2014-01-12 8:41 ` [PATCH v2 3/3] wil6210: prefetch head of packet Vladimir Kondratiev
@ 2014-01-13 19:49 ` John W. Linville
2014-01-14 18:17 ` Vladimir Kondratiev
3 siblings, 1 reply; 7+ messages in thread
From: John W. Linville @ 2014-01-13 19:49 UTC (permalink / raw)
To: Vladimir Kondratiev; +Cc: linux-wireless, wil6210
I already merged the v1 series. Please submit any new patches on
top of what has already been merged...
On Sun, Jan 12, 2014 at 10:41:01AM +0200, Vladimir Kondratiev wrote:
> in the previour submission, bug was found by kbuild, see below.
> It is about incorrect #include, one I used do not work for the
> architectures lacking native prefetch().
>
> Re-submitting all series.
>
> tree: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git master
> head: 1e2f9295f4c657500111514f92a3d3894d0e05b4
> commit: 1cbbcb08c786964a16773c39f2536f1923c73c58 [135/140] wil6210: prefetch head of packet
> config: make ARCH=microblaze allyesconfig
>
> All error/warnings:
>
> drivers/net/wireless/ath/wil6210/txrx.c: In function 'wil_vring_reap_rx':
> >> drivers/net/wireless/ath/wil6210/txrx.c:381:2: error: implicit declaration of function 'prefetch' [-Werror=implicit-function-declaration]
> prefetch(skb->data);
> ^
> cc1: some warnings being treated as errors
>
> vim +/prefetch +381 drivers/net/wireless/ath/wil6210/txrx.c
>
> 375 wil_err(wil, "Rx size too large: %d bytes!\n", dmalen);
> 376 kfree_skb(skb);
> 377 return NULL;
> 378 }
> 379 skb_trim(skb, dmalen);
> 380
> > 381 prefetch(skb->data);
> 382
> 383 wil_hex_dump_txrx("Rx ", DUMP_PREFIX_OFFSET, 16, 1,
> 384 skb->data, skb_headlen(skb), false);
>
> Vladimir Kondratiev (3):
> wil6210: interrupt moderation
> wil6210: Fix IP version indication for Tx csum offload
> wil6210: prefetch head of packet
>
> drivers/net/wireless/ath/wil6210/interrupt.c | 13 +++++++++++++
> drivers/net/wireless/ath/wil6210/txrx.c | 8 ++++++--
> drivers/net/wireless/ath/wil6210/wil6210.h | 1 +
> 3 files changed, 20 insertions(+), 2 deletions(-)
>
> --
> 1.8.3.2
>
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 0/3] wil6210 patches
@ 2017-06-15 5:50 Maya Erez
0 siblings, 0 replies; 7+ messages in thread
From: Maya Erez @ 2017-06-15 5:50 UTC (permalink / raw)
To: Kalle Valo; +Cc: Maya Erez, linux-wireless, wil6210
Changes from v1:
- Change of wil_platform.h copyright year to 2017
Dedy Lansky (1):
wil6210: prevent platform callbacks after uninit
Maya Erez (2):
wil6210: add support for PCIe D3hot in system suspend
wil6210: remove ioctl interface
drivers/net/wireless/ath/wil6210/Makefile | 1 -
drivers/net/wireless/ath/wil6210/cfg80211.c | 38 ++++
drivers/net/wireless/ath/wil6210/debugfs.c | 49 +++++
drivers/net/wireless/ath/wil6210/interrupt.c | 6 +
drivers/net/wireless/ath/wil6210/ioctl.c | 180 -------------------
drivers/net/wireless/ath/wil6210/main.c | 7 +-
drivers/net/wireless/ath/wil6210/netdev.c | 8 -
drivers/net/wireless/ath/wil6210/pcie_bus.c | 63 ++++---
drivers/net/wireless/ath/wil6210/pm.c | 228 ++++++++++++++++++++++--
drivers/net/wireless/ath/wil6210/txrx.c | 71 ++++++++
drivers/net/wireless/ath/wil6210/wil6210.h | 26 +++
drivers/net/wireless/ath/wil6210/wil_platform.h | 7 +-
drivers/net/wireless/ath/wil6210/wmi.c | 143 +++++++++++++++
drivers/net/wireless/ath/wil6210/wmi.h | 27 +--
14 files changed, 612 insertions(+), 242 deletions(-)
delete mode 100644 drivers/net/wireless/ath/wil6210/ioctl.c
--
1.9.1
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-06-15 5:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-12 8:41 [PATCH v2 0/3] wil6210 patches Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 1/3] wil6210: interrupt moderation Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 2/3] wil6210: Fix IP version indication for Tx csum offload Vladimir Kondratiev
2014-01-12 8:41 ` [PATCH v2 3/3] wil6210: prefetch head of packet Vladimir Kondratiev
2014-01-13 19:49 ` [PATCH v2 0/3] wil6210 patches John W. Linville
2014-01-14 18:17 ` Vladimir Kondratiev
-- strict thread matches above, loose matches on Subject: below --
2017-06-15 5:50 Maya Erez
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).