X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_ethdev.c;h=1e15cd3960aa2c76deb86758e4d8e86b9ea5fb17;hb=938eb2369356b6a47cb458d2d69be3041f92e2ea;hp=083a1b5b6332ca323d07256c74f1442301cb9351;hpb=16187528a923df2abadd5bbb5b992ef48884001b;p=dpdk.git diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 083a1b5b63..1e15cd3960 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -33,7 +33,7 @@ static const char * const ice_valid_args[] = { }; static const struct rte_mbuf_dynfield ice_proto_xtr_metadata_param = { - .name = "ice_dynfield_proto_xtr_metadata", + .name = "intel_pmd_dynfield_proto_xtr_metadata", .size = sizeof(uint32_t), .align = __alignof__(uint32_t), .flags = 0, @@ -49,22 +49,22 @@ static bool ice_proto_xtr_hw_support[PROTO_XTR_MAX]; static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { [PROTO_XTR_VLAN] = { - .param = { .name = "ice_dynflag_proto_xtr_vlan" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_vlan" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_vlan_mask }, [PROTO_XTR_IPV4] = { - .param = { .name = "ice_dynflag_proto_xtr_ipv4" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_ipv4" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_ipv4_mask }, [PROTO_XTR_IPV6] = { - .param = { .name = "ice_dynflag_proto_xtr_ipv6" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_ipv6" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_ipv6_mask }, [PROTO_XTR_IPV6_FLOW] = { - .param = { .name = "ice_dynflag_proto_xtr_ipv6_flow" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_ipv6_flow" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_ipv6_flow_mask }, [PROTO_XTR_TCP] = { - .param = { .name = "ice_dynflag_proto_xtr_tcp" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_tcp" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_tcp_mask }, [PROTO_XTR_IP_OFFSET] = { - .param = { .name = "ice_dynflag_proto_xtr_ip_offset" }, + .param = { .name = "intel_pmd_dynflag_proto_xtr_ip_offset" }, .ol_flag = &rte_net_ice_dynflag_proto_xtr_ip_offset_mask }, }; @@ -2909,6 +2909,7 @@ ice_add_rss_cfg_wrap(struct ice_pf *pf, uint16_t vsi_id, static void ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) { + struct ice_hw *hw = ICE_PF_TO_HW(pf); struct ice_vsi *vsi = pf->main_vsi; struct ice_rss_hash_cfg cfg; int ret; @@ -2923,6 +2924,11 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) ETH_RSS_NONFRAG_IPV4_SCTP | \ ETH_RSS_NONFRAG_IPV6_SCTP) + ret = ice_rem_vsi_rss_cfg(hw, vsi->idx); + if (ret) + PMD_DRV_LOG(ERR, "%s Remove rss vsi fail %d", + __func__, ret); + cfg.symm = 0; cfg.hdr_type = ICE_RSS_ANY_HEADERS; /* Configure RSS for IPv4 with src/dst addr as input set */ @@ -3155,40 +3161,6 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) __func__, ret); } - if (rss_hf & ETH_RSS_NONFRAG_IPV4_SCTP) { - cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_SCTP | - ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV4; - ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); - if (ret) - PMD_DRV_LOG(ERR, "%s GTPU_IPV4_SCTP rss flow fail %d", - __func__, ret); - - cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_SCTP | - ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER; - ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); - if (ret) - PMD_DRV_LOG(ERR, "%s GTPU_EH_IPV4_SCTP rss flow fail %d", - __func__, ret); - } - - if (rss_hf & ETH_RSS_NONFRAG_IPV6_SCTP) { - cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_SCTP | - ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV6; - ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); - if (ret) - PMD_DRV_LOG(ERR, "%s GTPU_IPV6_SCTP rss flow fail %d", - __func__, ret); - - cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_SCTP | - ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER; - ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); - if (ret) - PMD_DRV_LOG(ERR, "%s GTPU_EH_IPV6_SCTP rss flow fail %d", - __func__, ret); - } - pf->rss_hf = rss_hf & ICE_RSS_HF_ALL; } @@ -3197,6 +3169,7 @@ static int ice_init_rss(struct ice_pf *pf) struct ice_hw *hw = ICE_PF_TO_HW(pf); struct ice_vsi *vsi = pf->main_vsi; struct rte_eth_dev *dev = pf->adapter->eth_dev; + struct ice_aq_get_set_rss_lut_params lut_params; struct rte_eth_rss_conf *rss_conf; struct ice_aqc_get_set_rss_keys key; uint16_t i, nb_q; @@ -3251,9 +3224,12 @@ static int ice_init_rss(struct ice_pf *pf) for (i = 0; i < vsi->rss_lut_size; i++) vsi->rss_lut[i] = i % nb_q; - ret = ice_aq_set_rss_lut(hw, vsi->idx, - ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF, - vsi->rss_lut, vsi->rss_lut_size); + lut_params.vsi_handle = vsi->idx; + lut_params.lut_size = vsi->rss_lut_size; + lut_params.lut_type = ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF; + lut_params.lut = vsi->rss_lut; + lut_params.global_lut_id = 0; + ret = ice_aq_set_rss_lut(hw, &lut_params); if (ret) goto out; @@ -4178,6 +4154,7 @@ ice_vlan_offload_set(struct rte_eth_dev *dev, int mask) static int ice_get_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size) { + struct ice_aq_get_set_rss_lut_params lut_params; struct ice_pf *pf = ICE_VSI_TO_PF(vsi); struct ice_hw *hw = ICE_VSI_TO_HW(vsi); int ret; @@ -4186,8 +4163,12 @@ ice_get_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size) return -EINVAL; if (pf->flags & ICE_FLAG_RSS_AQ_CAPABLE) { - ret = ice_aq_get_rss_lut(hw, vsi->idx, - ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF, lut, lut_size); + lut_params.vsi_handle = vsi->idx; + lut_params.lut_size = lut_size; + lut_params.lut_type = ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF; + lut_params.lut = lut; + lut_params.global_lut_id = 0; + ret = ice_aq_get_rss_lut(hw, &lut_params); if (ret) { PMD_DRV_LOG(ERR, "Failed to get RSS lookup table"); return -EINVAL; @@ -4206,6 +4187,7 @@ ice_get_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size) static int ice_set_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size) { + struct ice_aq_get_set_rss_lut_params lut_params; struct ice_pf *pf; struct ice_hw *hw; int ret; @@ -4217,8 +4199,12 @@ ice_set_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size) hw = ICE_VSI_TO_HW(vsi); if (pf->flags & ICE_FLAG_RSS_AQ_CAPABLE) { - ret = ice_aq_set_rss_lut(hw, vsi->idx, - ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF, lut, lut_size); + lut_params.vsi_handle = vsi->idx; + lut_params.lut_size = lut_size; + lut_params.lut_type = ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF; + lut_params.lut = lut; + lut_params.global_lut_id = 0; + ret = ice_aq_set_rss_lut(hw, &lut_params); if (ret) { PMD_DRV_LOG(ERR, "Failed to set RSS lookup table"); return -EINVAL;