]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
cxgb4: when max_tx_rate is 0 disable tx rate limiting
authorGanesh Goudar <ganeshgr@chelsio.com>
Mon, 3 Sep 2018 10:51:46 +0000 (16:21 +0530)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Sep 2018 05:09:57 +0000 (22:09 -0700)
in ndo_set_vf_rate() when max_tx_rate is 0 disable tx
rate limiting for that vf.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c

index 961e3087d1d38c3294c5e49c0fab9f1922bf15b9..2e1e286c74accce2106a7706191d67dfb8dade7f 100644 (file)
@@ -2749,6 +2749,27 @@ static int cxgb4_mgmt_set_vf_rate(struct net_device *dev, int vf,
                return -EINVAL;
        }
 
+       if (max_tx_rate == 0) {
+               /* unbind VF to to any Traffic Class */
+               fw_pfvf =
+                   (FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_PFVF) |
+                    FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_PFVF_SCHEDCLASS_ETH));
+               fw_class = 0xffffffff;
+               ret = t4_set_params(adap, adap->mbox, adap->pf, vf + 1, 1,
+                                   &fw_pfvf, &fw_class);
+               if (ret) {
+                       dev_err(adap->pdev_dev,
+                               "Err %d in unbinding PF %d VF %d from TX Rate Limiting\n",
+                               ret, adap->pf, vf);
+                       return -EINVAL;
+               }
+               dev_info(adap->pdev_dev,
+                        "PF %d VF %d is unbound from TX Rate Limiting\n",
+                        adap->pf, vf);
+               adap->vfinfo[vf].tx_rate = 0;
+               return 0;
+       }
+
        ret = t4_get_link_params(pi, &link_ok, &speed, &mtu);
        if (ret != FW_SUCCESS) {
                dev_err(adap->pdev_dev,
@@ -2798,8 +2819,8 @@ static int cxgb4_mgmt_set_vf_rate(struct net_device *dev, int vf,
                            &fw_class);
        if (ret) {
                dev_err(adap->pdev_dev,
-                       "Err %d in binding VF %d to Traffic Class %d\n",
-                       ret, vf, class_id);
+                       "Err %d in binding PF %d VF %d to Traffic Class %d\n",
+                       ret, adap->pf, vf, class_id);
                return -EINVAL;
        }
        dev_info(adap->pdev_dev, "PF %d VF %d is bound to Class %d\n",