[dpdk-dev] net/nfp: add support for chaning MAC address

Message ID 1523617233-12228-1-git-send-email-alejandro.lucero@netronome.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Alejandro Lucero April 13, 2018, 11 a.m. UTC
  This patch allows to use another MAC address than the one coming
with the NIC by default.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
  

Comments

Ferruh Yigit April 13, 2018, 5:02 p.m. UTC | #1
On 4/13/2018 12:00 PM, Alejandro Lucero wrote:
> This patch allows to use another MAC address than the one coming
> with the NIC by default.
> 
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
> ---
>  drivers/net/nfp/nfp_net.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
> index bedd4b6..7db438c 100644
> --- a/drivers/net/nfp/nfp_net.c
> +++ b/drivers/net/nfp/nfp_net.c
> @@ -109,6 +109,8 @@ static int nfp_net_rss_reta_write(struct rte_eth_dev *dev,
>  		    uint16_t reta_size);
>  static int nfp_net_rss_hash_write(struct rte_eth_dev *dev,
>  			struct rte_eth_rss_conf *rss_conf);
> +static void nfp_set_mac_addr(struct rte_eth_dev *dev,
> +			     struct ether_addr *mac_addr);

Hi Alejandro,

mac_addr_set dev_ops is changed in this release [1], new prototype is [2], patch
is still in next-net, can you please rebase this patch on latest next-net?


[1]
703ee2278382 ("ethdev: return diagnostic when setting MAC address")
https://dpdk.org/dev/patchwork/patch/37951/

[2]
typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
	struct ether_addr *mac_addr);
  
Alejandro Lucero April 13, 2018, 5:06 p.m. UTC | #2
Hi Ferruh,

On Fri, Apr 13, 2018 at 6:02 PM, Ferruh Yigit <ferruh.yigit@intel.com>
wrote:

> On 4/13/2018 12:00 PM, Alejandro Lucero wrote:
> > This patch allows to use another MAC address than the one coming
> > with the NIC by default.
> >
> > Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
> > ---
> >  drivers/net/nfp/nfp_net.c | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> >
> > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
> > index bedd4b6..7db438c 100644
> > --- a/drivers/net/nfp/nfp_net.c
> > +++ b/drivers/net/nfp/nfp_net.c
> > @@ -109,6 +109,8 @@ static int nfp_net_rss_reta_write(struct rte_eth_dev
> *dev,
> >                   uint16_t reta_size);
> >  static int nfp_net_rss_hash_write(struct rte_eth_dev *dev,
> >                       struct rte_eth_rss_conf *rss_conf);
> > +static void nfp_set_mac_addr(struct rte_eth_dev *dev,
> > +                          struct ether_addr *mac_addr);
>
> Hi Alejandro,
>
> mac_addr_set dev_ops is changed in this release [1], new prototype is [2],
> patch
> is still in next-net, can you please rebase this patch on latest next-net?
>

Sure. I will do that asap.

Thanks!


>
>
> [1]
> 703ee2278382 ("ethdev: return diagnostic when setting MAC address")
> https://dpdk.org/dev/patchwork/patch/37951/
>
> [2]
> typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
>         struct ether_addr *mac_addr);
>
  

Patch

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index bedd4b6..7db438c 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -109,6 +109,8 @@  static int nfp_net_rss_reta_write(struct rte_eth_dev *dev,
 		    uint16_t reta_size);
 static int nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 			struct rte_eth_rss_conf *rss_conf);
+static void nfp_set_mac_addr(struct rte_eth_dev *dev,
+			     struct ether_addr *mac_addr);
 
 /* The offset of the queue controller queues in the PCIe Target */
 #define NFP_PCIE_QUEUE(_q) (0x80000 + (NFP_QCP_QUEUE_ADDR_SZ * ((_q) & 0xff)))
@@ -684,6 +686,15 @@  enum nfp_qcp_ptr {
 		  hw->ctrl_bar + NFP_NET_CFG_MACADDR + 6);
 }
 
+void
+nfp_set_mac_addr(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
+{
+	struct nfp_net_hw *hw;
+
+	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	nfp_net_write_mac(hw, (uint8_t *)mac_addr);
+}
+
 static int
 nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 			   struct rte_intr_handle *intr_handle)
@@ -2750,6 +2761,7 @@  uint32_t nfp_net_txq_full(struct nfp_net_txq *txq)
 	.dev_infos_get		= nfp_net_infos_get,
 	.dev_supported_ptypes_get = nfp_net_supported_ptypes_get,
 	.mtu_set		= nfp_net_dev_mtu_set,
+	.mac_addr_set           = nfp_set_mac_addr,
 	.vlan_offload_set	= nfp_net_vlan_offload_set,
 	.reta_update		= nfp_net_reta_update,
 	.reta_query		= nfp_net_reta_query,