Tested-by: Michael Qiu <michael.qiu at intel.com> - OS: Fedora20 3.11.10-301 - GCC: gcc version 4.8.3 2014911 - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz - NIC: Ethernet controller: Intel Corporation Device 15a4 (rev 01) - Default x86_64-native-linuxapp-gcc configuration
On 5/29/2015 4:11 PM, Chen, Jing D wrote: > From: "Chen Jing D(Mark)" <jing.d.chen at intel.com> > > After acquiring MAC address from HW, it's necessary to validate > MAC address before use. > > Signed-off-by: Chen Jing D(Mark) <jing.d.chen at intel.com> > --- > drivers/net/fm10k/fm10k_ethdev.c | 24 ++++++++++-------------- > 1 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/drivers/net/fm10k/fm10k_ethdev.c > b/drivers/net/fm10k/fm10k_ethdev.c > index dedfbb4..b6e82e3 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -1756,24 +1756,20 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev) > } > > diag = fm10k_read_mac_addr(hw); > - if (diag != FM10K_SUCCESS) { > - /* > - * TODO: remove special handling on VF. Need shared code to > - * fix first. > - */ > - if (hw->mac.type == fm10k_mac_pf) { > - PMD_INIT_LOG(ERR, "Read MAC addr failed: %d", diag); > - return -EIO; > - } else { > - /* Generate a random addr */ > - eth_random_addr(hw->mac.addr); > - memcpy(hw->mac.perm_addr, hw->mac.addr, ETH_ALEN); > - } > - } > > ether_addr_copy((const struct ether_addr *)hw->mac.addr, > &dev->data->mac_addrs[0]); > > + if (diag != FM10K_SUCCESS || > + !is_valid_assigned_ether_addr(dev->data->mac_addrs)) { > + > + /* Generate a random addr */ > + eth_random_addr(hw->mac.addr); > + memcpy(hw->mac.perm_addr, hw->mac.addr, ETH_ALEN); > + ether_addr_copy((const struct ether_addr *)hw->mac.addr, > + &dev->data->mac_addrs[0]); > + } > + > /* Reset the hw statistics */ > fm10k_stats_reset(dev); >