config MV_ETH_PORTS_NUM
	int "Number of Marvell GbE ports"
	depends on MV_ETH_NETA
	default 1
	---help---
	Number of Marvell GbE ports supported by NETA driver

menu "BM configuration"

config MV_ETH_BM
	depends on MV_ETH_NETA
	bool "Buffer Management support (BM)"
	default y
        ---help---

config MV_ETH_BM_CPU
	depends on MV_ETH_BM
	bool "Use BM for CPU processed traffic"
	default y
	---help---
	BM pools is used for traffic processed by CPU and HWF both

config MV_ETH_BM_0_PKT_SIZE
	depends on MV_ETH_BM
	int "Packet size [bytes] can use buffers from pool #0"
	default 0
	---help---
	0 - means that packet size for the pool will be defined accordingly
        with MTU of the port that use this pool.

config MV_ETH_BM_1_PKT_SIZE
	depends on MV_ETH_BM
	int "Packet size [bytes] can use buffers from pool #1"
	default 0
        ---help---
        0 - means that packet size for the pool will be defined accordingly
        with MTU of the port that use this pool.

config MV_ETH_BM_2_PKT_SIZE
	depends on MV_ETH_BM
	int "Packet size [bytes] can use buffers from pool #2"
	default 0
	---help---
        0 - means that packet size for the pool will be defined accordingly
        with MTU of the port that use this pool.

config MV_ETH_BM_3_PKT_SIZE
	depends on MV_ETH_BM
	int "Packet size [bytes] can use buffers from pool #3"
	default 256
	---help---
        0 - means that packet size for the pool will be defined accordingly
        with MTU of the port that use this pool.

menuconfig  MV_ETH_BM_PORT_0
        depends on (MV_ETH_BM && (MV_ETH_PORTS_NUM != 0))
        bool "BM configuration for GbE #0"
        default y
        ---help---

config  MV_ETH_BM_PORT_0_LONG_POOL
	int "Long BM pool for GbE #0"
	depends on MV_ETH_BM_PORT_0
	range -1 3 if MV_ETH_BM_CPU
	range 0 3 if !MV_ETH_BM_CPU
	default 0
	---help---
	BM pool to be used for GbE #0 port to process long packets
	-1 means that port will choose BM pool closest to required buffers size.

config  MV_ETH_BM_PORT_0_SHORT_POOL
        int "Short BM pool for GbE #0"
        depends on MV_ETH_BM_PORT_0
        range 0 3
        default 3
	---help---
	BM pool to be used for GbE #0 port to process short packets

config  MV_ETH_BM_PORT_0_LONG_BUF_NUM
        int "Number of buffers for Long pool of GbE #0"
        depends on MV_ETH_BM_PORT_0
        range 128 16384
        default 2048
        ---help---
	Number of long buffers allocated for this port.

config  MV_ETH_BM_PORT_0_SHORT_BUF_NUM
        int "Number of buffers for Short pool of GbE #0"
        depends on MV_ETH_BM_PORT_0
        range 1 16384
        default 3072
	---help---
        Number of short buffers allocated for this port.

menuconfig  MV_ETH_BM_PORT_1
        depends on (MV_ETH_BM && (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1))
        bool "BM configuration for GbE #1"
        default y
        ---help---

config  MV_ETH_BM_PORT_1_LONG_POOL
        int "Long BM pool for GbE #1"
        depends on MV_ETH_BM_PORT_1
	range -1 3 if MV_ETH_BM_CPU
	range 0 3 if !MV_ETH_BM_CPU
        default 1
        ---help---
        BM pool to be used for GbE #1 port to process long packets.
	-1 means that port will choose BM pool closest to required buffers size.

config  MV_ETH_BM_PORT_1_SHORT_POOL
        int "Short BM pool for GbE #1"
        depends on MV_ETH_BM_PORT_1
        range 0 3
        default 3
        ---help---
        BM pool to be used for GbE #1 port to process short packets.

config  MV_ETH_BM_PORT_1_LONG_BUF_NUM
        int "Number of buffers for Long pool of GbE #1"
        depends on MV_ETH_BM_PORT_1
        range 128 16384
        default 2048
        ---help---
	Number of long buffers allocated for this port.

config  MV_ETH_BM_PORT_1_SHORT_BUF_NUM
        int "Number of buffers for Short pool of GbE #1"
        depends on MV_ETH_BM_PORT_1
        range 1 16384
        default 3072
        ---help---
	Number of short buffers allocated for this port.

menuconfig  MV_ETH_BM_PORT_2
        depends on (MV_ETH_BM && (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) &&  (MV_ETH_PORTS_NUM != 2))
        bool "BM configuration for GbE #2"
        default y
        ---help---

config  MV_ETH_BM_PORT_2_LONG_POOL
        int "Long BM pool for GbE #2"
        depends on MV_ETH_BM_PORT_2
        range -1 3 if MV_ETH_BM_CPU
        range 0 3 if !MV_ETH_BM_CPU
        default 2
        ---help---
        BM pool to be used for GbE #2 port to process long packets.
	-1 means that port will choose BM pool closest to required buffers size.

config  MV_ETH_BM_PORT_2_SHORT_POOL
        int "Short BM pool for GbE #2"
        depends on MV_ETH_BM_PORT_2
        range 0 3
        default 3
        ---help---
	BM pool to be used for GbE #2 port to process short packets.

config  MV_ETH_BM_PORT_2_LONG_BUF_NUM
        int "Number of buffers for Long pool of GbE #2"
        depends on MV_ETH_BM_PORT_2
        range 1 16384
        default 2048
        ---help---
        Number of long buffers allocated for this port.

config  MV_ETH_BM_PORT_2_SHORT_BUF_NUM
        int "Number of buffers for Short pool of GbE #2"
        depends on MV_ETH_BM_PORT_2
        range 1 16384
        default 3072
        ---help---
        Number of short buffers allocated for this port.

menuconfig  MV_ETH_BM_PORT_3
        depends on (MV_ETH_BM && (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) && (MV_ETH_PORTS_NUM != 2) && (MV_ETH_PORTS_NUM != 3))
        bool "BM configuration for GbE #3"
        default y
        ---help---

config  MV_ETH_BM_PORT_3_LONG_POOL
        int "Long BM pool for GbE #3"
        depends on MV_ETH_BM_PORT_3
        range -1 3 if MV_ETH_BM_CPU
        range 0 3 if !MV_ETH_BM_CPU
        default 3
        ---help---
        BM pool to be used for GbE #3 port to process long packets.
	-1 means that port will choose BM pool closest to required buffers size.

config  MV_ETH_BM_PORT_3_SHORT_POOL
        int "Short BM pool for GbE #3"
        depends on MV_ETH_BM_PORT_3
        range 0 3
        default 3
        ---help---
	BM pool to be used for GbE #3 port to process short packets.

config  MV_ETH_BM_PORT_3_LONG_BUF_NUM
        int "Number of buffers for Long pool of GbE #3"
        depends on MV_ETH_BM_PORT_3
        range 128 16384
        default 2048
        ---help---
        Number of long buffers allocated for this port.

config  MV_ETH_BM_PORT_3_SHORT_BUF_NUM
        int "Number of buffers for Short pool of GbE #3"
        depends on MV_ETH_BM_PORT_3 && (MV_ETH_BM_PORT_3_LONG_POOL != MV_ETH_BM_PORT_3_SHORT_POOL)
        range 128 16384
        default 3072
        ---help---
        Number of short buffers allocated for this port.

endmenu

config MV_ETH_LEGACY_PARSER
	depends on !MV_ETH_PNC
	bool "Use legacy parser for incoming traffic"
	default y
	---help---

menuconfig MV_ETH_PNC
        depends on MV_ETH_NETA
        bool "PnC support"
	default y
        ---help---

config MV_PNC_TCAM_LINES
        depends on MV_ETH_PNC
        int "Number of TCAM lines supported by PNC"
        default 512
        ---help---

config MV_ETH_PNC_MCAST_NUM
        depends on MV_ETH_PNC
        int "Use PnC for Multicast MAC addresses filtering"
        default 8
        ---help---
	Number of Multicast addresses can be matched and accepted
	for all ports

config MV_ETH_PNC_VLAN_PRIO
        depends on MV_ETH_PNC
        int "Use PnC for VLAN priority mapping"
        range 0 32
        default 7
        ---help---
	Number of VLAN priorities can be mapped to different RXQs for all ports

config MV_ETH_PNC_ETYPE
        depends on MV_ETH_PNC
        int "Use PnC for extra ETYPE detection"
        default 0
        ---help---
        Number of extra ETYPEs can be detected in addition to
	ARP, IPv4, IPv6, PPPoE are detected by default.

config MV_ETH_PNC_DSCP_PRIO
        depends on MV_ETH_PNC
        int "Use PnC for DSCP priority mapping"
        range 0 256
        default 16
        ---help---
        Number of DSCP priorities can be mapped to different RXQs for all ports

config MV_ETH_PNC_L3_FLOW
	depends on MV_ETH_PNC
        bool "Use PNC for L3 Flows detection"
        default n
        ---help---
        Use PNC rules for IPv4 and IPv6 Flows processing.
        When enabled, MV_ETH_PNC_WOL will be disabled.

config MV_ETH_PNC_WOL
	depends on MV_ETH_PNC
	bool "Use PNC for Wake On LAN support"
	default n
	---help---
	Use PNC rules for TCAM filtering for Wake on LAN support.

menuconfig MV_ETH_HWF
	depends on (MV_ETH_PNC && MV_ETH_BM)
        bool "Hardware Forwarding support (HWF)"
        default y
        ---help---

config MV_ETH_HWF_TXQ_DROP
	depends on MV_ETH_HWF
	int "HWF Drop Threshold [%]"
	default 60
	---help---

config MV_ETH_HWF_TXQ_DROP_RND
        depends on MV_ETH_HWF
        int "HWF Drop Random Generator bits"
        default 0
        ---help---

config MV_ETH_PMT
        depends on MV_ETH_NETA
        bool "Packet Modification Table (PMT)"
        default n
        ---help---

config MV_ETH_PMT_FLOWS
	int "Number of different flows can be set to PMT"
	depends on MV_ETH_PMT
	default 256
	---help---
	Depend on total number of PMT entries and
	number of PMT entires reserved for each flow.
	MV_ETH_PMT_SIZE >= (MV_ETH_PMT_FLOWS * (MV_ETH_PMT_CMD_PER_FLOW + 1))

config MV_ETH_PMT_CMD_PER_FLOW
        int "Number of PMT entries reserved for each flow"
        depends on MV_ETH_PMT
        default 12
        ---help---
        Depend on total number of PMT entries and
        number of flows to be supported.
	MV_ETH_PMT_SIZE >= (MV_ETH_PMT_FLOWS * (MV_ETH_PMT_CMD_PER_FLOW + 1))

menu "Network Interface configuration"

config  MV_ETH_0_MTU
	int "Giga port #0 MTU value"
	depends on (MV_ETH_PORTS_NUM != 0)
 	default 1500
        ---help---
	Default MTU value for Marvell GbE port #0

config  MV_ETH_0_MACADDR
        string "Giga port #0 MAC address"
        depends on (MV_ETH_PORTS_NUM != 0)
        default "00:00:00:00:00:80"
        ---help---
        Default MAC address for Marvell GbE port #0

config  MV_ETH_1_MTU
        int "Giga port #1 MTU value"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1)
        default 1500
        ---help---
	Default MTU value for Marvell GbE port #1

config  MV_ETH_1_MACADDR
        string "Giga port #1 MAC address"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1)
        default "00:00:00:00:00:81"
        ---help---
        Default MAC address for Marvell GbE port #1

config  MV_ETH_2_MTU
        int "Giga port #2 MTU value"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) && (MV_ETH_PORTS_NUM != 2)
        default 1500
        ---help---
        Default MTU value for Marvell GbE port #2

config  MV_ETH_2_MACADDR
        string "Giga port #2 MAC address"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) && (MV_ETH_PORTS_NUM != 2)
        default "00:00:00:00:00:82"
        ---help---
        Default MAC address for Marvell GbE port #2

config  MV_ETH_3_MTU
        int "Giga port #3 MTU value"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) && (MV_ETH_PORTS_NUM != 2) && (MV_ETH_PORTS_NUM != 3)
        default 1500
        ---help---
        Default MTU value for Marvell GbE port #3

config  MV_ETH_3_MACADDR
        string "Giga port #3 MAC address"
        depends on (MV_ETH_PORTS_NUM != 0) && (MV_ETH_PORTS_NUM != 1) && (MV_ETH_PORTS_NUM != 2) && (MV_ETH_PORTS_NUM != 3)
        default "00:00:00:00:00:83"
        ---help---
        Default MAC address for Marvell GbE port #3

endmenu

menu "Rx/Tx Queue configuration"

config  MV_ETH_RXQ
        int "Number of RX queues"
        default 1
        ---help---
          Multiple RX queue support.

config  MV_ETH_TXQ
        int "Number of TX queues"
        default 1
        ---help---
          Multiple TX queue support.

config MV_ETH_RXQ_DESC
	int "Number of Rx descriptors"
	depends on (MV_ETH_PORTS_NUM != 0)
	default 128
        ---help---
	The number of Rx descriptors in each Rx queue.

config MV_ETH_RXQ_DEF
        int "Default RXQ to recieve packets"
        default 0
        ---help---

config MV_ETH_TXQ_DESC
	int "Number of Tx descriptors"
	depends on (MV_ETH_PORTS_NUM != 0)
	default 532
        ---help---
	The number of Tx descriptors in each Tx queue.

config MV_ETH_TXQ_DEF
        int "Default TXQ to send local generated packets"
        default 0
        ---help---

endmenu

menu "IP/TCP/UDP Offloading"

config  MV_ETH_TX_CSUM_OFFLOAD
        bool "L3/L4 TX checksum offload support for Marvell network interface"
        default y
        ---help---
	Marvell network driver compiled with TCP/UDP over IPv4/IPv6 TX checksum offload support.

config MV_ETH_TX_CSUM_OFFLOAD_DEF
	depends on MV_ETH_TX_CSUM_OFFLOAD
        bool "Default value for L3/L4 TX checksum offload: enable/disable"
        default y
        ---help---
	Can be changed in run-time using ethtool

config  MV_ETH_RX_CSUM_OFFLOAD
        bool "L3/L4 RX checksum offload support for Marvell network interface"
        default y
        ---help---
        Marvell network driver compiled with TCP/UDP over IPv4/IPv6 RX checksum offload support.

config MV_ETH_RX_CSUM_OFFLOAD_DEF
	depends on MV_ETH_RX_CSUM_OFFLOAD
        bool "Default value for L3/L4 RX checksum offload: enable/disable"
        default y
        ---help---
	Can be changed in run-time using ethtool

config  MV_ETH_GRO
        bool "GRO Support for Marvell network interface"
	default y
        ---help---
        Marvell network driver compiled with GRO (Generic Receive Offload) support.

config  MV_ETH_GRO_DEF
	depends on MV_ETH_GRO
        bool "Default value for GRO feature: enable/disable"
	default n
        ---help---
        Can be changed in run-time using ethtool

config  MV_ETH_TSO
        bool "TSO Support for Marvell network interface"
	default y
        ---help---
        Marvell network driver compiled with TSO (TCP Segmentation Offload) support.

config  MV_ETH_TSO_DEF
	depends on MV_ETH_TSO
        bool "Default value for TSO feature: enable/disable"
	default n
        ---help---
	Can be changed in run-time using ethtool

endmenu

menu "Control and Statistics"

config  MV_ETH_DEBUG_CODE
	bool "Add run-time debug code"
	default n
	---help---
	Enable run-time enable/disable enter debug code blocks

config  MV_ETH_STAT_ERR
        bool "Collect error statistics"
        default y
	---help---
	Marvell network interface driver collect minimal number of statistics.
	Only for error conditions. Can be displayed using mv_eth_tool.

config  MV_ETH_STAT_INF
        bool "Collect event statistics"
        default y
        ---help---
	Marvell network interface driver collect event statistics.
	Provide more information about driver functionality and almost doesn't
	effect performance. Can be displayed using mv_eth_tool.

config  MV_ETH_STAT_DBG
        bool "Collect debug statistics"
        default n
        ---help---
	Marvell network interface driver collect a lot of statistics.
	Used for Debug mode. Decrease performance. Can be displayed using mv_eth_tool.

config  MV_ETH_STAT_DIST
        bool "Collect debug distribution statistics"
        default n
        ---help---
        Marvell network interface driver collect a lot of statistics.
        Used for Debug mode. Decrease performance. Can be displayed using mv_eth_tool.

config  MV_LINUX_COUNTERS_DISABLE
	bool "Disable collection of SNMP statistics and Netfilter Contract statistics"
	default n
	---help---
	Disable collection of SNMP statistics and Netfilter Contract statistics to improve performance.

config  MV_ETH_TOOL
	bool "Support ethtool controls"
	default y
	---help---
	Support kernel's SIOCETHTOOL for ethtool utility
endmenu

menu "Advanced Features"

config  NET_SKB_HEADROOM
        int "SKB headroom size"
        default 64
        ---help---
          Customize SKB headroom size. Must be power of 2.

config NET_SKB_RECYCLE
        bool "Skb recycle"
        default y
        ---help---
          Work-in-progress and experimental.

          This option enables skb's to be returned via a callback at kfree to
          the allocator to make a fastpath for very skb consuming network
          applications.

config NET_SKB_RECYCLE_DEF
        depends on NET_SKB_RECYCLE
        int "Default value for SKB recycle:  0 - disable, 1 - enable"
        default 1
        ---help---

config  MV_ETH_TX_DONE_TIMER_PERIOD
        int "Periodical Tx Done timer period"
        default 10
        ---help---
          Periodical timer period for Tx Done operation in [msec].

config  MV_ETH_CLEANUP_TIMER_PERIOD
        int "Periodical Cleanup timer period"
        default 10
        ---help---
          Periodical timer period for cleanup operation in [msec].

config  MV_ETH_TXDONE_ISR
	bool "Use interrupt to process TX_DONE event"
	default n
	---help---
	When chosen TX_DONE event will be process in interrupt mode
	When unchosen TX_DONE event will be processed in polling mode

config  MV_ETH_TXDONE_COAL_PKTS
	int "Threshold for TX_DONE event trigger"
	default 16
	---help---
	Number of packets will be sent before TX_DONE event will be triggered
	by interrupt or polling.

config  MV_ETH_RX_COAL_PKTS
        int "Threshold [number of packets] for RX interrupt"
        default 32
        ---help---
        Number of packets will be received before RX interrupt will be generated by HW.

config  MV_ETH_RX_COAL_USEC
        int "Threshold [usec] for RX interrupt"
        default 100
        ---help---
        Time delay in usec before RX interrupt will be generated by HW if number of
	received packets larger than 0 but smaller than MV_ETH_RX_COAL_PKTS

config  MV_ETH_RX_DESC_PREFETCH
	bool "Enable RX descriptor prefetch"
	default n
	---help---
	Use pld instruction to prefetch one RX descriptor ahead

config  MV_ETH_RX_PKT_PREFETCH
        bool "Enable RX packet prefetch"
        default n
        ---help---
        Use pld instruction to prefetch first two cache lines of received packet data

config MV_ETH_RX_SPECIAL
	depends on MV_ETH_PNC
        bool "Enable special RX processing"
        default n
        ---help---
        Enable special RX processing for packets with RI_RX_SEPCIAL PNC result info bit set

config MV_ETH_TX_SPECIAL
	bool "Enable special TX processing"
 	default n
	---help---
	Enable special TX processing for packets with signal header (SH)

config MV_ETH_L2FW
	bool "L2 Forwarding support"
	default n
	---help---
	Enable L2 Forwarding support for received packets.
	Three modes are supported: Send packet without change, Swap MAC DA<->SA,
	Copy the whole packet and swap MAC

config MV_ETH_L2SEC
	bool "L2 Forwarding IPSec support"
	depends on MV_ETH_L2FW
	default n
	---help---
	Handle encrypted packets with CESA.

config MV_ETH_L2FW_DEBUG
	depends on MV_ETH_L2FW
	bool "Add run-time L2FW debug code"
	default n
	---help---
	Enable L2FW run-time enable/disable enter debug code blocks

config MV_ETH_RX_POLL_WEIGHT
	int "poll weight for the RX poll() function"
	default 64
	range 1 255
	---help---
	poll weight for the RX poll() function; must be less or equal to 255

config MV_ETH_EXTRA_BUF_SIZE
	int "Extra buffer size in bytes"
	default 120
	range 120 16384
	---help---
	Size of buffers allocated for extra pool and used in special cases like TSO,
	fragmentattion and others

config MV_ETH_EXTRA_BUF_NUM
        int "Number of extra buffers allocated for each port"
        default MV_ETH_TXQ_DESC
	---help---
	Number of extra buffers allocated for each port
endmenu

menu "NFP support"

config  MV_ETH_NFP
        tristate "Use Network Fast Processing (NFP)"
	default n
        ---help---
        Choosing this option will enable Network Fast Processing.

config MV_ETH_NFP_DEF
        depends on MV_ETH_NFP
        int "Default value for NFP state:  0 - OFF, 1 - ON"
        default 0
	range 0 1
        ---help---

config MV_ETH_NFP_MODE_DEF
        depends on MV_ETH_NFP
        int "Default value for NFP mode:  1 - 2 tuple mode, 2 - 5 tuple mode"
        default 1
	range 1 2
        ---help---

config  MV_ETH_NFP_EXT
        bool "Support NFP for External (non GBE) network interfaces"
        depends on MV_ETH_NFP
        default n
         ---help---
        Choosing this option will enable NFP for non-GBE network interfaces.

config  MV_ETH_NFP_EXT_NUM
        int "Maximum number of External (non-Gbe) interfaces"
        depends on MV_ETH_NFP_EXT
        default 1
	range 1 4
         ---help---

config MV_ETH_NFP_BRIDGE
        bool "Support NFP Bridging"
        default y
        depends on MV_ETH_NFP
        ---help---
        Choosing this option will enable NFP bridging support.

choice
        prompt "NFP Bridging Mode"
        depends on MV_ETH_NFP_BRIDGE
        default MV_ETH_NFP_FDB_MODE

config	MV_ETH_NFP_FDB_MODE
	bool "NFP FDB"
	depends on MV_ETH_NFP_BRIDGE
	---help---
	  enable NFP FDB mode

config  MV_ETH_NFP_BRIDGE_MODE
	bool "NFP Bridge"
	depends on MV_ETH_NFP_BRIDGE
	---help---
	  enable NFP Bridge Mode

endchoice

config	MV_ETH_NFP_FDB_LEARN
	depends on MV_ETH_NFP_BRIDGE && MV_ETH_NFP_FDB_MODE && BRIDGE && MV_ETH_NFP!=m
	bool "Support NFP FDB Dynamic Learning"
	default y
	---help---
	  enable NFP bridging dynamic learning via NFP hooks

config MV_ETH_NFP_FDB_LEARN_DEF
        depends on MV_ETH_NFP_FDB_LEARN
        int "Default value for NFP FDB Dynamic Learning:  0 - disable, 1 - enable"
        default 1
	range 0 1
        ---help---

config MV_ETH_NFP_VLAN
        bool "Support NFP VLANs processing"
        default y
        depends on MV_ETH_NFP
        ---help---
        Choosing this option will enable NFP VLANs support.

config MV_ETH_NFP_VLAN_LEARN
        depends on MV_ETH_NFP_VLAN && VLAN_8021Q && MV_ETH_NFP!=m
        bool "Support NFP VLAN Dynamic Learning"
        default y
        ---help---
        Choosing this option will enable NFP VLAN dynamic learning via NFP hooks
	in Linux Network stack.

config MV_ETH_NFP_VLAN_LEARN_DEF
        depends on MV_ETH_NFP_VLAN_LEARN
        int "Default value for NFP VLAN Dynamic Learning:  0 - disable, 1 - enable"
        default 1
	range 0 1
        ---help---

config MV_ETH_NFP_FIB
        bool "Support NFP Routing"
	default y
        depends on MV_ETH_NFP
        ---help---
        Choosing this option will enable NFP routing support.

config MV_ETH_NFP_FIB_LEARN
        depends on MV_ETH_NFP_FIB && MV_ETH_NFP!=m
        bool "Support NFP Routing Dynamic Learning"
        default y
        ---help---
        Choosing this option will enable NFP Routing dynamic learning via NFP hooks
	in Linux Network stack.

config MV_ETH_NFP_FIB_LEARN_DEF
        depends on MV_ETH_NFP_FIB_LEARN
        int "Default value for NFP Routing Dynamic Learning:  0 - disable, 1 - enable"
        default 1
	range 0 1
        ---help---

config MV_ETH_NFP_CT
        bool "Support NFP 5 Tuple Rules"
        depends on MV_ETH_NFP_FIB
	default y
        ---help---
        Choosing this option will enable NFP 5 Tuple Rules support.

config MV_ETH_NFP_CT_LEARN
        depends on MV_ETH_NFP_CT && NF_CONNTRACK && MV_ETH_NFP!=m
        bool "Support NFP 5 Tuple Dynamic Learning"
        default y
        ---help---
        Choosing this option will enable NFP 5 Tuple dynamic learning via NFP hooks
	in Linux Network stack.

config MV_ETH_NFP_CT_LEARN_DEF
        depends on MV_ETH_NFP_CT_LEARN
        int "Default value for NFP 5 Tuple Dynamic Learning:  0 - disable, 1 - enable"
        default 1
	range 0 1
        ---help---

config MV_ETH_NFP_NAT
        bool "Support NFP NAT"
        depends on MV_ETH_NFP_CT
	default y
        ---help---
        Choosing this option will enable NFP NAT support.

config MV_ETH_NFP_LIMIT
        bool "Support NFP Ingress Rate Limiting"
        depends on MV_ETH_NFP_CT
	default n
        ---help---
        Choosing this option will enable NFP rate limitation support based on 5 tuple rule.

config  MV_ETH_NFP_CLASSIFY
	bool "Support NFP Classification rules"
	depends on MV_ETH_NFP_CT || MV_ETH_NFP_BRIDGE
	default y
	---help---
	Choosing this option will enable NFP classification rules (DSCP and VLAN modification and Tx queue selection)

config  MV_ETH_NFP_PPP
	bool "Support NFP PPPoE"
	depends on MV_ETH_NFP_FIB && MV_ETH_PNC
	default n
	 ---help---
	Choosing this option will enable NFP PPPoE protocol.

config MV_ETH_NFP_PPP_LEARN
        depends on MV_ETH_NFP_PPP && PPPOE && MV_ETH_NFP!=m
        bool "Support NFP PPPoE Dynamic Learning"
        default y
        ---help---
        Choosing this option will enable NFP PPPoE dynamic learning via NFP hooks
	in Linux Network stack.

config MV_ETH_NFP_PPP_LEARN_DEF
        depends on MV_ETH_NFP_PPP_LEARN
        int "Default value for NFP PPPoE Dynamic Learning:  0 - disable, 1 - enable"
        default 1
	range 0 1
        ---help---

config  MV_ETH_NFP_STATS
        bool "Collect NFP Statistics"
	depends on MV_ETH_NFP
        default n
        ---help---
        Collect NFP statistics. Can be displayed using mv_eth_tool.

config  MV_ETH_NFP_DEBUG
	bool "Add NFP debug code"
	depends on MV_ETH_NFP
	default n
        ---help---
	Add NFP sanity check code

endmenu

menu "NAPI GROUPS"

config  MV_ETH_NAPI_GROUPS
        int "Number of NAPI instances which can be used per port"
		range 1 NR_CPUS if SMP
		range 1 1 if !SMP
        default 1
        ---help---
	Different RXQs and TXQs can be processed by different CPU using different NAPI instances

menu "Group 0"

config MV_ETH_GROUP0_CPU
	hex "CPU affinity for group0"
    range 0x0 0xf if (NR_CPUS=4)
    range 0x0 0x7 if (NR_CPUS=3)
    range 0x0 0x3 if (NR_CPUS=2)
	range 0x0 0x1 if (NR_CPUS=1)
	default 0xf
config MV_ETH_GROUP0_RXQ
	hex "RXQ affinity for group0"
	range 0x0 0xff
	default 0xff
endmenu

menu "Group 1"
	depends on (MV_ETH_NAPI_GROUPS !=1)

config MV_ETH_GROUP1_CPU
	hex "CPU affinity for group1"
    range 0x0 0xf if (NR_CPUS=4)
    range 0x0 0x7 if (NR_CPUS=3)
    range 0x0 0x3 if (NR_CPUS=2)
	range 0x0 0x3 if (NR_CPUS=1)
	default 0x0
config MV_ETH_GROUP1_RXQ
	hex "RXQ affinity for group1"
	range 0x0 0xff
	default 0x0
endmenu

menu "Group 2"
	depends on (MV_ETH_NAPI_GROUPS !=1) && (MV_ETH_NAPI_GROUPS !=2)

config MV_ETH_GROUP2_CPU
	hex "CPU affinity for group2"
    range 0x0 0xf if (NR_CPUS=4)
    range 0x0 0x7 if (NR_CPUS=3)
    range 0x0 0x3 if (NR_CPUS=2)
	range 0x0 0x3 if (NR_CPUS=1)
	default 0x0
config MV_ETH_GROUP2_RXQ
	hex "RXQ affinity for group2"
	range 0x0 0xff
	default 0x0
endmenu
menu "Group 3"
	depends on (MV_ETH_NAPI_GROUPS !=1) && (MV_ETH_NAPI_GROUPS !=2) && (MV_ETH_NAPI_GROUPS !=3)
config MV_ETH_GROUP3_CPU
	hex "CPU affinity for group3"
    range 0x0 0xf if (NR_CPUS=4)
    range 0x0 0x7 if (NR_CPUS=3)
    range 0x0 0x3 if (NR_CPUS=2)
	range 0x0 0x3 if (NR_CPUS=1)
	default 0x0
config MV_ETH_GROUP3_RXQ
	hex "RXQ affinity for group3"
	range 0x0 0xff
	default 0x0
endmenu
endmenu

menu "PON support for Network driver"

config MV_PON
        bool "PON support"
        depends on MV_ETH_NETA && MV_INCLUDE_PON
        ---help---
        Choose this option to support PON port in Marvell network driver

config MV_PON_TXP_DEF
        int "Default T-CONT to send local generated packets"
        depends on MV_PON
        default 0
        ---help---

config MV_PON_TXQ_DEF
        int "Default TXQ to send local generated packets"
        depends on MV_PON
        default 0
        ---help---

endmenu

menu "Switch support"

config MV_ETH_SWITCH
        bool "Switch support"
	depends on MV_INCLUDE_SWITCH
        ---help---
	Choose this option to support Gigabit Ethernet Controller connected to
        on-board QuarterDeck switch family

config  MV_ETH_SWITCH_NETDEV_NUM
	int "Maximum number of subnets on switch ports"
	depends on MV_ETH_SWITCH
	default 4
	---help---
	Valid range range from 1 to BOARD_ETH_SWITCH_PORT_NUM

config  MV_ETH_SWITCH_NETCONFIG_0
	string "Switch network configuration for GbE port 0"
	depends on MV_ETH_SWITCH
	default "3,(00:11:66:11:66:11,0)(00:22:77:22:77:22,1:2:3:4),mtu=1500"
	---help---
	 Set the network configuration when giga port connected to switch.
         For each interface, define the interface
	 name, MAC address and participating ports.

config  MV_ETH_SWITCH_NETCONFIG_1
	string "Switch network configuration for GbE port 1"
	depends on MV_ETH_SWITCH
	default "0"
	---help---
	 Set the network configuration when giga port connected to switch.
         For each interface, define the interface
	 name, MAC address and participating ports.

config  MV_ETH_SWITCH_LINK
	bool "Link status change indications"
	depends on MV_ETH_SWITCH
	default y
	---help---
	  Support Phy link status change indications.
endmenu

menu "ERRATA / WA"

config MV_ETH_ERRATA_SMI_ACCESS
	bool "use SMI port 1 instead of SMI port 0"
	depends on ARMADA_XP_REV_Z1
	default y
	---help---
	Using SMI port 1 instead of SMI port 0 prevents the
	link up/link down on a different port than the port on which
	an action such as changing speed or starting autonegotiation is done.
	(NetA BTS #313, DSMP LSP #42, ARMADA XP Z1).

config MV_ETH_REDUCE_BURST_SIZE_WA
	bool "Limit burst size of RX and TX transactions to 16B in IOCC mode"
	depends on AURORA_IO_CACHE_COHERENCY
	default y
	---help---
	To avoid CPU make invalidate which might cause hang, force partial
	read/write by limiting the burst size to 16B since it is less than the
	size of a cache line.

config MV_ETH_BE_WA
	bool "WA for RX and TX descriptors swap in HW issue"
	depends on CPU_ENDIAN_BE32
	default n
	---help---
	If set swap of RX and TX descriptors in BE mode will be done by driver

config MV_ETH_6601_LB_WA
	bool "WA for 6601 (KW MC) w/ loopback traffic to CPU"
	default n
	---help---
	If set, RX traffic to CPU from GMAC1 is switched to GMAC0 netdev (eth1)

endmenu
