[dpdk-dev] [DPDK] lib/librte_ether: add comments RSS flags

Andrew Rybchenko arybchenko at solarflare.com
Sat Jan 6 11:21:52 CET 2018


On 01/04/2018 09:15 PM, Qiming Yang wrote:
> Detail the comment for RSS offload types and added comments for each type.
>
> Signed-off-by: Qiming Yang <qiming.yang at intel.com>
> ---
>   lib/librte_ether/rte_ethdev.h | 29 +++++++++++++++++++++++++----
>   1 file changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index 341c2d6..2091560 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -427,31 +427,52 @@ struct rte_eth_rss_conf {
>   	uint64_t rss_hf;     /**< Hash functions to apply - see below. */
>   };
>   
> -/*
> - * The RSS offload types are defined based on flow types which are defined
> - * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS offload
> - * types. The supported flow types or RSS offload types can be queried by
> +/**
> + * The RSS offload types are related to *rss_hf* field of *rss_conf* structure.
> + * They are defined based on flow types which are defined in rte_eth_ctrl.h.
> + * Different NIC hardwares may support different RSS offload types. The
> + * supported flow types or RSS offload types can be queried by
>    * rte_eth_dev_info_get().
>    */
> +/** Enable RSS offload on IPV4 packets */
>   #define ETH_RSS_IPV4               (1ULL << RTE_ETH_FLOW_IPV4)
> +/** Enable RSS offload on fragmented IPV4 packets */
>   #define ETH_RSS_FRAG_IPV4          (1ULL << RTE_ETH_FLOW_FRAG_IPV4)
> +/** Enable RSS offload on none fragmented IPV4 TCP packets */
>   #define ETH_RSS_NONFRAG_IPV4_TCP   (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_TCP)
> +/** Enable RSS offload on none fragmented IPV4 UDP packets */
>   #define ETH_RSS_NONFRAG_IPV4_UDP   (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_UDP)
> +/** Enable RSS offload on none fragmented IPV4 SCTP packets */
>   #define ETH_RSS_NONFRAG_IPV4_SCTP  (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_SCTP)
> +/** Enable RSS offload on other none fragmented IPV4 packets */
>   #define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV4_OTHER)
> +/** Enable RSS offload on IPV6 packets */
>   #define ETH_RSS_IPV6               (1ULL << RTE_ETH_FLOW_IPV6)
> +/** Enable RSS offload on fragmented IPV6 packets */
>   #define ETH_RSS_FRAG_IPV6          (1ULL << RTE_ETH_FLOW_FRAG_IPV6)
> +/** Enable RSS offload on none fragmented IPV6 TCP packets */
>   #define ETH_RSS_NONFRAG_IPV6_TCP   (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_TCP)
> +/** Enable RSS offload on none fragmented IPV6 UDP packets */
>   #define ETH_RSS_NONFRAG_IPV6_UDP   (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_UDP)
> +/** Enable RSS offload on none fragmented IPV6 SCTP packets */
>   #define ETH_RSS_NONFRAG_IPV6_SCTP  (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_SCTP)
> +/** Enable RSS offload on other none fragmented IPV6 packets */
>   #define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << RTE_ETH_FLOW_NONFRAG_IPV6_OTHER)
> +/** Enable RSS offload on L2 Ethernet packets */
>   #define ETH_RSS_L2_PAYLOAD         (1ULL << RTE_ETH_FLOW_L2_PAYLOAD)
> +/** Enable RSS offload on extended IPV6 packets */
>   #define ETH_RSS_IPV6_EX            (1ULL << RTE_ETH_FLOW_IPV6_EX)
> +/** Enable RSS offload on extended IPV6 TCP packets */
>   #define ETH_RSS_IPV6_TCP_EX        (1ULL << RTE_ETH_FLOW_IPV6_TCP_EX)
> +/** Enable RSS offload on extended IPV6 UDP packets */
>   #define ETH_RSS_IPV6_UDP_EX        (1ULL << RTE_ETH_FLOW_IPV6_UDP_EX)
> +/** Enable RSS offload on all packets from that port */
>   #define ETH_RSS_PORT               (1ULL << RTE_ETH_FLOW_PORT)
> +/** Enable RSS offload on VXLAN packets */
>   #define ETH_RSS_VXLAN              (1ULL << RTE_ETH_FLOW_VXLAN)
> +/** Enable RSS offload on GENEVE packets */
>   #define ETH_RSS_GENEVE             (1ULL << RTE_ETH_FLOW_GENEVE)
> +/** Enable RSS offload on NVGRE packets */
>   #define ETH_RSS_NVGRE              (1ULL << RTE_ETH_FLOW_NVGRE)
>   
>   #define ETH_RSS_IP ( \

These comments just decode the define name and not that useful. What would
be really useful here is specification of which fields of the packet 
headers are
used to calculate hash especially in the case of tunnels.


More information about the dev mailing list