git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/iavf: fix adding multicast MAC address
[dpdk.git]
/
drivers
/
net
/
iavf
/
iavf_vchnl.c
diff --git
a/drivers/net/iavf/iavf_vchnl.c
b/drivers/net/iavf/iavf_vchnl.c
index
69e1dc7
..
a2295f8
100644
(file)
--- a/
drivers/net/iavf/iavf_vchnl.c
+++ b/
drivers/net/iavf/iavf_vchnl.c
@@
-73,6
+73,9
@@
iavf_execute_vf_cmd(struct iavf_adapter *adapter, struct iavf_cmd_info *args)
int err = 0;
int i = 0;
int err = 0;
int i = 0;
+ if (vf->vf_reset)
+ return -EIO;
+
if (_atomic_set_cmd(vf, args->ops))
return -1;
if (_atomic_set_cmd(vf, args->ops))
return -1;
@@
-186,6
+189,7
@@
iavf_handle_pf_event_msg(struct rte_eth_dev *dev, uint8_t *msg,
switch (pf_msg->event) {
case VIRTCHNL_EVENT_RESET_IMPENDING:
PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_RESET_IMPENDING event");
switch (pf_msg->event) {
case VIRTCHNL_EVENT_RESET_IMPENDING:
PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_RESET_IMPENDING event");
+ vf->vf_reset = true;
rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET,
NULL);
break;
rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET,
NULL);
break;
@@
-838,10
+842,19
@@
iavf_config_promisc(struct iavf_adapter *adapter,
err = iavf_execute_vf_cmd(adapter, &args);
err = iavf_execute_vf_cmd(adapter, &args);
- if (err)
+ if (err)
{
PMD_DRV_LOG(ERR,
"fail to execute command CONFIG_PROMISCUOUS_MODE");
PMD_DRV_LOG(ERR,
"fail to execute command CONFIG_PROMISCUOUS_MODE");
- return err;
+
+ if (err == IAVF_NOT_SUPPORTED)
+ return -ENOTSUP;
+
+ return -EAGAIN;
+ }
+
+ vf->promisc_unicast_enabled = enable_unicast;
+ vf->promisc_multicast_enabled = enable_multicast;
+ return 0;
}
int
}
int
@@
-1094,9
+1107,6
@@
iavf_add_del_mc_addr_list(struct iavf_adapter *adapter,
if (mc_addrs == NULL || mc_addrs_num == 0)
return 0;
if (mc_addrs == NULL || mc_addrs_num == 0)
return 0;
- if (mc_addrs_num > IAVF_NUM_MACADDR_MAX)
- return -EINVAL;
-
list = (struct virtchnl_ether_addr_list *)cmd_buffer;
list->vsi_id = vf->vsi_res->vsi_id;
list->num_elements = mc_addrs_num;
list = (struct virtchnl_ether_addr_list *)cmd_buffer;
list->vsi_id = vf->vsi_res->vsi_id;
list->num_elements = mc_addrs_num;