From: Harman Kalra <hkalra@marvell.com>
To: Sunil Kumar Kori <skori@marvell.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 1/1] net/octeontx: fix user supplied index in MAC address add
Date: Wed, 29 Jan 2020 12:26:11 +0000 [thread overview]
Message-ID: <20200129122552.GA172452@outlook.office365.com> (raw)
In-Reply-To: <20200129064242.8139-1-skori@marvell.com>
On Wed, Jan 29, 2020 at 12:12:42PM +0530, Sunil Kumar Kori wrote:
> Earlier after a successful mac_addr_add operation, index was returned
> by underlying layer which was unused but same as provided by DPDK API.
>
> So API is enhanced to use application provided index location to add
> MAC address entry.
>
> Fixes: e4373bf1b3f5 ("net/octeontx: add unicast MAC filter")
>
> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Harman Kalra <hkalra@marvell.com>
> ---
> v2:
> - Disable promiscuous mode flag when default MAC address is set.
>
> drivers/net/octeontx/base/octeontx_bgx.c | 13 ++++++-------
> drivers/net/octeontx/base/octeontx_bgx.h | 7 ++++++-
> drivers/net/octeontx/octeontx_ethdev.c | 21 +++++++++++++++++----
> 3 files changed, 29 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/net/octeontx/base/octeontx_bgx.c b/drivers/net/octeontx/base/octeontx_bgx.c
> index e70255b11..a2d615fb2 100644
> --- a/drivers/net/octeontx/base/octeontx_bgx.c
> +++ b/drivers/net/octeontx/base/octeontx_bgx.c
> @@ -245,22 +245,21 @@ octeontx_bgx_port_mac_set(int port, uint8_t *mac_addr)
> }
>
> int
> -octeontx_bgx_port_mac_add(int port, uint8_t *mac_addr)
> +octeontx_bgx_port_mac_add(int port, uint8_t *mac_addr, int index)
> {
> + struct octeontx_mbox_bgx_port_mac_filter filter;
> struct octeontx_mbox_hdr hdr;
> - int resp = 0;
> int len = 6;
> - int res = 0;
>
> hdr.coproc = OCTEONTX_BGX_COPROC;
> hdr.msg = MBOX_BGX_PORT_ADD_MACADDR;
> hdr.vfid = port;
>
> - res = octeontx_mbox_send(&hdr, mac_addr, len, &resp, sizeof(int));
> - if (res < 0)
> - return -EACCES;
> + memcpy(filter.mac_addr, mac_addr, len);
> + filter.index = index;
> + len = sizeof(struct octeontx_mbox_bgx_port_mac_filter);
>
> - return res;
> + return octeontx_mbox_send(&hdr, &filter, len, NULL, 0);
> }
>
> int
> diff --git a/drivers/net/octeontx/base/octeontx_bgx.h b/drivers/net/octeontx/base/octeontx_bgx.h
> index caaff179c..11c25db67 100644
> --- a/drivers/net/octeontx/base/octeontx_bgx.h
> +++ b/drivers/net/octeontx/base/octeontx_bgx.h
> @@ -112,6 +112,11 @@ typedef struct octeontx_mbox_bgx_port_stats {
> uint64_t rx_jabber_errors;
> } octeontx_mbox_bgx_port_stats_t;
>
> +struct octeontx_mbox_bgx_port_mac_filter {
> + uint8_t mac_addr[6];
> + int index;
> +};
> +
> int octeontx_bgx_port_open(int port, octeontx_mbox_bgx_port_conf_t *conf);
> int octeontx_bgx_port_close(int port);
> int octeontx_bgx_port_start(int port);
> @@ -123,7 +128,7 @@ int octeontx_bgx_port_stats_clr(int port);
> int octeontx_bgx_port_link_status(int port);
> int octeontx_bgx_port_promisc_set(int port, int en);
> int octeontx_bgx_port_mac_set(int port, uint8_t *mac_addr);
> -int octeontx_bgx_port_mac_add(int port, uint8_t *mac_addr);
> +int octeontx_bgx_port_mac_add(int port, uint8_t *mac_addr, int index);
> int octeontx_bgx_port_mac_del(int port, uint32_t index);
> int octeontx_bgx_port_mac_entries_get(int port);
>
> diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
> index e23162d8a..f965b946e 100644
> --- a/drivers/net/octeontx/octeontx_ethdev.c
> +++ b/drivers/net/octeontx/octeontx_ethdev.c
> @@ -573,13 +573,14 @@ octeontx_dev_mac_addr_del(struct rte_eth_dev *dev, uint32_t index)
> static int
> octeontx_dev_mac_addr_add(struct rte_eth_dev *dev,
> struct rte_ether_addr *mac_addr,
> - __rte_unused uint32_t index,
> + uint32_t index,
> __rte_unused uint32_t vmdq)
> {
> struct octeontx_nic *nic = octeontx_pmd_priv(dev);
> int ret;
>
> - ret = octeontx_bgx_port_mac_add(nic->port_id, mac_addr->addr_bytes);
> + ret = octeontx_bgx_port_mac_add(nic->port_id, mac_addr->addr_bytes,
> + index);
> if (ret < 0) {
> octeontx_log_err("failed to add MAC address filter on port %d",
> nic->port_id);
> @@ -594,12 +595,21 @@ octeontx_dev_default_mac_addr_set(struct rte_eth_dev *dev,
> struct rte_ether_addr *addr)
> {
> struct octeontx_nic *nic = octeontx_pmd_priv(dev);
> + uint8_t prom_mode = dev->data->promiscuous;
> int ret;
>
> + dev->data->promiscuous = 0;
> ret = octeontx_bgx_port_mac_set(nic->port_id, addr->addr_bytes);
> - if (ret != 0)
> + if (ret == 0) {
> + /* Update same mac address to BGX CAM table */
> + ret = octeontx_bgx_port_mac_add(nic->port_id, addr->addr_bytes,
> + 0);
> + }
> + if (ret < 0) {
> + dev->data->promiscuous = prom_mode;
> octeontx_log_err("failed to set MAC address on port %d",
> - nic->port_id);
> + nic->port_id);
> + }
>
> return ret;
> }
> @@ -1149,6 +1159,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev,
> /* Update port_id mac to eth_dev */
> memcpy(data->mac_addrs, nic->mac_addr, RTE_ETHER_ADDR_LEN);
>
> + /* Update same mac address to BGX CAM table at index 0 */
> + octeontx_bgx_port_mac_add(nic->port_id, nic->mac_addr, 0);
> +
> PMD_INIT_LOG(DEBUG, "ethdev info: ");
> PMD_INIT_LOG(DEBUG, "port %d, port_ena %d ochan %d num_ochan %d tx_q %d",
> nic->port_id, nic->port_ena,
> --
> 2.17.1
>
next prev parent reply other threads:[~2020-01-29 12:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-24 6:35 [dpdk-dev] [PATCH] " Sunil Kumar Kori
2020-01-29 6:42 ` [dpdk-dev] [PATCH v2 1/1] " Sunil Kumar Kori
2020-01-29 12:26 ` Harman Kalra [this message]
2020-02-03 10:34 ` Jerin Jacob
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=20200129122552.GA172452@outlook.office365.com \
--to=hkalra@marvell.com \
--cc=dev@dpdk.org \
--cc=skori@marvell.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).