All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] support setting i40e VF MAC address from DPDK host side
@ 2016-01-28  8:40 Helin Zhang
  2016-01-28  8:40 ` [PATCH 1/3] i40e: add setting VF MAC address in DPDK PF host Helin Zhang
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Helin Zhang @ 2016-01-28  8:40 UTC (permalink / raw)
  To: dev

It adds pre-setting i40e VF MAC addresses from DPDK PF host side,
during host port initialization, by introduing a new port
configuration element. It then can pre-set VF MAC addresses
before any launching VFs, and the VF MAC addresses will not be
random each time launching a VF.
There should be no ABI broken, as ABI changes
in 'struct rte_eth_conf' has already been announced in R2.2.

Helin Zhang (3):
  i40e: add setting VF MAC address in DPDK PF host
  i40evf: use ether interface for validating MAC address
  app/testpmd: set default MAC addresses for each VF

 app/test-pmd/testpmd.c               | 19 +++++++++++++++++++
 doc/guides/rel_notes/release_2_3.rst |  9 +++++++++
 drivers/net/i40e/i40e_ethdev.c       | 21 +++++++++++++++++++++
 drivers/net/i40e/i40e_ethdev.h       |  1 +
 drivers/net/i40e/i40e_ethdev_vf.c    | 14 +++++++-------
 drivers/net/i40e/i40e_pf.c           |  2 ++
 lib/librte_ether/rte_ethdev.h        | 10 ++++++++++
 7 files changed, 69 insertions(+), 7 deletions(-)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] i40e: add setting VF MAC address in DPDK PF host
  2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
@ 2016-01-28  8:40 ` Helin Zhang
  2016-01-28  8:40 ` [PATCH 2/3] i40evf: use ether interface for validating MAC address Helin Zhang
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Helin Zhang @ 2016-01-28  8:40 UTC (permalink / raw)
  To: dev

It adds pre-setting the VF MAC addresses from DPDK PF host
side before any VF being initialized, by introducing a new
element of 'struct rte_vf_conf' in 'struct rte_eth_conf'.
It supports up to 128 VFs per physical port of setting VF
MAC addresses.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 doc/guides/rel_notes/release_2_3.rst |  9 +++++++++
 drivers/net/i40e/i40e_ethdev.c       | 21 +++++++++++++++++++++
 drivers/net/i40e/i40e_ethdev.h       |  1 +
 drivers/net/i40e/i40e_pf.c           |  2 ++
 lib/librte_ether/rte_ethdev.h        | 10 ++++++++++
 5 files changed, 43 insertions(+)

diff --git a/doc/guides/rel_notes/release_2_3.rst b/doc/guides/rel_notes/release_2_3.rst
index 99de186..8ba3594 100644
--- a/doc/guides/rel_notes/release_2_3.rst
+++ b/doc/guides/rel_notes/release_2_3.rst
@@ -4,6 +4,11 @@ DPDK Release 2.3
 New Features
 ------------
 
+* **Added setting default MAC address for i40e VF.**
+
+  Added setting default MAC address for i40e VF before in PF host
+  driver, by providing those MAC addresses in PF port configuration.
+
 
 Resolved Issues
 ---------------
@@ -39,6 +44,10 @@ API Changes
 ABI Changes
 -----------
 
+* The ethdev structure of ``rte_eth_dev``, ``rte_eth_dev_data`` and
+  ``rte_eth_conf`` were changed to support setting default MAC address
+  for i40e VF, by DPDK PF host.
+
 
 Shared Library Versions
 -----------------------
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index bf6220d..f7cec39 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -1020,6 +1020,7 @@ i40e_dev_configure(struct rte_eth_dev *dev)
 		I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	enum rte_eth_rx_mq_mode mq_mode = dev->data->dev_conf.rxmode.mq_mode;
+	struct ether_addr *p_mac_addr;
 	int i, ret;
 
 	/* Initialize to TRUE. If any of Rx queues doesn't meet the
@@ -1074,6 +1075,26 @@ i40e_dev_configure(struct rte_eth_dev *dev)
 		}
 	}
 
+	/* Store the configured VF MAC address */
+	for (i = 0; i < RTE_MIN(pf->vf_num, ETH_VF_NUM_MAX); i++) {
+		p_mac_addr = &(dev->data->dev_conf.vf_conf[i].mac_addr);
+		if (is_valid_assigned_ether_addr(p_mac_addr)) {
+			ether_addr_copy(p_mac_addr, &(pf->vfs[i].mac_addr));
+			PMD_DRV_LOG(INFO, "MAC address "
+				    "%02x:%02x:%02x:%02x:%02x:%02x will be "
+				    "used as default address of VF[%d]",
+				    p_mac_addr->addr_bytes[0],
+				    p_mac_addr->addr_bytes[1],
+				    p_mac_addr->addr_bytes[2],
+				    p_mac_addr->addr_bytes[3],
+				    p_mac_addr->addr_bytes[4],
+				    p_mac_addr->addr_bytes[5], i);
+		} else {
+			PMD_DRV_LOG(WARNING, "Invalid MAC address configured "
+				    "for VF[%d], use zero instead", i);
+		}
+	}
+
 	return 0;
 
 err_dcb:
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index 1f9792b..66aad4d 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -312,6 +312,7 @@ struct i40e_pf_vf {
 	uint16_t vf_idx; /* VF index in pf->vfs */
 	uint16_t lan_nb_qps; /* Actual queues allocated */
 	uint16_t reset_cnt; /* Total vf reset times */
+	struct ether_addr mac_addr;  /* Default MAC address */
 };
 
 /*
diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index cbf4e5b..be7cbf7 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -315,6 +315,8 @@ i40e_pf_host_process_cmd_get_vf_resource(struct i40e_pf_vf *vf)
 	/* As assume Vf only has single VSI now, always return 0 */
 	vf_res->vsi_res[0].vsi_id = 0;
 	vf_res->vsi_res[0].num_queue_pairs = vf->vsi->nb_qps;
+	ether_addr_copy(&vf->mac_addr,
+		(struct ether_addr *)vf_res->vsi_res[0].default_mac_addr);
 
 send_msg:
 	i40e_pf_host_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_VF_RESOURCES,
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index bada8ad..88f1d9b 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -754,6 +754,15 @@ struct rte_intr_conf {
 	uint16_t rxq;
 };
 
+#define ETH_VF_NUM_MAX 128 /* Maximum number of Virtual Functions supported */
+
+/**
+ * A structure to define VF configurations to be used in PF host driver.
+ */
+struct rte_vf_conf {
+	struct ether_addr mac_addr; /* Pre-configured VF MAC address. */
+};
+
 /**
  * A structure used to configure an Ethernet port.
  * Depending upon the RX multi-queue mode, extra advanced
@@ -793,6 +802,7 @@ struct rte_eth_conf {
 	uint32_t dcb_capability_en;
 	struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */
 	struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */
+	struct rte_vf_conf vf_conf[ETH_VF_NUM_MAX]; /**< VF configuration. */
 };
 
 /**
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] i40evf: use ether interface for validating MAC address
  2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
  2016-01-28  8:40 ` [PATCH 1/3] i40e: add setting VF MAC address in DPDK PF host Helin Zhang
@ 2016-01-28  8:40 ` Helin Zhang
  2016-01-28  8:40 ` [PATCH 3/3] app/testpmd: set default MAC addresses for each VF Helin Zhang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Helin Zhang @ 2016-01-28  8:40 UTC (permalink / raw)
  To: dev

It uses ether interface of 'is_valid_assigned_ether_addr' for
validating MAC address. In the meanwhile, more annotations are
added for obtaining/generating VF MAC address.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 14d2a50..2a54596 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1180,6 +1180,7 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 	int i, err, bufsz;
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
+	struct ether_addr *p_mac_addr;
 
 	vf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	vf->dev_data = dev->data;
@@ -1249,13 +1250,12 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 	vf->vsi.nb_qps = vf->vsi_res->num_queue_pairs;
 	vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 
-	/* check mac addr, if it's not valid, genrate one */
-	if (I40E_SUCCESS != i40e_validate_mac_addr(\
-			vf->vsi_res->default_mac_addr))
-		eth_random_addr(vf->vsi_res->default_mac_addr);
-
-	ether_addr_copy((struct ether_addr *)vf->vsi_res->default_mac_addr,
-					(struct ether_addr *)hw->mac.addr);
+	/* Store the MAC address configured by host, or generate random one */
+	p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr);
+	if (is_valid_assigned_ether_addr(p_mac_addr)) /* Configured by host */
+		ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr);
+	else
+		eth_random_addr(hw->mac.addr); /* Generate a random one */
 
 	return 0;
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] app/testpmd: set default MAC addresses for each VF
  2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
  2016-01-28  8:40 ` [PATCH 1/3] i40e: add setting VF MAC address in DPDK PF host Helin Zhang
  2016-01-28  8:40 ` [PATCH 2/3] i40evf: use ether interface for validating MAC address Helin Zhang
@ 2016-01-28  8:40 ` Helin Zhang
  2016-02-26  8:14 ` [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Pei, Yulong
  2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
  4 siblings, 0 replies; 10+ messages in thread
From: Helin Zhang @ 2016-01-28  8:40 UTC (permalink / raw)
  To: dev

It generates MAC addresses during host port initialization, which
will be set as default MAC addresses for corresponding VFs.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 app/test-pmd/testpmd.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 1319917..f7aac81 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1762,6 +1762,23 @@ rxtx_port_config(struct rte_port *port)
 		port->tx_conf.txq_flags = txq_flags;
 }
 
+static void
+generate_default_vf_mac_addr(portid_t pid, struct rte_vf_conf *vf_conf,
+			     uint8_t vf_num)
+{
+	uint8_t i;
+	uint8_t addr[ETHER_ADDR_LEN] = {0x68, 0x05, 0xca, 0x25, 0x00, 0x00};
+
+	if (vf_num >= ETH_VF_NUM_MAX)
+		return;
+
+	addr[4] = (uint8_t)pid;
+	for (i = 0; i < vf_num; i++) {
+		addr[5] = i;
+		memcpy(vf_conf[i].mac_addr.addr_bytes, addr, sizeof(addr));
+	}
+}
+
 void
 init_port_config(void)
 {
@@ -1772,6 +1789,8 @@ init_port_config(void)
 		port = &ports[pid];
 		port->dev_conf.rxmode = rx_mode;
 		port->dev_conf.fdir_conf = fdir_conf;
+		generate_default_vf_mac_addr(pid, port->dev_conf.vf_conf, 32);
+
 		if (nb_rxq > 1) {
 			port->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
 			port->dev_conf.rx_adv_conf.rss_conf.rss_hf = rss_hf;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] support setting i40e VF MAC address from DPDK host side
  2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
                   ` (2 preceding siblings ...)
  2016-01-28  8:40 ` [PATCH 3/3] app/testpmd: set default MAC addresses for each VF Helin Zhang
@ 2016-02-26  8:14 ` Pei, Yulong
  2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
  4 siblings, 0 replies; 10+ messages in thread
From: Pei, Yulong @ 2016-02-26  8:14 UTC (permalink / raw)
  To: Zhang, Helin, dev@dpdk.org

Tested-by: yulong.pei@intel.com

-----Original Message-----
From: Zhang, Helin 
Sent: Thursday, January 28, 2016 4:40 PM
To: dev@dpdk.org
Cc: Pei, Yulong <yulong.pei@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Tao, Zhe <zhe.tao@intel.com>; Xu, Qian Q <qian.q.xu@intel.com>; Zhang, Helin <helin.zhang@intel.com>
Subject: [PATCH 0/3] support setting i40e VF MAC address from DPDK host side

It adds pre-setting i40e VF MAC addresses from DPDK PF host side, during host port initialization, by introduing a new port configuration element. It then can pre-set VF MAC addresses before any launching VFs, and the VF MAC addresses will not be random each time launching a VF.
There should be no ABI broken, as ABI changes in 'struct rte_eth_conf' has already been announced in R2.2.

Helin Zhang (3):
  i40e: add setting VF MAC address in DPDK PF host
  i40evf: use ether interface for validating MAC address
  app/testpmd: set default MAC addresses for each VF

 app/test-pmd/testpmd.c               | 19 +++++++++++++++++++
 doc/guides/rel_notes/release_2_3.rst |  9 +++++++++
 drivers/net/i40e/i40e_ethdev.c       | 21 +++++++++++++++++++++
 drivers/net/i40e/i40e_ethdev.h       |  1 +
 drivers/net/i40e/i40e_ethdev_vf.c    | 14 +++++++-------
 drivers/net/i40e/i40e_pf.c           |  2 ++
 lib/librte_ether/rte_ethdev.h        | 10 ++++++++++
 7 files changed, 69 insertions(+), 7 deletions(-)

--
2.5.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 0/2] add VF MAC address generation
  2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
@ 2016-03-08  0:43   ` Zhe Tao
  2016-03-08 10:48     ` Bruce Richardson
  2016-03-08  6:42   ` [PATCH v2 1/2] i40e: generate MAC address for VF Helin Zhang
  2016-03-08  6:42   ` [PATCH v2 2/2] i40evf: use ether API to validate MAC address Helin Zhang
  2 siblings, 1 reply; 10+ messages in thread
From: Zhe Tao @ 2016-03-08  0:43 UTC (permalink / raw)
  To: Helin Zhang; +Cc: dev

On Tue, Mar 08, 2016 at 02:42:07PM +0800, Helin Zhang wrote:
> It adds generating a MAC address for each VFs during PF
> host initialization.
> 
> The patch set branches off below commit on branch rel_16_04
> of dpdk-next-net repo.
> 
> commit 4ac366ba647909c3b71818f9be9db86ba5e871da
> Author: Thomas Monjalon <thomas.monjalon@6wind.com>
> Date:   Sat Feb 6 22:51:16 2016 +0100
>     nfp: fix non-x86 build
> 
> v2:
>  - It just adds generating a MAC address for each VFs
>    during PF host initialization, and removes configuring
>    from users.
>  - Reworded the release notes.
>  - Removed the app changes.
> 
> Helin Zhang (2):
>   i40e: generate MAC address for VF
>   i40evf: use ether API to validate MAC address
> 
>  doc/guides/rel_notes/release_16_04.rst |  5 +++++
>  drivers/net/i40e/i40e_ethdev.h         |  1 +
>  drivers/net/i40e/i40e_ethdev_vf.c      | 14 +++++++-------
>  drivers/net/i40e/i40e_pf.c             |  3 +++
>  4 files changed, 16 insertions(+), 7 deletions(-)
> 
> -- 
> 2.5.0
Acked-by: Zhe Tao <zhe.tao@intel.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 0/2] add VF MAC address generation
  2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
                   ` (3 preceding siblings ...)
  2016-02-26  8:14 ` [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Pei, Yulong
@ 2016-03-08  6:42 ` Helin Zhang
  2016-03-08  0:43   ` Zhe Tao
                     ` (2 more replies)
  4 siblings, 3 replies; 10+ messages in thread
From: Helin Zhang @ 2016-03-08  6:42 UTC (permalink / raw)
  To: dev

It adds generating a MAC address for each VFs during PF
host initialization.

The patch set branches off below commit on branch rel_16_04
of dpdk-next-net repo.

commit 4ac366ba647909c3b71818f9be9db86ba5e871da
Author: Thomas Monjalon <thomas.monjalon@6wind.com>
Date:   Sat Feb 6 22:51:16 2016 +0100
    nfp: fix non-x86 build

v2:
 - It just adds generating a MAC address for each VFs
   during PF host initialization, and removes configuring
   from users.
 - Reworded the release notes.
 - Removed the app changes.

Helin Zhang (2):
  i40e: generate MAC address for VF
  i40evf: use ether API to validate MAC address

 doc/guides/rel_notes/release_16_04.rst |  5 +++++
 drivers/net/i40e/i40e_ethdev.h         |  1 +
 drivers/net/i40e/i40e_ethdev_vf.c      | 14 +++++++-------
 drivers/net/i40e/i40e_pf.c             |  3 +++
 4 files changed, 16 insertions(+), 7 deletions(-)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 1/2] i40e: generate MAC address for VF
  2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
  2016-03-08  0:43   ` Zhe Tao
@ 2016-03-08  6:42   ` Helin Zhang
  2016-03-08  6:42   ` [PATCH v2 2/2] i40evf: use ether API to validate MAC address Helin Zhang
  2 siblings, 0 replies; 10+ messages in thread
From: Helin Zhang @ 2016-03-08  6:42 UTC (permalink / raw)
  To: dev

It generates a MAC address for each VFs during PF host
initialization.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 doc/guides/rel_notes/release_16_04.rst | 5 +++++
 drivers/net/i40e/i40e_ethdev.h         | 1 +
 drivers/net/i40e/i40e_pf.c             | 3 +++
 3 files changed, 9 insertions(+)

v2:
 - It just generates a MAC address for each VFs during PF host
   initialization, and removes configuring from users.
 - Reworded the release notes.

diff --git a/doc/guides/rel_notes/release_16_04.rst b/doc/guides/rel_notes/release_16_04.rst
index 73494f9..1b9061d 100644
--- a/doc/guides/rel_notes/release_16_04.rst
+++ b/doc/guides/rel_notes/release_16_04.rst
@@ -137,6 +137,11 @@ Drivers
 
 * **vmxnet3: add TSO support.**
 
+* **i40e: Generates MAC address for each VFs.**
+
+  It generates a MAC address for each VFs during PF host initialization,
+  and keeps the VF MAC address the same among different VF launch.
+
 
 Libraries
 ~~~~~~~~~
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index db6173a..9109cd9 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -312,6 +312,7 @@ struct i40e_pf_vf {
 	uint16_t vf_idx; /* VF index in pf->vfs */
 	uint16_t lan_nb_qps; /* Actual queues allocated */
 	uint16_t reset_cnt; /* Total vf reset times */
+	struct ether_addr mac_addr;  /* Default MAC address */
 };
 
 /*
diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index cbf4e5b..5790377 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -315,6 +315,8 @@ i40e_pf_host_process_cmd_get_vf_resource(struct i40e_pf_vf *vf)
 	/* As assume Vf only has single VSI now, always return 0 */
 	vf_res->vsi_res[0].vsi_id = 0;
 	vf_res->vsi_res[0].num_queue_pairs = vf->vsi->nb_qps;
+	ether_addr_copy(&vf->mac_addr,
+		(struct ether_addr *)vf_res->vsi_res[0].default_mac_addr);
 
 send_msg:
 	i40e_pf_host_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_VF_RESOURCES,
@@ -1045,6 +1047,7 @@ i40e_pf_host_init(struct rte_eth_dev *dev)
 		ret = i40e_pf_host_vf_reset(&pf->vfs[i], 0);
 		if (ret != I40E_SUCCESS)
 			goto fail;
+		eth_random_addr(pf->vfs[i].mac_addr.addr_bytes);
 	}
 
 	/* restore irq0 */
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 2/2] i40evf: use ether API to validate MAC address
  2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
  2016-03-08  0:43   ` Zhe Tao
  2016-03-08  6:42   ` [PATCH v2 1/2] i40e: generate MAC address for VF Helin Zhang
@ 2016-03-08  6:42   ` Helin Zhang
  2 siblings, 0 replies; 10+ messages in thread
From: Helin Zhang @ 2016-03-08  6:42 UTC (permalink / raw)
  To: dev

It uses ether API of 'is_valid_assigned_ether_addr' to validate
MAC address. In the meanwhile, more annotations are added.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 13c5b3d..ded7c8b 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1180,6 +1180,7 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 	int i, err, bufsz;
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
+	struct ether_addr *p_mac_addr;
 
 	vf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	vf->dev_data = dev->data;
@@ -1249,13 +1250,12 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 	vf->vsi.nb_qps = vf->vsi_res->num_queue_pairs;
 	vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 
-	/* check mac addr, if it's not valid, genrate one */
-	if (I40E_SUCCESS != i40e_validate_mac_addr(\
-			vf->vsi_res->default_mac_addr))
-		eth_random_addr(vf->vsi_res->default_mac_addr);
-
-	ether_addr_copy((struct ether_addr *)vf->vsi_res->default_mac_addr,
-					(struct ether_addr *)hw->mac.addr);
+	/* Store the MAC address configured by host, or generate random one */
+	p_mac_addr = (struct ether_addr *)(vf->vsi_res->default_mac_addr);
+	if (is_valid_assigned_ether_addr(p_mac_addr)) /* Configured by host */
+		ether_addr_copy(p_mac_addr, (struct ether_addr *)hw->mac.addr);
+	else
+		eth_random_addr(hw->mac.addr); /* Generate a random one */
 
 	return 0;
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 0/2] add VF MAC address generation
  2016-03-08  0:43   ` Zhe Tao
@ 2016-03-08 10:48     ` Bruce Richardson
  0 siblings, 0 replies; 10+ messages in thread
From: Bruce Richardson @ 2016-03-08 10:48 UTC (permalink / raw)
  To: Zhe Tao; +Cc: dev

On Tue, Mar 08, 2016 at 08:43:31AM +0800, Zhe Tao wrote:
> On Tue, Mar 08, 2016 at 02:42:07PM +0800, Helin Zhang wrote:
> > It adds generating a MAC address for each VFs during PF
> > host initialization.
> > 
> > The patch set branches off below commit on branch rel_16_04
> > of dpdk-next-net repo.
> > 
> > commit 4ac366ba647909c3b71818f9be9db86ba5e871da
> > Author: Thomas Monjalon <thomas.monjalon@6wind.com>
> > Date:   Sat Feb 6 22:51:16 2016 +0100
> >     nfp: fix non-x86 build
> > 
> > v2:
> >  - It just adds generating a MAC address for each VFs
> >    during PF host initialization, and removes configuring
> >    from users.
> >  - Reworded the release notes.
> >  - Removed the app changes.
> > 
> > Helin Zhang (2):
> >   i40e: generate MAC address for VF
> >   i40evf: use ether API to validate MAC address
> > 
> >  doc/guides/rel_notes/release_16_04.rst |  5 +++++
> >  drivers/net/i40e/i40e_ethdev.h         |  1 +
> >  drivers/net/i40e/i40e_ethdev_vf.c      | 14 +++++++-------
> >  drivers/net/i40e/i40e_pf.c             |  3 +++
> >  4 files changed, 16 insertions(+), 7 deletions(-)
> > 
> > -- 
> > 2.5.0
> Acked-by: Zhe Tao <zhe.tao@intel.com>
> 
Applied to dpdk-next-net/rel_16_04

/Bruce

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-03-08 10:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-28  8:40 [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Helin Zhang
2016-01-28  8:40 ` [PATCH 1/3] i40e: add setting VF MAC address in DPDK PF host Helin Zhang
2016-01-28  8:40 ` [PATCH 2/3] i40evf: use ether interface for validating MAC address Helin Zhang
2016-01-28  8:40 ` [PATCH 3/3] app/testpmd: set default MAC addresses for each VF Helin Zhang
2016-02-26  8:14 ` [PATCH 0/3] support setting i40e VF MAC address from DPDK host side Pei, Yulong
2016-03-08  6:42 ` [PATCH v2 0/2] add VF MAC address generation Helin Zhang
2016-03-08  0:43   ` Zhe Tao
2016-03-08 10:48     ` Bruce Richardson
2016-03-08  6:42   ` [PATCH v2 1/2] i40e: generate MAC address for VF Helin Zhang
2016-03-08  6:42   ` [PATCH v2 2/2] i40evf: use ether API to validate MAC address Helin Zhang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.