From: Shai Malin <smalin@marvell.com> To: <netdev@vger.kernel.org>, <linux-nvme@lists.infradead.org>, <sagi@grimberg.me>, <hch@lst.de>, <axboe@fb.com>, <kbusch@kernel.org> Cc: "David S . Miller davem @ davemloft . net --cc=Jakub Kicinski" <kuba@kernel.org>, smalin@marvell.com, aelior@marvell.com, mkalderon@marvell.com, okulkarni@marvell.com, pkushwaha@marvell.com, malin1024@gmail.com, "Nikolay Assa" <nassa@marvell.com> Subject: [RFC PATCH v4 18/27] qedn: Add qedn_claim_dev API support Date: Thu, 29 Apr 2021 22:09:17 +0300 [thread overview] Message-ID: <20210429190926.5086-19-smalin@marvell.com> (raw) In-Reply-To: <20210429190926.5086-1-smalin@marvell.com> From: Nikolay Assa <nassa@marvell.com> This patch introduces the qedn_claim_dev() network service which the offload device (qedn) is using through the paired net-device (qede). qedn_claim_dev() returns true if the IP addr(IPv4 or IPv6) of the target server is reachable via the net-device which is paired with the offloaded device. Acked-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: Nikolay Assa <nassa@marvell.com> Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com> Signed-off-by: Omkar Kulkarni <okulkarni@marvell.com> Signed-off-by: Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior <aelior@marvell.com> Signed-off-by: Shai Malin <smalin@marvell.com> --- drivers/nvme/hw/qedn/qedn.h | 4 +++ drivers/nvme/hw/qedn/qedn_main.c | 42 ++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/hw/qedn/qedn.h b/drivers/nvme/hw/qedn/qedn.h index c1ac17eabcb7..7efe2366eb7c 100644 --- a/drivers/nvme/hw/qedn/qedn.h +++ b/drivers/nvme/hw/qedn/qedn.h @@ -8,6 +8,10 @@ #include <linux/qed/qed_if.h> #include <linux/qed/qed_nvmetcp_if.h> +#include <linux/qed/qed_nvmetcp_ip_services_if.h> +#include <linux/qed/qed_chain.h> +#include <linux/qed/storage_common.h> +#include <linux/qed/nvmetcp_common.h> /* Driver includes */ #include "../../host/tcp-offload.h" diff --git a/drivers/nvme/hw/qedn/qedn_main.c b/drivers/nvme/hw/qedn/qedn_main.c index e3e8e3676b79..52007d35622d 100644 --- a/drivers/nvme/hw/qedn/qedn_main.c +++ b/drivers/nvme/hw/qedn/qedn_main.c @@ -27,9 +27,47 @@ static int qedn_claim_dev(struct nvme_tcp_ofld_dev *dev, struct nvme_tcp_ofld_ctrl_con_params *conn_params) { - /* Placeholder - qedn_claim_dev */ + struct pci_dev *qede_pdev = NULL; + struct net_device *ndev = NULL; + u16 vlan_id = 0; + int rc = 0; - return 0; + /* qedn utilizes host network stack through paired qede device for + * non-offload traffic. First we verify there is valid route to remote + * peer. + */ + if (conn_params->remote_ip_addr.ss_family == AF_INET) { + rc = qed_route_ipv4(&conn_params->local_ip_addr, + &conn_params->remote_ip_addr, + &conn_params->remote_mac_addr, + &ndev); + } else if (conn_params->remote_ip_addr.ss_family == AF_INET6) { + rc = qed_route_ipv6(&conn_params->local_ip_addr, + &conn_params->remote_ip_addr, + &conn_params->remote_mac_addr, + &ndev); + } else { + pr_err("address family %d not supported\n", + conn_params->remote_ip_addr.ss_family); + + return false; + } + + if (rc) + return false; + + qed_vlan_get_ndev(&ndev, &vlan_id); + conn_params->vlan_id = vlan_id; + + /* route found through ndev - validate this is qede*/ + qede_pdev = qed_validate_ndev(ndev); + if (!qede_pdev) + return false; + + dev->qede_pdev = qede_pdev; + dev->ndev = ndev; + + return true; } static int qedn_create_queue(struct nvme_tcp_ofld_queue *queue, int qid, -- 2.22.0
WARNING: multiple messages have this Message-ID (diff)
From: Shai Malin <smalin@marvell.com> To: <netdev@vger.kernel.org>, <linux-nvme@lists.infradead.org>, <sagi@grimberg.me>, <hch@lst.de>, <axboe@fb.com>, <kbusch@kernel.org> Cc: "David S . Miller davem @ davemloft . net --cc=Jakub Kicinski" <kuba@kernel.org>, smalin@marvell.com, aelior@marvell.com, mkalderon@marvell.com, okulkarni@marvell.com, pkushwaha@marvell.com, malin1024@gmail.com, "Nikolay Assa" <nassa@marvell.com> Subject: [RFC PATCH v4 18/27] qedn: Add qedn_claim_dev API support Date: Thu, 29 Apr 2021 22:09:17 +0300 [thread overview] Message-ID: <20210429190926.5086-19-smalin@marvell.com> (raw) In-Reply-To: <20210429190926.5086-1-smalin@marvell.com> From: Nikolay Assa <nassa@marvell.com> This patch introduces the qedn_claim_dev() network service which the offload device (qedn) is using through the paired net-device (qede). qedn_claim_dev() returns true if the IP addr(IPv4 or IPv6) of the target server is reachable via the net-device which is paired with the offloaded device. Acked-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: Nikolay Assa <nassa@marvell.com> Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com> Signed-off-by: Omkar Kulkarni <okulkarni@marvell.com> Signed-off-by: Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior <aelior@marvell.com> Signed-off-by: Shai Malin <smalin@marvell.com> --- drivers/nvme/hw/qedn/qedn.h | 4 +++ drivers/nvme/hw/qedn/qedn_main.c | 42 ++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/hw/qedn/qedn.h b/drivers/nvme/hw/qedn/qedn.h index c1ac17eabcb7..7efe2366eb7c 100644 --- a/drivers/nvme/hw/qedn/qedn.h +++ b/drivers/nvme/hw/qedn/qedn.h @@ -8,6 +8,10 @@ #include <linux/qed/qed_if.h> #include <linux/qed/qed_nvmetcp_if.h> +#include <linux/qed/qed_nvmetcp_ip_services_if.h> +#include <linux/qed/qed_chain.h> +#include <linux/qed/storage_common.h> +#include <linux/qed/nvmetcp_common.h> /* Driver includes */ #include "../../host/tcp-offload.h" diff --git a/drivers/nvme/hw/qedn/qedn_main.c b/drivers/nvme/hw/qedn/qedn_main.c index e3e8e3676b79..52007d35622d 100644 --- a/drivers/nvme/hw/qedn/qedn_main.c +++ b/drivers/nvme/hw/qedn/qedn_main.c @@ -27,9 +27,47 @@ static int qedn_claim_dev(struct nvme_tcp_ofld_dev *dev, struct nvme_tcp_ofld_ctrl_con_params *conn_params) { - /* Placeholder - qedn_claim_dev */ + struct pci_dev *qede_pdev = NULL; + struct net_device *ndev = NULL; + u16 vlan_id = 0; + int rc = 0; - return 0; + /* qedn utilizes host network stack through paired qede device for + * non-offload traffic. First we verify there is valid route to remote + * peer. + */ + if (conn_params->remote_ip_addr.ss_family == AF_INET) { + rc = qed_route_ipv4(&conn_params->local_ip_addr, + &conn_params->remote_ip_addr, + &conn_params->remote_mac_addr, + &ndev); + } else if (conn_params->remote_ip_addr.ss_family == AF_INET6) { + rc = qed_route_ipv6(&conn_params->local_ip_addr, + &conn_params->remote_ip_addr, + &conn_params->remote_mac_addr, + &ndev); + } else { + pr_err("address family %d not supported\n", + conn_params->remote_ip_addr.ss_family); + + return false; + } + + if (rc) + return false; + + qed_vlan_get_ndev(&ndev, &vlan_id); + conn_params->vlan_id = vlan_id; + + /* route found through ndev - validate this is qede*/ + qede_pdev = qed_validate_ndev(ndev); + if (!qede_pdev) + return false; + + dev->qede_pdev = qede_pdev; + dev->ndev = ndev; + + return true; } static int qedn_create_queue(struct nvme_tcp_ofld_queue *queue, int qid, -- 2.22.0 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2021-04-29 19:19 UTC|newest] Thread overview: 178+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-29 19:08 [RFC PATCH v4 00/27] NVMeTCP Offload ULP and QEDN Device Driver Shai Malin 2021-04-29 19:08 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 01/27] qed: Add NVMeTCP Offload PF Level FW and HW HSI Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 16:50 ` Hannes Reinecke 2021-05-01 16:50 ` Hannes Reinecke 2021-05-03 15:23 ` Shai Malin 2021-05-03 15:23 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 02/27] qed: Add NVMeTCP Offload Connection " Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 17:28 ` Hannes Reinecke 2021-05-01 17:28 ` Hannes Reinecke 2021-05-03 15:25 ` Shai Malin 2021-05-03 15:25 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 03/27] qed: Add qed-NVMeTCP personality Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:11 ` Hannes Reinecke 2021-05-02 11:11 ` Hannes Reinecke 2021-05-03 15:26 ` Shai Malin 2021-05-03 15:26 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 04/27] qed: Add support of HW filter block Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-29 23:37 ` kernel test robot 2021-05-02 11:13 ` Hannes Reinecke 2021-05-02 11:13 ` Hannes Reinecke 2021-05-03 15:27 ` Shai Malin 2021-05-03 15:27 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 05/27] qed: Add NVMeTCP Offload IO Level FW and HW HSI Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:22 ` Hannes Reinecke 2021-05-02 11:22 ` Hannes Reinecke 2021-05-04 16:25 ` Shai Malin 2021-05-04 16:25 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 06/27] qed: Add NVMeTCP Offload IO Level FW Initializations Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:24 ` Hannes Reinecke 2021-05-02 11:24 ` Hannes Reinecke 2021-05-04 16:28 ` Shai Malin 2021-05-04 16:28 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 07/27] qed: Add IP services APIs support Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:26 ` Hannes Reinecke 2021-05-02 11:26 ` Hannes Reinecke 2021-05-03 15:44 ` Shai Malin 2021-05-03 15:44 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 08/27] nvme-tcp-offload: Add nvme-tcp-offload - NVMeTCP HW offload ULP Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-29 22:22 ` kernel test robot 2021-04-29 22:22 ` [RFC PATCH] nvme-tcp-offload: nvme_tcp_ofld_report_queue_err() can be static kernel test robot 2021-05-01 12:18 ` [RFC PATCH v4 08/27] nvme-tcp-offload: Add nvme-tcp-offload - NVMeTCP HW offload ULP Hannes Reinecke 2021-05-01 12:18 ` Hannes Reinecke 2021-05-03 15:46 ` Shai Malin 2021-05-03 15:46 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 09/27] nvme-fabrics: Move NVMF_ALLOWED_OPTS and NVMF_REQUIRED_OPTS definitions Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 12:19 ` Hannes Reinecke 2021-05-01 12:19 ` Hannes Reinecke 2021-05-03 15:50 ` Shai Malin 2021-05-03 15:50 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 10/27] nvme-tcp-offload: Add device scan implementation Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-29 23:11 ` kernel test robot 2021-04-29 23:11 ` [RFC PATCH] nvme-tcp-offload: nvme_tcp_ofld_lookup_dev can be static kernel test robot 2021-04-30 3:01 ` [RFC PATCH v4 10/27] nvme-tcp-offload: Add device scan implementation kernel test robot 2021-04-30 4:09 ` kernel test robot 2021-05-01 12:25 ` Hannes Reinecke 2021-05-01 12:25 ` Hannes Reinecke 2021-05-05 17:52 ` Shai Malin 2021-05-05 17:52 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 11/27] nvme-tcp-offload: Add controller level implementation Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 16:27 ` Hannes Reinecke 2021-04-29 19:09 ` [RFC PATCH v4 12/27] nvme-tcp-offload: Add controller level error recovery implementation Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 16:29 ` Hannes Reinecke 2021-05-01 16:29 ` Hannes Reinecke 2021-05-03 15:52 ` Shai Malin 2021-05-03 15:52 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 13/27] nvme-tcp-offload: Add queue level implementation Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 16:36 ` Hannes Reinecke 2021-05-01 16:36 ` Hannes Reinecke 2021-05-03 15:56 ` Shai Malin 2021-05-03 15:56 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 14/27] nvme-tcp-offload: Add IO " Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-30 4:34 ` kernel test robot 2021-04-30 5:51 ` kernel test robot 2021-05-01 16:38 ` Hannes Reinecke 2021-05-01 16:38 ` Hannes Reinecke 2021-05-04 16:34 ` Shai Malin 2021-05-04 16:34 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 15/27] nvme-tcp-offload: Add Timeout and ASYNC Support Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-01 16:45 ` Hannes Reinecke 2021-05-01 16:45 ` Hannes Reinecke 2021-05-04 16:49 ` Shai Malin 2021-05-04 16:49 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 16/27] qedn: Add qedn - Marvell's NVMeTCP HW offload vendor driver Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:27 ` Hannes Reinecke 2021-05-02 11:27 ` Hannes Reinecke 2021-05-04 16:52 ` Shai Malin 2021-05-04 16:52 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 17/27] qedn: Add qedn probe Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-30 1:02 ` kernel test robot 2021-05-02 11:28 ` Hannes Reinecke 2021-05-02 11:28 ` Hannes Reinecke 2021-05-08 11:01 ` Shai Malin 2021-05-08 11:01 ` Shai Malin 2021-04-29 19:09 ` Shai Malin [this message] 2021-04-29 19:09 ` [RFC PATCH v4 18/27] qedn: Add qedn_claim_dev API support Shai Malin 2021-05-02 11:29 ` Hannes Reinecke 2021-05-02 11:29 ` Hannes Reinecke 2021-05-07 13:57 ` Shai Malin 2021-05-07 13:57 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 19/27] qedn: Add IRQ and fast-path resources initializations Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:32 ` Hannes Reinecke 2021-05-02 11:32 ` Hannes Reinecke 2021-05-05 17:54 ` Shai Malin 2021-05-05 17:54 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 20/27] qedn: Add connection-level slowpath functionality Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:37 ` Hannes Reinecke 2021-05-02 11:37 ` Hannes Reinecke 2021-05-05 17:56 ` Shai Malin 2021-05-05 17:56 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 21/27] qedn: Add support of configuring HW filter block Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:38 ` Hannes Reinecke 2021-05-02 11:38 ` Hannes Reinecke 2021-05-05 17:57 ` Shai Malin 2021-05-05 17:57 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 22/27] qedn: Add IO level nvme_req and fw_cq workqueues Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-29 23:03 ` kernel test robot 2021-05-02 11:42 ` Hannes Reinecke 2021-05-02 11:42 ` Hannes Reinecke 2021-05-07 13:56 ` Shai Malin 2021-05-07 13:56 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 23/27] qedn: Add support of Task and SGL Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:48 ` Hannes Reinecke 2021-05-02 11:48 ` Hannes Reinecke 2021-05-07 14:00 ` Shai Malin 2021-05-07 14:00 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 24/27] qedn: Add support of NVME ICReq & ICResp Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-30 0:01 ` kernel test robot 2021-05-02 11:53 ` Hannes Reinecke 2021-05-02 11:53 ` Hannes Reinecke 2021-05-05 18:01 ` Shai Malin 2021-05-05 18:01 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 25/27] qedn: Add IO level fastpath functionality Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-04-30 0:52 ` kernel test robot 2021-05-02 11:54 ` Hannes Reinecke 2021-05-02 11:54 ` Hannes Reinecke 2021-05-05 18:04 ` Shai Malin 2021-05-05 18:04 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 26/27] qedn: Add Connection and IO level recovery flows Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:57 ` Hannes Reinecke 2021-05-02 11:57 ` Hannes Reinecke 2021-05-05 18:06 ` Shai Malin 2021-05-05 18:06 ` Shai Malin 2021-04-29 19:09 ` [RFC PATCH v4 27/27] qedn: Add support of ASYNC Shai Malin 2021-04-29 19:09 ` Shai Malin 2021-05-02 11:59 ` Hannes Reinecke 2021-05-02 11:59 ` Hannes Reinecke 2021-05-05 18:08 ` Shai Malin 2021-05-05 18:08 ` Shai Malin 2021-05-01 16:47 ` [RFC PATCH v4 00/27] NVMeTCP Offload ULP and QEDN Device Driver Hannes Reinecke 2021-05-01 16:47 ` Hannes Reinecke 2021-05-03 15:13 ` Shai Malin 2021-05-03 15:13 ` Shai Malin
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=20210429190926.5086-19-smalin@marvell.com \ --to=smalin@marvell.com \ --cc=aelior@marvell.com \ --cc=axboe@fb.com \ --cc=hch@lst.de \ --cc=kbusch@kernel.org \ --cc=kuba@kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=malin1024@gmail.com \ --cc=mkalderon@marvell.com \ --cc=nassa@marvell.com \ --cc=netdev@vger.kernel.org \ --cc=okulkarni@marvell.com \ --cc=pkushwaha@marvell.com \ --cc=sagi@grimberg.me \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.