summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex/benet/be_hw.h
diff options
context:
space:
mode:
authorSathya Perla <sathya.perla@emulex.com>2015-01-05 05:48:34 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-05 16:32:53 -0500
commit5f07b3c51abe330c3dd702622c419efffb5757f0 (patch)
treec666cc118eaac0087e79fa33119cb69507a1b748 /drivers/net/ethernet/emulex/benet/be_hw.h
parent889ee2c7d70e1ae9fc9341d0e82676c519ffede2 (diff)
downloadlinux-5f07b3c51abe330c3dd702622c419efffb5757f0.tar.bz2
be2net: support TX batching using skb->xmit_more flag
This patch uses skb->xmit_more flag to batch TX requests. TX is flushed either when xmit_more is false or there is no more space in the TXQ. Skyhawk-R and BEx chips require an even number of wrbs to be posted. So, when a batch of TX requests is accumulated, the last header wrb may need to be fixed with an extra dummy wrb. This patch refactors be_xmit() routine as a sequence of be_xmit_enqueue() and be_xmit_flush() calls. The Tx completion code is also updated to be able to unmap/free a batch of skbs rather than a single skb. Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex/benet/be_hw.h')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_hw.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_hw.h b/drivers/net/ethernet/emulex/benet/be_hw.h
index 295ee0835ba0..6d7b3a4d3cff 100644
--- a/drivers/net/ethernet/emulex/benet/be_hw.h
+++ b/drivers/net/ethernet/emulex/benet/be_hw.h
@@ -311,6 +311,11 @@ struct amap_eth_hdr_wrb {
u8 vlan_tag[16];
} __packed;
+#define TX_HDR_WRB_COMPL 1 /* word 2 */
+#define TX_HDR_WRB_EVT (1 << 1) /* word 2 */
+#define TX_HDR_WRB_NUM_SHIFT 13 /* word 2: bits 13:17 */
+#define TX_HDR_WRB_NUM_MASK 0x1F /* word 2: bits 13:17 */
+
struct be_eth_hdr_wrb {
u32 dw[4];
};