From patchwork Fri Jan 24 06:35:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil Kumar Kori X-Patchwork-Id: 65111 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3A9B1A052F; Fri, 24 Jan 2020 07:36:05 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E2E5D2BCE; Fri, 24 Jan 2020 07:36:03 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 308AF2A6C for ; Fri, 24 Jan 2020 07:36:01 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00O6UvUc014177 for ; Thu, 23 Jan 2020 22:36:00 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=pfpt0818; bh=MqcLlwzGTg7lP1tkmjWr7TLnzDhXp1wYQUGP+NnAOxk=; b=JAWSYAMXJXa3ZeKspreXvhjVWvm6X+TUhS9SkhrPzDOjFyShNU1KZtGThdMn/oR0pISJ pe4OK7sKyzbVYEZa3mdv7Xnaer9kI4XuGHuXhb8NHjSKN8peJD5K4lT5dIo+YJ7WDFaD HUbv/ZCRZBMG9xshhu+DYnq2kdBUmX/th1YYjKyYxqo+CZ8DpWvqXRFCJ8KQjsMDYbYX 7nY+bMVCqLQA2JX5+49J3MWhCmOIQxOSMdqKltfvzJXam74ggeploBSSfx5it0mCaltU OeZYlIDhbn+PoYooxIzSZfObNQU0IDcnJhC5ow/uQ4IkbgmHIEIDbUPlwAIr3EsRop+J 0w== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0a-0016f401.pphosted.com with ESMTP id 2xq4x4n0xp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 23 Jan 2020 22:36:00 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 23 Jan 2020 22:35:58 -0800 Received: from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 23 Jan 2020 22:35:58 -0800 Received: from localhost.localdomain (unknown [10.28.34.200]) by maili.marvell.com (Postfix) with ESMTP id D1E383F703F; Thu, 23 Jan 2020 22:35:57 -0800 (PST) From: Sunil Kumar Kori To: Harman Kalra CC: , Sunil Kumar Kori Date: Fri, 24 Jan 2020 12:05:54 +0530 Message-ID: <20200124063554.893-1-skori@marvell.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-24_01:2020-01-24, 2020-01-24 signatures=0 Subject: [dpdk-dev] [PATCH] net/octeontx: fix user supplied index in MAC address add 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- drivers/net/octeontx/base/octeontx_bgx.c | 13 ++++++------- drivers/net/octeontx/base/octeontx_bgx.h | 7 ++++++- drivers/net/octeontx/octeontx_ethdev.c | 18 ++++++++++++++---- 3 files changed, 26 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..e34f7cef3 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); @@ -597,9 +598,15 @@ octeontx_dev_default_mac_addr_set(struct rte_eth_dev *dev, int ret; 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) { octeontx_log_err("failed to set MAC address on port %d", - nic->port_id); + nic->port_id); + } return ret; } @@ -1149,6 +1156,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,