Thread (367 messages) 367 messages, 12 authors, 2017-01-18

Re: [PATCH v7 06/27] net/i40e: set VF unicast promisc mode from PF

From: Wu, Jingjing <hidden>
Date: 2017-01-06 00:32:34

quoted hunk ↗ jump to hunk
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wenzhuo Lu
Sent: Tuesday, January 3, 2017 2:54 PM
To: dev@dpdk.org
Cc: Lu, Wenzhuo <redacted>
Subject: [dpdk-dev] [PATCH v7 06/27] net/i40e: set VF unicast promisc mode
from PF

Support enabling/disabling VF unicast promiscuous mode from PF.
User can call the API on PF to enable/disable a specific VF's unicast promiscuous
mode.

Signed-off-by: Wenzhuo Lu <redacted>
---
 drivers/net/i40e/i40e_ethdev.c            | 39
+++++++++++++++++++++++++++++++
 drivers/net/i40e/rte_pmd_i40e.h           | 19 +++++++++++++++
 drivers/net/i40e/rte_pmd_i40e_version.map |  1 +
 3 files changed, 59 insertions(+)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index a5d6d05..3d7ee03 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -10120,3 +10120,42 @@ static void i40e_set_default_mac_addr(struct
rte_eth_dev *dev,

 	return ret;
 }
+
+int
+rte_pmd_i40e_set_vf_unicast_promisc(uint8_t port, uint16_t vf_id,
+uint8_t on) {
+	struct rte_eth_dev *dev;
+	struct rte_eth_dev_info dev_info;
+	struct i40e_pf *pf;
+	struct i40e_vsi *vsi;
+	struct i40e_hw *hw;
+	int ret;
+
+	RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV);
+
+	dev = &rte_eth_devices[port];
+	rte_eth_dev_info_get(port, &dev_info);
+
+	if (vf_id >= dev_info.max_vfs)
+		return -EINVAL;
+
+	pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+
+	if (vf_id > pf->vf_num - 1 || !pf->vfs) {
+		PMD_DRV_LOG(ERR, "Invalid argument.");
+		return -EINVAL;
+	}
Same comments as previous patches.
+	vsi = pf->vfs[vf_id].vsi;
+	if (!vsi)
+		return -EINVAL;
+
+	hw = I40E_VSI_TO_HW(vsi);
+
+	ret = i40e_aq_set_vsi_unicast_promiscuous(hw, vsi->seid,
+						  on, NULL, true);
+	if (ret != I40E_SUCCESS)
+		PMD_DRV_LOG(ERR, "Failed to set unicast promiscuous mode");
+
+	return ret;
ret is the error code defined in i40e driver, please use the error code in eth dev lib.

Thanks
Jingjing
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help