[dpdk-dev,v2,1/2] i40e: generate MAC address for VF
Commit Message
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.
@@ -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
~~~~~~~~~
@@ -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 */
};
/*
@@ -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 */