[dpdk-dev] [PATCH 5/6] fm10k: Do sanity check on mac address

Qiu, Michael michael.qiu at intel.com
Tue Jun 16 14:08:16 CEST 2015


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);
>  



More information about the dev mailing list