diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-08-29 19:42:08 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-08-29 19:42:08 +0000 |
commit | bcbb22a745a43e62e021d036ed8a03ee6edc74ca (patch) | |
tree | d660664faf08bb31180de3c77fae00aff8fa6e2b /target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | |
parent | 381dc718a9a15c8feafd0e9218ac2c87bb759697 (diff) | |
download | upstream-bcbb22a745a43e62e021d036ed8a03ee6edc74ca.tar.gz upstream-bcbb22a745a43e62e021d036ed8a03ee6edc74ca.tar.bz2 upstream-bcbb22a745a43e62e021d036ed8a03ee6edc74ca.zip |
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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42328 3c298f89-4303-0410-b956-a3cf2f4a3e73
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.h | 10 |
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 f6d85b9084..9fb10fd898 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; |