DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Zhao1, Wei" <wei.zhao1@intel.com>
To: "Sun, GuinanX" <guinanx.sun@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
	"Yang, Qiming" <qiming.yang@intel.com>,
	"Sun, GuinanX" <guinanx.sun@intel.com>,
	"Guo, Jia" <jia.guo@intel.com>
Subject: Re: [dpdk-dev] [PATCH v3] net/ixgbe: add support for VF MAC address add	and remove
Date: Fri, 8 May 2020 06:58:10 +0000	[thread overview]
Message-ID: <MWHPR11MB139173C5691B7C7DFF73918CB7A20@MWHPR11MB1391.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20191224032357.3317-1-guinanx.sun@intel.com>

Hi, Guinan

	There is a bug for this patch:
The second input parameter of function hw->mac.ops.set_rar() should be index of MAC address register IXGBE_RAL/H.
This index should be management by pf host for all the vf, not only index for one vf, or vf1 maybe overwrite this MAC address of vf0.
Although this patch has been merged, please commit fix patch for it.


> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Guinan Sun
> Sent: Tuesday, December 24, 2019 11:24 AM
> To: dev@dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Sun, GuinanX <guinanx.sun@intel.com>
> Subject: [dpdk-dev] [PATCH v3] net/ixgbe: add support for VF MAC address add
> and remove
> 
> Ixgbe PMD pf host code needs to support ixgbevf mac address add and remove.
> For this purpose, a response was added between pf and vf to update the mac
> address.
> 
> Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
> ---
> v3:
> * Changed from `RTE_LOG` to `PMD_DRV_LOG`.
> v2:
> * Changed the title of commit message.
> * Checked null in front of valid ether addr check.
> ---
>  drivers/net/ixgbe/ixgbe_ethdev.h |  1 +
>  drivers/net/ixgbe/ixgbe_pf.c     | 35
> ++++++++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+)
> 
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h
> b/drivers/net/ixgbe/ixgbe_ethdev.h
> index 76a1b9d18..e1cd8fd16 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.h
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.h
> @@ -270,6 +270,7 @@ struct ixgbe_vf_info {
>  	uint8_t api_version;
>  	uint16_t switch_domain_id;
>  	uint16_t xcast_mode;
> +	uint16_t mac_count;
>  };
> 
>  /*
> diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c index
> d0d85e138..c93c0fdc2 100644
> --- a/drivers/net/ixgbe/ixgbe_pf.c
> +++ b/drivers/net/ixgbe/ixgbe_pf.c
> @@ -748,6 +748,37 @@ ixgbe_set_vf_mc_promisc(struct rte_eth_dev *dev,
> uint32_t vf, uint32_t *msgbuf)
>  	return 0;
>  }
> 
> +static int
> +ixgbe_set_vf_macvlan_msg(struct rte_eth_dev *dev, uint32_t vf, uint32_t
> +*msgbuf) {
> +	struct ixgbe_hw *hw =
> IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
> +	struct ixgbe_vf_info *vf_info =
> +		*(IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private));
> +	uint8_t *new_mac = (uint8_t *)(&msgbuf[1]);
> +	int index = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >>
> +		    IXGBE_VT_MSGINFO_SHIFT;
> +
> +	if (index) {
> +		if (new_mac == NULL)
> +			return -1;
> +
> +		if (!rte_is_valid_assigned_ether_addr(
> +			(struct rte_ether_addr *)new_mac)) {
> +			PMD_DRV_LOG(ERR, "set invalid mac vf:%d\n", vf);
> +			return -1;
> +		}
> +
> +		vf_info[vf].mac_count++;
> +
> +		hw->mac.ops.set_rar(hw, vf_info[vf].mac_count,
> +				new_mac, vf, IXGBE_RAH_AV);
> +	} else {
> +		hw->mac.ops.clear_rar(hw, vf_info[vf].mac_count);
> +		vf_info[vf].mac_count = 0;
> +	}
> +	return 0;
> +}
> +
>  static int
>  ixgbe_rcv_msg_from_vf(struct rte_eth_dev *dev, uint16_t vf)  { @@ -835,6
> +866,10 @@ ixgbe_rcv_msg_from_vf(struct rte_eth_dev *dev, uint16_t vf)
>  		if (retval == RTE_PMD_IXGBE_MB_EVENT_PROCEED)
>  			retval = ixgbe_set_vf_mc_promisc(dev, vf, msgbuf);
>  		break;
> +	case IXGBE_VF_SET_MACVLAN:
> +		if (retval == RTE_PMD_IXGBE_MB_EVENT_PROCEED)
> +			retval = ixgbe_set_vf_macvlan_msg(dev, vf, msgbuf);
> +		break;
>  	default:
>  		PMD_DRV_LOG(DEBUG, "Unhandled Msg %8.8x",
> (unsigned)msgbuf[0]);
>  		retval = IXGBE_ERR_MBX;
> --
> 2.17.1


  parent reply	other threads:[~2020-05-08  6:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-03 14:54 [dpdk-dev] [PATCH] net/ixgbe: add or remove MAC address Guinan Sun
2019-12-23  7:25 ` Ye Xiaolong
2019-12-23  8:41   ` Sun, GuinanX
2019-12-23  9:12 ` [dpdk-dev] [PATCH v2] net/ixgbe: add support for VF MAC address add and remove Guinan Sun
2019-12-24  2:34   ` Ye Xiaolong
2019-12-24  3:23 ` [dpdk-dev] [PATCH v3] " Guinan Sun
2019-12-24  6:06   ` Ye Xiaolong
2020-05-08  6:58   ` Zhao1, Wei [this message]
2020-05-08  8:19     ` Sun, GuinanX

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MWHPR11MB139173C5691B7C7DFF73918CB7A20@MWHPR11MB1391.namprd11.prod.outlook.com \
    --to=wei.zhao1@intel.com \
    --cc=dev@dpdk.org \
    --cc=guinanx.sun@intel.com \
    --cc=jia.guo@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).