diff options
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 10f2313edbe7..fe702c1c866d 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -978,18 +978,22 @@ static int be_set_vf_tx_rate(struct net_device *netdev, | |||
978 | if (!sriov_enabled(adapter)) | 978 | if (!sriov_enabled(adapter)) |
979 | return -EPERM; | 979 | return -EPERM; |
980 | 980 | ||
981 | if (vf >= adapter->num_vfs || rate < 0) | 981 | if (vf >= adapter->num_vfs) |
982 | return -EINVAL; | 982 | return -EINVAL; |
983 | 983 | ||
984 | if (rate > 10000) | 984 | if (rate < 100 || rate > 10000) { |
985 | rate = 10000; | 985 | dev_err(&adapter->pdev->dev, |
986 | "tx rate must be between 100 and 10000 Mbps\n"); | ||
987 | return -EINVAL; | ||
988 | } | ||
986 | 989 | ||
987 | adapter->vf_cfg[vf].tx_rate = rate; | ||
988 | status = be_cmd_set_qos(adapter, rate / 10, vf + 1); | 990 | status = be_cmd_set_qos(adapter, rate / 10, vf + 1); |
989 | 991 | ||
990 | if (status) | 992 | if (status) |
991 | dev_info(&adapter->pdev->dev, | 993 | dev_err(&adapter->pdev->dev, |
992 | "tx rate %d on VF %d failed\n", rate, vf); | 994 | "tx rate %d on VF %d failed\n", rate, vf); |
995 | else | ||
996 | adapter->vf_cfg[vf].tx_rate = rate; | ||
993 | return status; | 997 | return status; |
994 | } | 998 | } |
995 | 999 | ||