net: sxgbe: add TSO support for Samsung sxgbe
Subsystems (4)
PATCH v8 3/7 net: sxgbe: add TSO support for Samsung sxgbe
From: Vipul Pandya <[email protected]>
Enable TSO during initialization for each DMA channels
Signed-off-by Vipul Pandya <[email protected]>
Neatening-by Joe Perches <[email protected]>
Signed-off-by Byungho An <[email protected]>
--- drivers/net/ethernet/samsung/sxgbe/sxgbe_common.h | 1 + drivers/net/ethernet/samsung/sxgbe/sxgbe_desc.h | 17 +++-- drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c | 10 +++ drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h | 2 + drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 84 +++++++++++++++++++-- 5 files changed, 101 insertions(+), 13 deletions(-)
drivers/net/ethernet/samsung/sxgbe/sxgbe_common.h +1 -0
@@ -327,6 +327,7 @@ struct sxgbe_tx_queue {u32 tx_coal_frames;u32 tx_coal_timer;int hwts_tx_en; +u16 prev_mss;u8 queue_no; };
drivers/net/ethernet/samsung/sxgbe/sxgbe_desc.h +12 -5
@@ -167,8 +167,9 @@ struct sxgbe_desc_ops {void (*init_tx_desc)(struct sxgbe_tx_norm_desc *p);/* Invoked by the xmit function to prepare the tx descriptor */ -void (*tx_enable_tse)(struct sxgbe_tx_norm_desc *p,u8 is_tse, -u32 hdr_len,u32 payload_len); +void (*tx_desc_enable_tse)(struct sxgbe_tx_norm_desc *p,u8 is_tse, +u32 total_hdr_len,u32 tcp_hdr_len, +u32 tcp_payload_len);/* Assign buffer lengths for descriptor */ void (*prepare_tx_desc)(struct sxgbe_tx_norm_desc *p, u8 is_fd,
@@ -207,20 +208,26 @@ struct sxgbe_desc_ops {int (*get_tx_timestamp_status)(struct sxgbe_tx_norm_desc *p);/* TX Context Descripto Specific */ -void (*init_tx_ctxt_desc)(struct sxgbe_tx_ctxt_desc *p); +void (*tx_ctxt_desc_set_ctxt)(struct sxgbe_tx_ctxt_desc *p);/* Set the owner of the TX context descriptor */ -void (*set_tx_ctxt_owner)(struct sxgbe_tx_ctxt_desc *p); +void (*tx_ctxt_desc_set_owner)(struct sxgbe_tx_ctxt_desc *p);/* Get the owner of the TX context descriptor */ int (*get_tx_ctxt_owner)(struct sxgbe_tx_ctxt_desc *p);/* Set TX mss */ -void (*tx_ctxt_desc_setmss)(struct sxgbe_tx_ctxt_desc *p,int mss); +void (*tx_ctxt_desc_set_mss)(struct sxgbe_tx_ctxt_desc *p,u16 mss);/* Set TX mss */ int (*tx_ctxt_desc_get_mss)(struct sxgbe_tx_ctxt_desc *p); +/* Set TX tcmssv */ +void (*tx_ctxt_desc_set_tcmssv)(struct sxgbe_tx_ctxt_desc *p); + +/* Reset TX ostc */ +void (*tx_ctxt_desc_reset_ostc)(struct sxgbe_tx_ctxt_desc *p); +/* Set IVLAN information */ void (*tx_ctxt_desc_set_ivlantag)(struct sxgbe_tx_ctxt_desc *p, int is_ivlanvalid, int ivlan_tag,
drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c +10 -0
@@ -354,6 +354,15 @@ static void sxgbe_dma_rx_watchdog(void __iomem *ioaddr, u32 riwt) } } +static void sxgbe_enable_tso (void __iomem *ioaddr,u8 chan_num) +{ +u32 ctrl; + + ctrl =readl (ioaddr +SXGBE_DMA_CHA_TXCTL_REG (chan_num)); + ctrl |=SXGBE_DMA_CHA_TXCTL_TSE_ENABLE ; +writel (ctrl, ioaddr +SXGBE_DMA_CHA_TXCTL_REG (chan_num)); +} +static const struct sxgbe_dma_ops sxgbe_dma_ops = { .init = sxgbe_dma_init, .cha_init = sxgbe_dma_channel_init,
@@ -369,6 +378,7 @@ static const struct sxgbe_dma_ops sxgbe_dma_ops = { .tx_dma_int_status = sxgbe_tx_dma_int_status, .rx_dma_int_status = sxgbe_rx_dma_int_status, .rx_watchdog = sxgbe_dma_rx_watchdog, + .enable_tso = sxgbe_enable_tso, };const struct sxgbe_dma_ops *sxgbe_get_dma_ops (void )
drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.h +2 -0
@@ -42,6 +42,8 @@ struct sxgbe_dma_ops { struct sxgbe_extra_stats *x);/* Program the HW RX Watchdog */ void (*rx_watchdog)(void __iomem *ioaddr,u32 riwt); +/* Enable TSO for each DMA channel */ +void (*enable_tso)(void __iomem *ioaddr,u8 chan_num); };const struct sxgbe_dma_ops *sxgbe_get_dma_ops (void );
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c +76 -8
132 lines not on this page · raw message
Signature · 7 lines
1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html