From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 35E6D467A2; Wed, 21 May 2025 00:48:26 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D8826402E6; Wed, 21 May 2025 00:48:25 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 719EA402D6; Wed, 21 May 2025 00:48:23 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1202) id 6DF8720277E4; Tue, 20 May 2025 15:48:22 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6DF8720277E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxonhyperv.com; s=default; t=1747781302; bh=ZMxYSm/9a7F09gDdeoxOAz3rzI21XQ51J7LJsTHEdEs=; h=From:To:Cc:Subject:Date:From; b=BSbv2oXaxIOPfPineBKrHB46BDLaS6H1+Dl02WOvCzV5fLBK2tVnp+dWnQWMyF4H9 YDyTLmXEvcc9xA56bVQBbf7C3ijuhCjgilb8R2taRllZMoO8g+4shIMQYf+SQwtTdM cWzU1hLHGZqpvqSZqeR5Mu3cG1LCX7/tlkuw2O/g= From: longli@linuxonhyperv.com To: Stephen Hemminger , Wei Hu Cc: dev@dpdk.org, Long Li , stable@dpdk.org Subject: [PATCH] net/mana: check for vendor_part_id when probing RDMA device Date: Tue, 20 May 2025 15:48:16 -0700 Message-Id: <1747781296-19645-1-git-send-email-longli@linuxonhyperv.com> X-Mailer: git-send-email 1.8.3.1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Long Li The RDMA kernel driver may expose two MANA RDMA devices, for RC and RAW QP types. The purpose is to support fast service mode at SOC. Depending on kernel version, the probe may fail if DPDK picks up the wrong device. Add check for vendor_part_id and RAW QP capability when probing the MANA device. This check is compatible with all kernel versions. Cc: stable@dpdk.org Fixes: 517ed6e2d590 ("net/mana: add basic driver with build environment") Signed-off-by: Long Li --- drivers/net/mana/mana.c | 14 ++++++++++++++ drivers/net/mana/mana.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c index 2934da29f7..c42a987a30 100644 --- a/drivers/net/mana/mana.c +++ b/drivers/net/mana/mana.c @@ -1490,6 +1490,20 @@ mana_pci_probe_mac(struct rte_pci_device *pci_dev, continue; } + if (dev_attr.orig_attr.vendor_part_id) { + if (dev_attr.orig_attr.vendor_part_id != + GDMA_DEVICE_MANA) { + DRV_LOG(INFO, "Skip device vendor part id %x", + dev_attr.orig_attr.vendor_part_id); + continue; + } + if (!dev_attr.raw_packet_caps) { + DRV_LOG(INFO, + "Skip device without RAW support"); + continue; + } + } + for (port = 1; port <= dev_attr.orig_attr.phys_port_cnt; port++) { struct rte_ether_addr addr; diff --git a/drivers/net/mana/mana.h b/drivers/net/mana/mana.h index 855d98911b..6309cae76b 100644 --- a/drivers/net/mana/mana.h +++ b/drivers/net/mana/mana.h @@ -12,6 +12,10 @@ struct mana_shared_data { RTE_ATOMIC(uint32_t) secondary_cnt; }; +/* vendor_part_id returned from ibv_query_device */ +#define GDMA_DEVICE_MANA 2 +#define GDMA_DEVICE_MANA_IB 3 + #define MANA_MAX_MTU 9000 #define MIN_RX_BUF_SIZE 1024 #define MANA_MAX_MAC_ADDR 1 -- 2.34.1