X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_ethdev.c;h=dad808dae7d10f64ef4d475fe2cd023e8740e5ba;hb=4f667bb0152ff5400b0580dc6893d7c596deb1d5;hp=e117f51a27ad9981a5c2c3fdc2776ece977dcdb9;hpb=c13af5f28fc4c2211bce23df8a7f4fa68d18b5b8;p=dpdk.git diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index e117f51a27..dad808dae7 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -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 */ @@ -3062,7 +3068,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP) { cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV4; + cfg.hash_flds = ICE_HASH_UDP_IPV4; ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); if (ret) PMD_DRV_LOG(ERR, "%s GTPU_IPV4_UDP rss flow fail %d", @@ -3086,7 +3092,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) { cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV6; + cfg.hash_flds = ICE_HASH_UDP_IPV6; ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); if (ret) PMD_DRV_LOG(ERR, "%s GTPU_IPV6_UDP rss flow fail %d", @@ -3110,7 +3116,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP) { cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV4; + cfg.hash_flds = ICE_HASH_TCP_IPV4; ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); if (ret) PMD_DRV_LOG(ERR, "%s GTPU_IPV4_TCP rss flow fail %d", @@ -3134,7 +3140,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP) { cfg.addl_hdrs = ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER; - cfg.hash_flds = ICE_FLOW_HASH_IPV6; + cfg.hash_flds = ICE_HASH_TCP_IPV6; ret = ice_add_rss_cfg_wrap(pf, vsi->idx, &cfg); if (ret) PMD_DRV_LOG(ERR, "%s GTPU_IPV6_TCP rss flow fail %d", @@ -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; } @@ -3210,6 +3182,12 @@ static int ice_init_rss(struct ice_pf *pf) vsi->rss_key_size = ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE; vsi->rss_lut_size = pf->hash_lut_size; + if (nb_q == 0) { + PMD_DRV_LOG(WARNING, + "RSS is not supported as rx queues number is zero\n"); + return 0; + } + if (is_safe_mode) { PMD_DRV_LOG(WARNING, "RSS is not supported in safe mode\n"); return 0; @@ -3868,8 +3846,8 @@ ice_force_phys_link_state(struct ice_hw *hw, bool link_up) if (!pcaps) return ICE_ERR_NO_MEMORY; - status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_SW_CFG, pcaps, - NULL); + status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_ACTIVE_CFG, + pcaps, NULL); if (status) goto out;