i40evf: don't round Tx rate down to 0
authorMitch Williams <mitch.a.williams@intel.com>
Wed, 9 Apr 2014 05:58:56 +0000 (05:58 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 29 May 2014 09:22:07 +0000 (02:22 -0700)
Because the hardware configures VF Tx rates in increments of 50 Mbps,
values smaller than that would be rounded down to 0, which was
interpreted as no limit at all. Rather than do this, we round up to 50
Mbps and notify the user.

Change-ID: I5275848233fe7514cf93e11323661c68f4c38737
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 7ab40ffd5a54d88b01e81b3b88992b0bcd300a65..395c546166c30f94dc86fd21d7f52717b6ee4158 100644 (file)
@@ -2258,6 +2258,11 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,
                goto error;
        }
 
+       if ((max_tx_rate < 50) && (max_tx_rate > 0)) {
+               dev_warn(&pf->pdev->dev, "Setting max Tx rate to minimum usable value of 50Mbps.\n");
+               max_tx_rate = 50;
+       }
+
        /* Tx rate credits are in values of 50Mbps, 0 is disabled*/
        ret = i40e_aq_config_vsi_bw_limit(&pf->hw, vsi->seid, max_tx_rate / 50,
                                          0, NULL);