net/bnxt: support Thor WC TCAM
[dpdk.git] / drivers / net / igc / igc_ethdev.c
index 56d1024..224a095 100644 (file)
@@ -341,6 +341,9 @@ eth_igc_configure(struct rte_eth_dev *dev)
 
        PMD_INIT_FUNC_TRACE();
 
+       if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+               dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+
        ret  = igc_check_mq_mode(dev);
        if (ret != 0)
                return ret;
@@ -986,15 +989,20 @@ eth_igc_start(struct rte_eth_dev *dev)
                hw->mac.autoneg = 1;
        } else {
                int num_speeds = 0;
-               bool autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0;
 
-               /* Reset */
+               if (*speeds & ETH_LINK_SPEED_FIXED) {
+                       PMD_DRV_LOG(ERR,
+                                   "Force speed mode currently not supported");
+                       igc_dev_clear_queues(dev);
+                       return -EINVAL;
+               }
+
                hw->phy.autoneg_advertised = 0;
+               hw->mac.autoneg = 1;
 
                if (*speeds & ~(ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |
                                ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |
-                               ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G |
-                               ETH_LINK_SPEED_FIXED)) {
+                               ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G)) {
                        num_speeds = -1;
                        goto error_invalid_config;
                }
@@ -1022,19 +1030,8 @@ eth_igc_start(struct rte_eth_dev *dev)
                        hw->phy.autoneg_advertised |= ADVERTISE_2500_FULL;
                        num_speeds++;
                }
-               if (num_speeds == 0 || (!autoneg && num_speeds > 1))
+               if (num_speeds == 0)
                        goto error_invalid_config;
-
-               /* Set/reset the mac.autoneg based on the link speed,
-                * fixed or not
-                */
-               if (!autoneg) {
-                       hw->mac.autoneg = 0;
-                       hw->mac.forced_speed_duplex =
-                                       hw->phy.autoneg_advertised;
-               } else {
-                       hw->mac.autoneg = 1;
-               }
        }
 
        igc_setup_link(hw);
@@ -1473,9 +1470,11 @@ eth_igc_fw_version_get(struct rte_eth_dev *dev, char *fw_version,
                                 fw.eep_build);
                }
        }
+       if (ret < 0)
+               return -EINVAL;
 
        ret += 1; /* add the size of '\0' */
-       if (fw_size < (u32)ret)
+       if (fw_size < (size_t)ret)
                return ret;
        else
                return 0;
@@ -1901,8 +1900,7 @@ eth_igc_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *rte_stats)
 
        /* Rx Errors */
        rte_stats->imissed = stats->mpc;
-       rte_stats->ierrors = stats->crcerrs +
-                       stats->rlec + stats->ruc + stats->roc +
+       rte_stats->ierrors = stats->crcerrs + stats->rlec +
                        stats->rxerrc + stats->algnerrc;
 
        /* Tx Errors */