summaryrefslogtreecommitdiff
path: root/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-08-29 19:42:08 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-08-29 19:42:08 +0000
commit2c680151e4a5ed2114bbd6a82a8d0638f507decd (patch)
tree0ab8ac31ece635e77f373ece4c7545caecddf097 /target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
parentc23e0ed691bb8b36742fe996bc75fe94d7d03be2 (diff)
downloadmtk-20170518-2c680151e4a5ed2114bbd6a82a8d0638f507decd.zip
mtk-20170518-2c680151e4a5ed2114bbd6a82a8d0638f507decd.tar.gz
mtk-20170518-2c680151e4a5ed2114bbd6a82a8d0638f507decd.tar.bz2
ar71xx: split packets into multiple descriptors on ar716x
This improves performance when doing concurrent rx/tx on a single ethernet MAC, e.g. when routing between VLANs. Fixes #13072 Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 42328
Diffstat (limited to 'target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h')
-rw-r--r--target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
index f6d85b9..9fb10fd 100644
--- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
+++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
@@ -52,10 +52,13 @@
#define AG71XX_TX_MTU_LEN 1540
-#define AG71XX_TX_RING_SIZE_DEFAULT 32
+#define AG71XX_TX_RING_SPLIT 256
+#define AG71XX_TX_RING_DS_PER_PKT DIV_ROUND_UP(AG71XX_TX_MTU_LEN, \
+ AG71XX_TX_RING_SPLIT)
+#define AG71XX_TX_RING_SIZE_DEFAULT 48
#define AG71XX_RX_RING_SIZE_DEFAULT 128
-#define AG71XX_TX_RING_SIZE_MAX 32
+#define AG71XX_TX_RING_SIZE_MAX 48
#define AG71XX_RX_RING_SIZE_MAX 128
#ifdef CONFIG_AG71XX_DEBUG
@@ -99,7 +102,8 @@ struct ag71xx_ring {
struct ag71xx_buf *buf;
u8 *descs_cpu;
dma_addr_t descs_dma;
- unsigned int desc_size;
+ u16 desc_split;
+ u16 desc_size;
unsigned int curr;
unsigned int dirty;
unsigned int size;