X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fi40e%2Fi40e_hash.c;h=8962e9d97aa756bda5cc0a936be22973aca686bb;hb=bf1bc993eab153ffc488c435ad007bd827b7cd37;hp=b1cb24f4378c14ec5a2c3b9999aff0a3bda9f152;hpb=4e719bd52dc7bd808823119e1edbac942cd10576;p=dpdk.git diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c index b1cb24f437..8962e9d97a 100644 --- a/drivers/net/i40e/i40e_hash.c +++ b/drivers/net/i40e/i40e_hash.c @@ -28,6 +28,7 @@ #define I40E_HASH_HDR_ETH 0x01ULL #define I40E_HASH_HDR_IPV4 0x10ULL #define I40E_HASH_HDR_IPV6 0x20ULL +#define I40E_HASH_HDR_IPV6_FRAG 0x40ULL #define I40E_HASH_HDR_TCP 0x100ULL #define I40E_HASH_HDR_UDP 0x200ULL #define I40E_HASH_HDR_SCTP 0x400ULL @@ -54,6 +55,8 @@ /* IPv6 */ #define I40E_PHINT_IPV6 (I40E_HASH_HDR_ETH | I40E_HASH_HDR_IPV6) +#define I40E_PHINT_IPV6_FRAG (I40E_PHINT_IPV6 | \ + I40E_HASH_HDR_IPV6_FRAG) #define I40E_PHINT_IPV6_TCP (I40E_PHINT_IPV6 | I40E_HASH_HDR_TCP) #define I40E_PHINT_IPV6_UDP (I40E_PHINT_IPV6 | I40E_HASH_HDR_UDP) #define I40E_PHINT_IPV6_SCTP (I40E_PHINT_IPV6 | I40E_HASH_HDR_SCTP) @@ -102,47 +105,47 @@ struct i40e_hash_map_rss_inset { const struct i40e_hash_map_rss_inset i40e_hash_rss_inset[] = { /* IPv4 */ - { ETH_RSS_IPV4, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST }, - { ETH_RSS_FRAG_IPV4, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST }, + { RTE_ETH_RSS_IPV4, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST }, + { RTE_ETH_RSS_FRAG_IPV4, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST }, - { ETH_RSS_NONFRAG_IPV4_OTHER, + { RTE_ETH_RSS_NONFRAG_IPV4_OTHER, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST }, - { ETH_RSS_NONFRAG_IPV4_TCP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | + { RTE_ETH_RSS_NONFRAG_IPV4_TCP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, - { ETH_RSS_NONFRAG_IPV4_UDP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | + { RTE_ETH_RSS_NONFRAG_IPV4_UDP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, - { ETH_RSS_NONFRAG_IPV4_SCTP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | + { RTE_ETH_RSS_NONFRAG_IPV4_SCTP, I40E_INSET_IPV4_SRC | I40E_INSET_IPV4_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT | I40E_INSET_SCTP_VT }, /* IPv6 */ - { ETH_RSS_IPV6, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST }, - { ETH_RSS_FRAG_IPV6, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST }, + { RTE_ETH_RSS_IPV6, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST }, + { RTE_ETH_RSS_FRAG_IPV6, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST }, - { ETH_RSS_NONFRAG_IPV6_OTHER, + { RTE_ETH_RSS_NONFRAG_IPV6_OTHER, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST }, - { ETH_RSS_NONFRAG_IPV6_TCP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | + { RTE_ETH_RSS_NONFRAG_IPV6_TCP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, - { ETH_RSS_NONFRAG_IPV6_UDP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | + { RTE_ETH_RSS_NONFRAG_IPV6_UDP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, - { ETH_RSS_NONFRAG_IPV6_SCTP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | + { RTE_ETH_RSS_NONFRAG_IPV6_SCTP, I40E_INSET_IPV6_SRC | I40E_INSET_IPV6_DST | I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT | I40E_INSET_SCTP_VT }, /* Port */ - { ETH_RSS_PORT, I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, + { RTE_ETH_RSS_PORT, I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT }, /* Ether */ - { ETH_RSS_L2_PAYLOAD, I40E_INSET_LAST_ETHER_TYPE }, - { ETH_RSS_ETH, I40E_INSET_DMAC | I40E_INSET_SMAC }, + { RTE_ETH_RSS_L2_PAYLOAD, I40E_INSET_LAST_ETHER_TYPE }, + { RTE_ETH_RSS_ETH, I40E_INSET_DMAC | I40E_INSET_SMAC }, /* VLAN */ - { ETH_RSS_S_VLAN, I40E_INSET_VLAN_OUTER }, - { ETH_RSS_C_VLAN, I40E_INSET_VLAN_INNER }, + { RTE_ETH_RSS_S_VLAN, I40E_INSET_VLAN_OUTER }, + { RTE_ETH_RSS_C_VLAN, I40E_INSET_VLAN_INNER }, }; #define I40E_HASH_VOID_NEXT_ALLOW BIT_ULL(RTE_FLOW_ITEM_TYPE_ETH) @@ -158,6 +161,9 @@ const struct i40e_hash_map_rss_inset i40e_hash_rss_inset[] = { BIT_ULL(RTE_FLOW_ITEM_TYPE_L2TPV3OIP) |\ BIT_ULL(RTE_FLOW_ITEM_TYPE_AH)) +#define I40E_HASH_IPV6_NEXT_ALLOW (I40E_HASH_IP_NEXT_ALLOW | \ + BIT_ULL(RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT)) + #define I40E_HASH_UDP_NEXT_ALLOW (BIT_ULL(RTE_FLOW_ITEM_TYPE_GTPU) | \ BIT_ULL(RTE_FLOW_ITEM_TYPE_GTPC)) @@ -168,7 +174,7 @@ static const uint64_t pattern_next_allow_items[] = { [RTE_FLOW_ITEM_TYPE_VOID] = I40E_HASH_VOID_NEXT_ALLOW, [RTE_FLOW_ITEM_TYPE_ETH] = I40E_HASH_ETH_NEXT_ALLOW, [RTE_FLOW_ITEM_TYPE_IPV4] = I40E_HASH_IP_NEXT_ALLOW, - [RTE_FLOW_ITEM_TYPE_IPV6] = I40E_HASH_IP_NEXT_ALLOW, + [RTE_FLOW_ITEM_TYPE_IPV6] = I40E_HASH_IPV6_NEXT_ALLOW, [RTE_FLOW_ITEM_TYPE_UDP] = I40E_HASH_UDP_NEXT_ALLOW, [RTE_FLOW_ITEM_TYPE_GTPU] = I40E_HASH_GTPU_NEXT_ALLOW, }; @@ -177,6 +183,7 @@ static const uint64_t pattern_item_header[] = { [RTE_FLOW_ITEM_TYPE_ETH] = I40E_HASH_HDR_ETH, [RTE_FLOW_ITEM_TYPE_IPV4] = I40E_HASH_HDR_IPV4, [RTE_FLOW_ITEM_TYPE_IPV6] = I40E_HASH_HDR_IPV6, + [RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT] = I40E_HASH_HDR_IPV6_FRAG, [RTE_FLOW_ITEM_TYPE_TCP] = I40E_HASH_HDR_TCP, [RTE_FLOW_ITEM_TYPE_UDP] = I40E_HASH_HDR_UDP, [RTE_FLOW_ITEM_TYPE_SCTP] = I40E_HASH_HDR_SCTP, @@ -201,30 +208,30 @@ struct i40e_hash_match_pattern { #define I40E_HASH_MAP_CUS_PATTERN(pattern, rss_mask, cus_pctype) { \ pattern, rss_mask, true, cus_pctype } -#define I40E_HASH_L2_RSS_MASK (ETH_RSS_ETH | ETH_RSS_L2_SRC_ONLY | \ - ETH_RSS_L2_DST_ONLY) +#define I40E_HASH_L2_RSS_MASK (RTE_ETH_RSS_VLAN | RTE_ETH_RSS_ETH | \ + RTE_ETH_RSS_L2_SRC_ONLY | \ + RTE_ETH_RSS_L2_DST_ONLY) #define I40E_HASH_L23_RSS_MASK (I40E_HASH_L2_RSS_MASK | \ - ETH_RSS_VLAN | \ - ETH_RSS_L3_SRC_ONLY | \ - ETH_RSS_L3_DST_ONLY) + RTE_ETH_RSS_L3_SRC_ONLY | \ + RTE_ETH_RSS_L3_DST_ONLY) -#define I40E_HASH_IPV4_L23_RSS_MASK (ETH_RSS_IPV4 | I40E_HASH_L23_RSS_MASK) -#define I40E_HASH_IPV6_L23_RSS_MASK (ETH_RSS_IPV6 | I40E_HASH_L23_RSS_MASK) +#define I40E_HASH_IPV4_L23_RSS_MASK (RTE_ETH_RSS_IPV4 | I40E_HASH_L23_RSS_MASK) +#define I40E_HASH_IPV6_L23_RSS_MASK (RTE_ETH_RSS_IPV6 | I40E_HASH_L23_RSS_MASK) #define I40E_HASH_L234_RSS_MASK (I40E_HASH_L23_RSS_MASK | \ - ETH_RSS_PORT | ETH_RSS_L4_SRC_ONLY | \ - ETH_RSS_L4_DST_ONLY) + RTE_ETH_RSS_PORT | RTE_ETH_RSS_L4_SRC_ONLY | \ + RTE_ETH_RSS_L4_DST_ONLY) -#define I40E_HASH_IPV4_L234_RSS_MASK (I40E_HASH_L234_RSS_MASK | ETH_RSS_IPV4) -#define I40E_HASH_IPV6_L234_RSS_MASK (I40E_HASH_L234_RSS_MASK | ETH_RSS_IPV6) +#define I40E_HASH_IPV4_L234_RSS_MASK (I40E_HASH_L234_RSS_MASK | RTE_ETH_RSS_IPV4) +#define I40E_HASH_IPV6_L234_RSS_MASK (I40E_HASH_L234_RSS_MASK | RTE_ETH_RSS_IPV6) -#define I40E_HASH_L4_TYPES (ETH_RSS_NONFRAG_IPV4_TCP | \ - ETH_RSS_NONFRAG_IPV4_UDP | \ - ETH_RSS_NONFRAG_IPV4_SCTP | \ - ETH_RSS_NONFRAG_IPV6_TCP | \ - ETH_RSS_NONFRAG_IPV6_UDP | \ - ETH_RSS_NONFRAG_IPV6_SCTP) +#define I40E_HASH_L4_TYPES (RTE_ETH_RSS_NONFRAG_IPV4_TCP | \ + RTE_ETH_RSS_NONFRAG_IPV4_UDP | \ + RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \ + RTE_ETH_RSS_NONFRAG_IPV6_TCP | \ + RTE_ETH_RSS_NONFRAG_IPV6_UDP | \ + RTE_ETH_RSS_NONFRAG_IPV6_SCTP) /* Current supported patterns and RSS types. * All items that have the same pattern types are together. @@ -232,68 +239,72 @@ struct i40e_hash_match_pattern { static const struct i40e_hash_match_pattern match_patterns[] = { /* Ether */ I40E_HASH_MAP_PATTERN(I40E_PHINT_ETH, - ETH_RSS_L2_PAYLOAD | I40E_HASH_L2_RSS_MASK, + RTE_ETH_RSS_L2_PAYLOAD | I40E_HASH_L2_RSS_MASK, I40E_FILTER_PCTYPE_L2_PAYLOAD), /* IPv4 */ I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV4, - ETH_RSS_FRAG_IPV4 | I40E_HASH_IPV4_L23_RSS_MASK, + RTE_ETH_RSS_FRAG_IPV4 | I40E_HASH_IPV4_L23_RSS_MASK, I40E_FILTER_PCTYPE_FRAG_IPV4), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV4, - ETH_RSS_NONFRAG_IPV4_OTHER | + RTE_ETH_RSS_NONFRAG_IPV4_OTHER | I40E_HASH_IPV4_L23_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV4_OTHER), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV4_TCP, - ETH_RSS_NONFRAG_IPV4_TCP | + RTE_ETH_RSS_NONFRAG_IPV4_TCP | I40E_HASH_IPV4_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV4_TCP), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV4_UDP, - ETH_RSS_NONFRAG_IPV4_UDP | + RTE_ETH_RSS_NONFRAG_IPV4_UDP | I40E_HASH_IPV4_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV4_UDP), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV4_SCTP, - ETH_RSS_NONFRAG_IPV4_SCTP | + RTE_ETH_RSS_NONFRAG_IPV4_SCTP | I40E_HASH_IPV4_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV4_SCTP), /* IPv6 */ I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6, - ETH_RSS_FRAG_IPV6 | I40E_HASH_IPV6_L23_RSS_MASK, + RTE_ETH_RSS_FRAG_IPV6 | I40E_HASH_IPV6_L23_RSS_MASK, I40E_FILTER_PCTYPE_FRAG_IPV6), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6, - ETH_RSS_NONFRAG_IPV6_OTHER | + RTE_ETH_RSS_NONFRAG_IPV6_OTHER | I40E_HASH_IPV6_L23_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV6_OTHER), + I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6_FRAG, + RTE_ETH_RSS_FRAG_IPV6 | I40E_HASH_L23_RSS_MASK, + I40E_FILTER_PCTYPE_FRAG_IPV6), + I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6_TCP, - ETH_RSS_NONFRAG_IPV6_TCP | + RTE_ETH_RSS_NONFRAG_IPV6_TCP | I40E_HASH_IPV6_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV6_TCP), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6_UDP, - ETH_RSS_NONFRAG_IPV6_UDP | + RTE_ETH_RSS_NONFRAG_IPV6_UDP | I40E_HASH_IPV6_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV6_UDP), I40E_HASH_MAP_PATTERN(I40E_PHINT_IPV6_SCTP, - ETH_RSS_NONFRAG_IPV6_SCTP | + RTE_ETH_RSS_NONFRAG_IPV6_SCTP | I40E_HASH_IPV6_L234_RSS_MASK, I40E_FILTER_PCTYPE_NONF_IPV6_SCTP), /* ESP */ I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_ESP, - ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV4), + RTE_ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV4), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_ESP, - ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV6), + RTE_ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV6), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_UDP_ESP, - ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV4_UDP), + RTE_ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV4_UDP), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_UDP_ESP, - ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV6_UDP), + RTE_ETH_RSS_ESP, I40E_CUSTOMIZED_ESP_IPV6_UDP), /* GTPC */ I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_GTPC, @@ -308,27 +319,27 @@ static const struct i40e_hash_match_pattern match_patterns[] = { I40E_HASH_IPV4_L234_RSS_MASK, I40E_CUSTOMIZED_GTPU), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_GTPU_IPV4, - ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV4), + RTE_ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV4), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_GTPU_IPV6, - ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV6), + RTE_ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV6), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_GTPU, I40E_HASH_IPV6_L234_RSS_MASK, I40E_CUSTOMIZED_GTPU), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_GTPU_IPV4, - ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV4), + RTE_ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV4), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_GTPU_IPV6, - ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV6), + RTE_ETH_RSS_GTPU, I40E_CUSTOMIZED_GTPU_IPV6), /* L2TPV3 */ I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_L2TPV3, - ETH_RSS_L2TPV3, I40E_CUSTOMIZED_IPV4_L2TPV3), + RTE_ETH_RSS_L2TPV3, I40E_CUSTOMIZED_IPV4_L2TPV3), I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_L2TPV3, - ETH_RSS_L2TPV3, I40E_CUSTOMIZED_IPV6_L2TPV3), + RTE_ETH_RSS_L2TPV3, I40E_CUSTOMIZED_IPV6_L2TPV3), /* AH */ - I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_AH, ETH_RSS_AH, + I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV4_AH, RTE_ETH_RSS_AH, I40E_CUSTOMIZED_AH_IPV4), - I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_AH, ETH_RSS_AH, + I40E_HASH_MAP_CUS_PATTERN(I40E_PHINT_IPV6_AH, RTE_ETH_RSS_AH, I40E_CUSTOMIZED_AH_IPV6), }; @@ -564,29 +575,29 @@ i40e_hash_get_inset(uint64_t rss_types) /* If SRC_ONLY and DST_ONLY of the same level are used simultaneously, * it is the same case as none of them are added. */ - mask = rss_types & (ETH_RSS_L2_SRC_ONLY | ETH_RSS_L2_DST_ONLY); - if (mask == ETH_RSS_L2_SRC_ONLY) + mask = rss_types & (RTE_ETH_RSS_L2_SRC_ONLY | RTE_ETH_RSS_L2_DST_ONLY); + if (mask == RTE_ETH_RSS_L2_SRC_ONLY) inset &= ~I40E_INSET_DMAC; - else if (mask == ETH_RSS_L2_DST_ONLY) + else if (mask == RTE_ETH_RSS_L2_DST_ONLY) inset &= ~I40E_INSET_SMAC; - mask = rss_types & (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY); - if (mask == ETH_RSS_L3_SRC_ONLY) + mask = rss_types & (RTE_ETH_RSS_L3_SRC_ONLY | RTE_ETH_RSS_L3_DST_ONLY); + if (mask == RTE_ETH_RSS_L3_SRC_ONLY) inset &= ~(I40E_INSET_IPV4_DST | I40E_INSET_IPV6_DST); - else if (mask == ETH_RSS_L3_DST_ONLY) + else if (mask == RTE_ETH_RSS_L3_DST_ONLY) inset &= ~(I40E_INSET_IPV4_SRC | I40E_INSET_IPV6_SRC); - mask = rss_types & (ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY); - if (mask == ETH_RSS_L4_SRC_ONLY) + mask = rss_types & (RTE_ETH_RSS_L4_SRC_ONLY | RTE_ETH_RSS_L4_DST_ONLY); + if (mask == RTE_ETH_RSS_L4_SRC_ONLY) inset &= ~I40E_INSET_DST_PORT; - else if (mask == ETH_RSS_L4_DST_ONLY) + else if (mask == RTE_ETH_RSS_L4_DST_ONLY) inset &= ~I40E_INSET_SRC_PORT; if (rss_types & I40E_HASH_L4_TYPES) { uint64_t l3_mask = rss_types & - (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY); + (RTE_ETH_RSS_L3_SRC_ONLY | RTE_ETH_RSS_L3_DST_ONLY); uint64_t l4_mask = rss_types & - (ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY); + (RTE_ETH_RSS_L4_SRC_ONLY | RTE_ETH_RSS_L4_DST_ONLY); if (l3_mask && !l4_mask) inset &= ~(I40E_INSET_SRC_PORT | I40E_INSET_DST_PORT); @@ -732,7 +743,7 @@ i40e_hash_config_region(struct i40e_pf *pf, const struct i40e_rte_flow_rss_conf *rss_conf) { struct i40e_hw *hw = &pf->adapter->hw; - struct rte_eth_dev *dev = pf->adapter->eth_dev; + struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id]; struct i40e_queue_region_info *regions = pf->queue_region.region; uint32_t num = pf->queue_region.queue_region_number; uint32_t i, region_id_mask = 0; @@ -825,7 +836,7 @@ i40e_hash_config(struct i40e_pf *pf, /* Update lookup table */ if (rss_info->queue_num > 0) { - uint8_t lut[ETH_RSS_RETA_SIZE_512]; + uint8_t lut[RTE_ETH_RSS_RETA_SIZE_512]; uint32_t i, j = 0; for (i = 0; i < hw->func_caps.rss_table_size; i++) { @@ -932,7 +943,7 @@ i40e_hash_parse_queues(const struct rte_eth_dev *dev, "RSS key is ignored when queues specified"); pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); - if (pf->dev_data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_VMDQ_FLAG) + if (pf->dev_data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_VMDQ_FLAG) max_queue = i40e_pf_calc_configured_queues_num(pf); else max_queue = pf->dev_data->nb_rx_queues; @@ -1070,22 +1081,22 @@ i40e_hash_validate_rss_types(uint64_t rss_types) uint64_t type, mask; /* Validate L2 */ - type = ETH_RSS_ETH & rss_types; - mask = (ETH_RSS_L2_SRC_ONLY | ETH_RSS_L2_DST_ONLY) & rss_types; + type = RTE_ETH_RSS_ETH & rss_types; + mask = (RTE_ETH_RSS_L2_SRC_ONLY | RTE_ETH_RSS_L2_DST_ONLY) & rss_types; if (!type && mask) return false; /* Validate L3 */ - type = (I40E_HASH_L4_TYPES | ETH_RSS_IPV4 | ETH_RSS_FRAG_IPV4 | - ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_IPV6 | - ETH_RSS_FRAG_IPV6 | ETH_RSS_NONFRAG_IPV6_OTHER) & rss_types; - mask = (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY) & rss_types; + type = (I40E_HASH_L4_TYPES | RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_FRAG_IPV4 | + RTE_ETH_RSS_NONFRAG_IPV4_OTHER | RTE_ETH_RSS_IPV6 | + RTE_ETH_RSS_FRAG_IPV6 | RTE_ETH_RSS_NONFRAG_IPV6_OTHER) & rss_types; + mask = (RTE_ETH_RSS_L3_SRC_ONLY | RTE_ETH_RSS_L3_DST_ONLY) & rss_types; if (!type && mask) return false; /* Validate L4 */ - type = (I40E_HASH_L4_TYPES | ETH_RSS_PORT) & rss_types; - mask = (ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY) & rss_types; + type = (I40E_HASH_L4_TYPES | RTE_ETH_RSS_PORT) & rss_types; + mask = (RTE_ETH_RSS_L4_SRC_ONLY | RTE_ETH_RSS_L4_DST_ONLY) & rss_types; if (!type && mask) return false; @@ -1105,13 +1116,21 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev, NULL, "RSS Queues not supported when pattern specified"); - if (rss_act->func == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) + switch (rss_act->func) { + case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ: rss_conf->symmetric_enable = true; - else if (rss_act->func != RTE_ETH_HASH_FUNCTION_DEFAULT) - return rte_flow_error_set(error, -EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION_CONF, - NULL, - "Only symmetric TOEPLITZ supported when pattern specified"); + break; + case RTE_ETH_HASH_FUNCTION_DEFAULT: + case RTE_ETH_HASH_FUNCTION_TOEPLITZ: + case RTE_ETH_HASH_FUNCTION_SIMPLE_XOR: + break; + default: + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION_CONF, + NULL, + "RSS hash function not supported " + "when pattern specified"); + } if (!i40e_hash_validate_rss_types(rss_act->types)) return rte_flow_error_set(error, EINVAL, @@ -1262,6 +1281,7 @@ i40e_hash_reset_conf(struct i40e_pf *pf, struct i40e_rte_flow_rss_conf *rss_conf) { struct i40e_hw *hw = &pf->adapter->hw; + struct rte_eth_dev *dev; uint64_t inset; uint32_t idx; int ret; @@ -1275,8 +1295,8 @@ i40e_hash_reset_conf(struct i40e_pf *pf, } if (rss_conf->misc_reset_flags & I40E_HASH_FLOW_RESET_FLAG_REGION) { - ret = i40e_flush_queue_region_all_conf(pf->adapter->eth_dev, - hw, pf, 0); + dev = &rte_eth_devices[pf->dev_data->port_id]; + ret = i40e_flush_queue_region_all_conf(dev, hw, pf, 0); if (ret) return ret; @@ -1357,7 +1377,7 @@ i40e_hash_filter_flush(struct i40e_pf *pf) { struct rte_flow *flow, *next; - TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, next) { + RTE_TAILQ_FOREACH_SAFE(flow, &pf->flow_list, node, next) { if (flow->filter_type != RTE_ETH_FILTER_HASH) continue;