From a9963a86b2e144727f21d2294cc827d047c849ef Mon Sep 17 00:00:00 2001 From: Nelio Laranjeiro Date: Tue, 12 Jan 2016 11:49:08 +0100 Subject: [PATCH] ethdev: increase RETA entry size Several NICs can handle 512 entries/queues in their RETA table, an 8 bit field is not large enough for them. Signed-off-by: Nelio Laranjeiro Acked-by: Adrien Mazarguil --- app/test-pmd/cmdline.c | 4 ++-- doc/guides/rel_notes/deprecation.rst | 5 ----- lib/librte_ether/rte_ethdev.c | 2 +- lib/librte_ether/rte_ethdev.h | 2 +- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 52e9f5fad1..828b41f259 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1769,7 +1769,7 @@ parse_reta_config(const char *str, int i; unsigned size; uint16_t hash_index, idx, shift; - uint8_t nb_queue; + uint16_t nb_queue; char s[256]; const char *p, *p0 = str; char *end; @@ -1802,7 +1802,7 @@ parse_reta_config(const char *str, } hash_index = (uint16_t)int_fld[FLD_HASH_INDEX]; - nb_queue = (uint8_t)int_fld[FLD_QUEUE]; + nb_queue = (uint16_t)int_fld[FLD_QUEUE]; if (hash_index >= nb_entries) { printf("Invalid RETA hash index=%d\n", hash_index); diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 9cb288c368..9930b5a02b 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -15,11 +15,6 @@ Deprecation Notices * The ethdev structures rte_eth_link, rte_eth_dev_info and rte_eth_conf must be updated to support 100G link and to have a cleaner link speed API. -* ABI changes is planned for the reta field in struct rte_eth_rss_reta_entry64 - which handles at most 256 queues (8 bits) while newer NICs support larger - tables (512 queues). - It should be integrated in release 2.3. - * ABI changes are planned for struct rte_eth_fdir_flow in order to support extend flow director's input set. The release 2.2 does not contain these ABI changes, but release 2.3 will, and no backwards compatibility is planned. diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 12579656ce..5c2b416906 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -1819,7 +1819,7 @@ rte_eth_check_reta_mask(struct rte_eth_rss_reta_entry64 *reta_conf, static int rte_eth_check_reta_entry(struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t reta_size, - uint8_t max_rxq) + uint16_t max_rxq) { uint16_t i, idx, shift; diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 16da82135b..d53e3627ba 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -520,7 +520,7 @@ struct rte_eth_mirror_conf { struct rte_eth_rss_reta_entry64 { uint64_t mask; /**< Mask bits indicate which entries need to be updated/queried. */ - uint8_t reta[RTE_RETA_GROUP_SIZE]; + uint16_t reta[RTE_RETA_GROUP_SIZE]; /**< Group of 64 redirection table entries. */ }; -- 2.20.1