From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rcdn-iport-2.cisco.com (rcdn-iport-2.cisco.com [173.37.86.73]) by dpdk.org (Postfix) with ESMTP id 3E5EE8E56 for ; Tue, 17 Apr 2018 07:12:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=4015; q=dns/txt; s=iport; t=1523941940; x=1525151540; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=Dol8JFUnhytp5enonqWgZzOpV3IABKP0j53nIdR05Qc=; b=YQgxjKsDGWpF5I5IYHqkdps9UthpkvKMBQRc81KFERvZnj6b/AhtisrR Z0CUNKIUcpq4DnW0GEXelm5ZlOdGXEkAfx6yS/P6cbyD48pdU+2aYOgrZ kdkqNON3B/oEw8pL9+goAYvaGermjW9+gwrNCq/D2TusE23BtTUr0+wbI s=; X-IronPort-AV: E=Sophos;i="5.48,462,1517875200"; d="scan'208";a="385382325" Received: from rcdn-core-1.cisco.com ([173.37.93.152]) by rcdn-iport-2.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Apr 2018 05:12:19 +0000 Received: from HYONKIM-FTCPE.cisco.com ([10.24.77.111]) by rcdn-core-1.cisco.com (8.14.5/8.14.5) with ESMTP id w3H5CFoJ018698 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 17 Apr 2018 05:12:17 GMT Date: Tue, 17 Apr 2018 14:12:14 +0900 From: Hyong Youb Kim To: David Marchand Cc: dev@dpdk.org, johndale@cisco.com, ferruh.yigit@intel.com, neescoba@cisco.com Message-ID: <20180417051213.GA12316@HYONKIM-FTCPE.cisco.com> References: <20180219124227.19859-1-david.marchand@6wind.com> <1523871617-15533-1-git-send-email-david.marchand@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1523871617-15533-1-git-send-email-david.marchand@6wind.com> User-Agent: Mutt/1.9.1 (2017-09-22) Subject: Re: [dpdk-dev] [PATCH v2] net/enic: add primary mac address handler X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Apr 2018 05:12:20 -0000 On Mon, Apr 16, 2018 at 11:40:17AM +0200, David Marchand wrote: > Modified enic_del_mac_address() to get a return value from the vnic layer. > Reused the .mac_addr_add and .mac_addr_del callbacks code to implement > primary mac address handler. > > Signed-off-by: David Marchand > --- Thanks. The patch looks good to me. I've tested it on top of dpdk-net-next. It works as expected. Acked-by: Hyong Youb Kim > > Changes since v1: > - rebased on dpdk-next-net following mac_addr_set rework, > - since enicpmd_remove_mac_addr() does not return an error code, I chose to > expose the return value from enic_del_mac_address() so that an error > can be detected in the mac_addr_set callback. The log message in > enicpmd_remove_mac_addr() has been preserved. > > --- > drivers/net/enic/enic.h | 2 +- > drivers/net/enic/enic_ethdev.c | 20 +++++++++++++++++++- > drivers/net/enic/enic_main.c | 5 ++--- > 3 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h > index 751ddc7..5f15e44 100644 > --- a/drivers/net/enic/enic.h > +++ b/drivers/net/enic/enic.h > @@ -284,7 +284,7 @@ int enic_dev_stats_get(struct enic *enic, > void enic_dev_stats_clear(struct enic *enic); > void enic_add_packet_filter(struct enic *enic); > int enic_set_mac_address(struct enic *enic, uint8_t *mac_addr); > -void enic_del_mac_address(struct enic *enic, int mac_index); > +int enic_del_mac_address(struct enic *enic, int mac_index); > unsigned int enic_cleanup_wq(struct enic *enic, struct vnic_wq *wq); > void enic_send_pkt(struct enic *enic, struct vnic_wq *wq, > struct rte_mbuf *tx_pkt, unsigned short len, > diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c > index 801f470..f503398 100644 > --- a/drivers/net/enic/enic_ethdev.c > +++ b/drivers/net/enic/enic_ethdev.c > @@ -583,7 +583,24 @@ static void enicpmd_remove_mac_addr(struct rte_eth_dev *eth_dev, uint32_t index) > return; > > ENICPMD_FUNC_TRACE(); > - enic_del_mac_address(enic, index); > + if (enic_del_mac_address(enic, index)) > + dev_err(enic, "del mac addr failed\n"); > +} > + > +static int enicpmd_set_mac_addr(struct rte_eth_dev *eth_dev, > + struct ether_addr *addr) > +{ > + struct enic *enic = pmd_priv(eth_dev); > + int ret; > + > + if (rte_eal_process_type() != RTE_PROC_PRIMARY) > + return -E_RTE_SECONDARY; > + > + ENICPMD_FUNC_TRACE(); > + ret = enic_del_mac_address(enic, 0); > + if (ret) > + return ret; > + return enic_set_mac_address(enic, addr->addr_bytes); > } > > static int enicpmd_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > @@ -799,6 +816,7 @@ static const struct eth_dev_ops enicpmd_eth_dev_ops = { > .priority_flow_ctrl_set = NULL, > .mac_addr_add = enicpmd_add_mac_addr, > .mac_addr_remove = enicpmd_remove_mac_addr, > + .mac_addr_set = enicpmd_set_mac_addr, > .filter_ctrl = enicpmd_dev_filter_ctrl, > .reta_query = enicpmd_dev_rss_reta_query, > .reta_update = enicpmd_dev_rss_reta_update, > diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c > index 98d4775..d9bc7fd 100644 > --- a/drivers/net/enic/enic_main.c > +++ b/drivers/net/enic/enic_main.c > @@ -162,13 +162,12 @@ int enic_dev_stats_get(struct enic *enic, struct rte_eth_stats *r_stats) > return 0; > } > > -void enic_del_mac_address(struct enic *enic, int mac_index) > +int enic_del_mac_address(struct enic *enic, int mac_index) > { > struct rte_eth_dev *eth_dev = enic->rte_dev; > uint8_t *mac_addr = eth_dev->data->mac_addrs[mac_index].addr_bytes; > > - if (vnic_dev_del_addr(enic->vdev, mac_addr)) > - dev_err(enic, "del mac addr failed\n"); > + return vnic_dev_del_addr(enic->vdev, mac_addr); > } > > int enic_set_mac_address(struct enic *enic, uint8_t *mac_addr) > -- > 2.7.4 >