#include <rte_common.h>
#include <rte_debug.h>
+#include <rte_alarm.h>
#include <rte_atomic.h>
#include <rte_eal.h>
#include <rte_ether.h>
VIRTCHNL_ETHER_ADDR_PRIMARY :
VIRTCHNL_ETHER_ADDR_EXTRA);
PMD_DRV_LOG(DEBUG, "add/rm mac:" RTE_ETHER_ADDR_PRT_FMT,
- addr->addr_bytes[0], addr->addr_bytes[1],
- addr->addr_bytes[2], addr->addr_bytes[3],
- addr->addr_bytes[4], addr->addr_bytes[5]);
+ RTE_ETHER_ADDR_BYTES(addr));
j++;
}
list->vsi_id = vf->vsi_res->vsi_id;
for (i = 0; i < mc_addrs_num; i++) {
if (!IAVF_IS_MULTICAST(mc_addrs[i].addr_bytes)) {
PMD_DRV_LOG(ERR, "Invalid mac:" RTE_ETHER_ADDR_PRT_FMT,
- mc_addrs[i].addr_bytes[0],
- mc_addrs[i].addr_bytes[1],
- mc_addrs[i].addr_bytes[2],
- mc_addrs[i].addr_bytes[3],
- mc_addrs[i].addr_bytes[4],
- mc_addrs[i].addr_bytes[5]);
+ RTE_ETHER_ADDR_BYTES(&mc_addrs[i]));
return -EINVAL;
}
args.out_buffer = vf->aq_resp;
args.out_size = IAVF_AQ_BUF_SZ;
- /*
- * disable interrupt to avoid the admin queue message to be read
- * before iavf_read_msg_from_pf.
- */
- rte_intr_disable(&pci_dev->intr_handle);
- err = iavf_execute_vf_cmd(adapter, &args);
- rte_intr_enable(&pci_dev->intr_handle);
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) {
+ /* disable interrupt to avoid the admin queue message to be read
+ * before iavf_read_msg_from_pf.
+ */
+ rte_intr_disable(&pci_dev->intr_handle);
+ err = iavf_execute_vf_cmd(adapter, &args);
+ rte_intr_enable(&pci_dev->intr_handle);
+ } else {
+ rte_eal_alarm_cancel(iavf_dev_alarm_handler, dev);
+ err = iavf_execute_vf_cmd(adapter, &args);
+ rte_eal_alarm_set(IAVF_ALARM_INTERVAL,
+ iavf_dev_alarm_handler, dev);
+ }
+
if (err) {
PMD_DRV_LOG(ERR, "fail to execute command OP_REQUEST_QUEUES");
return err;