net: sxgbe: add ethtool related functions support Samsung sxgbe
Subsystems (4)
PATCH v8 6/7 net: sxgbe: add ethtool related functions support Samsung sxgbe
From: Vipul Pandya <[email protected]>
This patch adds ethtool related functions.
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 | 25 +- drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 509 +++++++++++++++++++- drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 8 +- drivers/net/ethernet/samsung/sxgbe/sxgbe_reg.h | 6 + 4 files changed, 537 insertions(+), 11 deletions(-)
drivers/net/ethernet/samsung/sxgbe/sxgbe_common.h +23 -2
@@ -42,8 +42,12 @@ struct sxgbe_mtl_ops;#define SXGBE_RX_QUEUES 16/* Max/Min RI Watchdog Timer count value */ -#define SXGBE_MAX_DMA_RIWT 0xff -#define SXGBE_MIN_DMA_RIWT 0x20 +/* Calculated based how much time does it take to fill 256KB Rx memory +* at 10Gb speed at 156MHz clock rate and considered little less then +* the actual value. +*/ +#define SXGBE_MAX_DMA_RIWT 0x70 +#define SXGBE_MIN_DMA_RIWT 0x01/* Tx coalesce parameters */ #define SXGBE_COAL_TX_TIMER 40000
@@ -194,6 +198,20 @@ enum dma_irq_status {#define SXGBE_FOR_EACH_QUEUE (max_queues, queue_num) \ for (queue_num = 0; queue_num < max_queues; queue_num++) +#define DRV_VERSION "1.0.0" + +#define SXGBE_MAX_RX_CHANNELS 16 +#define SXGBE_MAX_TX_CHANNELS 16 + +#define START_MAC_REG_OFFSET 0x0000 +#define MAX_MAC_REG_OFFSET 0x0DFC +#define START_MTL_REG_OFFSET 0x1000 +#define MAX_MTL_REG_OFFSET 0x18FC +#define START_DMA_REG_OFFSET 0x3000 +#define MAX_DMA_REG_OFFSET 0x38FC + +#define REG_SPACE_SIZE 0x2000 +/* sxgbe statistics counters */ struct sxgbe_extra_stats {/* TX/RX IRQ events */
@@ -479,6 +497,7 @@ struct sxgbe_priv_data {/* advanced time stamp support */ u32 adv_ts;int use_riwt; +struct ptp_clock *ptp_clock;/* tc control */ int tx_tc;
@@ -515,4 +534,6 @@ const struct sxgbe_mtl_ops *sxgbe_get_mtl_ops(void);void sxgbe_disable_eee_mode (struct sxgbe_priv_data *const priv);bool sxgbe_eee_init (struct sxgbe_priv_data *const priv); +int sxgbe_set_flow_ctrl (struct sxgbe_priv_data *priv,int rx,int tx); +#endif /* __SXGBE_COMMON_H__ */
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c +503 -6
547 lines not on this page · raw message
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c +5 -3
@@ -2129,9 +2129,6 @@ struct sxgbe_priv_data *sxgbe_dvr_probe(struct device *device, priv->msg_enable =netif_msg_init (debug, default_msg_level); -if (flow_ctrl) - priv->flow_ctrl =SXGBE_FLOW_AUTO ;/* RX/TX pause on */ -/* Enable TCP segmentation offload for all DMA channels */ if (priv->hw_cap.tcpseg_offload) { SXGBE_FOR_EACH_QUEUE(SXGBE_TX_QUEUES, queue_num) {
@@ -2145,6 +2142,11 @@ struct sxgbe_priv_data *sxgbe_dvr_probe(struct device *device, priv->rxcsum_insertion = true; } +/* Initialise pause frame settings */ + priv->rx_pause =1 ; + priv->tx_pause =1 ; +sxgbe_set_flow_ctrl (priv, priv->rx_pause, priv->tx_pause); +/* Rx Watchdog is available, enable depend on platform data */ if (!priv->plat->riwt_off) { priv->use_riwt =1 ;
drivers/net/ethernet/samsung/sxgbe/sxgbe_reg.h +6 -0
@@ -195,6 +195,12 @@#define SXGBE_CORE_RSS_ADD_REG 0x0C88#define SXGBE_CORE_RSS_DATA_REG 0x0C8C +/* RSS control register bits */ +#define SXGBE_CORE_RSS_CTL_UDP4TE BIT(3) +#define SXGBE_CORE_RSS_CTL_TCP4TE BIT(2) +#define SXGBE_CORE_RSS_CTL_IP2TE BIT(1) +#define SXGBE_CORE_RSS_CTL_RSSE BIT(0) +/* IEEE 1588 registers */ #define SXGBE_CORE_TSTAMP_CTL_REG 0x0D00#define SXGBE_CORE_SUBSEC_INC_REG 0x0D04
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