net/iavf: improve default RSS
[dpdk.git] / drivers / net / iavf / iavf_vchnl.c
index 33d03af..25d5cda 100644 (file)
@@ -644,12 +644,12 @@ iavf_enable_queues_lv(struct iavf_adapter *adapter)
        args.out_buffer = vf->aq_resp;
        args.out_size = IAVF_AQ_BUF_SZ;
        err = iavf_execute_vf_cmd(adapter, &args);
-       if (err) {
+       if (err)
                PMD_DRV_LOG(ERR,
                            "Failed to execute command of OP_ENABLE_QUEUES_V2");
-               return err;
-       }
-       return 0;
+
+       rte_free(queue_select);
+       return err;
 }
 
 int
@@ -688,12 +688,12 @@ iavf_disable_queues_lv(struct iavf_adapter *adapter)
        args.out_buffer = vf->aq_resp;
        args.out_size = IAVF_AQ_BUF_SZ;
        err = iavf_execute_vf_cmd(adapter, &args);
-       if (err) {
+       if (err)
                PMD_DRV_LOG(ERR,
                            "Failed to execute command of OP_DISABLE_QUEUES_V2");
-               return err;
-       }
-       return 0;
+
+       rte_free(queue_select);
+       return err;
 }
 
 int
@@ -737,6 +737,8 @@ iavf_switch_queue_lv(struct iavf_adapter *adapter, uint16_t qid,
        if (err)
                PMD_DRV_LOG(ERR, "Failed to execute command of %s",
                            on ? "OP_ENABLE_QUEUES_V2" : "OP_DISABLE_QUEUES_V2");
+
+       rte_free(queue_select);
        return err;
 }
 
@@ -1341,6 +1343,29 @@ iavf_add_del_rss_cfg(struct iavf_adapter *adapter,
        return err;
 }
 
+int
+iavf_set_hena(struct iavf_adapter *adapter, uint64_t hena)
+{
+       struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
+       struct virtchnl_rss_hena vrh;
+       struct iavf_cmd_info args;
+       int err;
+
+       vrh.hena = hena;
+       args.ops = VIRTCHNL_OP_SET_RSS_HENA;
+       args.in_args = (u8 *)&vrh;
+       args.in_args_size = sizeof(vrh);
+       args.out_buffer = vf->aq_resp;
+       args.out_size = IAVF_AQ_BUF_SZ;
+
+       err = iavf_execute_vf_cmd(adapter, &args);
+       if (err)
+               PMD_DRV_LOG(ERR,
+                           "Failed to execute command of OP_SET_RSS_HENA");
+
+       return err;
+}
+
 int
 iavf_add_del_mc_addr_list(struct iavf_adapter *adapter,
                        struct rte_ether_addr *mc_addrs,