From patchwork Fri Mar 1 18:35:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1050340 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="l9lsUBe9"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 449ylj4Sxjz9s5R for ; Sat, 2 Mar 2019 05:35:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728313AbfCASfY (ORCPT ); Fri, 1 Mar 2019 13:35:24 -0500 Received: from mail-qt1-f195.google.com ([209.85.160.195]:38675 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726195AbfCASfX (ORCPT ); Fri, 1 Mar 2019 13:35:23 -0500 Received: by mail-qt1-f195.google.com with SMTP id s1so28913317qte.5 for ; Fri, 01 Mar 2019 10:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Iq/2Tp2YlbluJXkLD/Zw85IfQAoN+wAvf5NGtzHI9DI=; b=l9lsUBe9FnhOKiwe5FYvWeivP/SRpr315nbWYACiKDFsHgmXo5wmPr/KWH9d8DBeAt 27XqWxwuRmrB9iQnlBt7eMwa46J1mtxR2b1GYJdJAnyzP8sd0d7InRj8py3XQC1isYFc wdrPDGVtuFCclLfskX9+Uh6EAYvdSBb1H4aq7yuc9oKHs5V06j8ESxWLuzBjz4fcN8Tf QxoYvy5hBmKXYxUmTxw4zljt4Qefm9z5bBwNYQWO3oZsc+043gWJEXMVyhOGU+MHiTEQ 20sn0Mt6VlYiynirKs8Hf6d9Qg9WZN3f3Z6NfNWIlX6JHaKR2Pl4dMDHQMNEgyziqi8q sVXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Iq/2Tp2YlbluJXkLD/Zw85IfQAoN+wAvf5NGtzHI9DI=; b=YtKM0dkV7Mf19SoDygI+iYKSHyK7EdtBY2LvDEys3G0SUSj1hbsFBvcw3326+oavH+ ghAGgjRrFDgbXgY7ddp8OR7OcOYJ4vDiXEcpn75WeSBHFABpGt8nKQOviuYWoe2NL2Tz Nk5tf/77nRoMfKrv8vcLR04GNo5+wv/JewOv/V881OPYZr9PO9hivpyH5Vbp3WXq7nHw do67u2Ij2EvIGhpNb/NONNfOMPU3E8L6o5dyViGsje7g3OIzQxIphpxyW2pUFmu0tiWn V5VjeUGcl136KRGMAt3CXddgKoIGW2l+pTKNGlawavV2X9ZMmoJlqbCT3Ej/Xlc7koQI n05w== X-Gm-Message-State: APjAAAWQeCI4NIIJ91fEIGeokKIcKvFSELQOHMpFx1m5iYFJAZ4Eldw+ z8B8Jpwy8wWEPN1UODOKO5YMlQ== X-Google-Smtp-Source: APXvYqxgZOnr5v5MpCNAIKrOKSB91bI9JrWf64qfal1kkQ9LDDNRazN8DkoSdIoH2AFLDHNhhwaASA== X-Received: by 2002:ac8:2b34:: with SMTP id 49mr5141705qtu.32.1551465322055; Fri, 01 Mar 2019 10:35:22 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id y21sm15542906qth.90.2019.03.01.10.35.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Mar 2019 10:35:21 -0800 (PST) From: Jakub Kicinski To: jiri@resnulli.us Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [RFC iproute2-next 1/3] devlink: add support for PCIe port flavours Date: Fri, 1 Mar 2019 10:35:08 -0800 Message-Id: <20190301183510.9028-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190301183510.9028-1-jakub.kicinski@netronome.com> References: <20190301183510.9028-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add support for decoding PCIe port flavours. Example: $ devlink port pci/0000:82:00.0/0: type eth netdev p4p1 flavour physical pci/0000:82:00.0/10000: type eth netdev eth0 flavour pcie_pf pf 0 pci/0000:82:00.0/10001: type eth netdev eth1 flavour pcie_vf pf 0 vf 0 pci/0000:82:00.0/10002: type eth netdev eth2 flavour pcie_vf pf 0 vf 1 $ devlink -jp port { "port": { "pci/0000:82:00.0/0": { "type": "eth", "netdev": "p4p1", "flavour": "physical" }, "pci/0000:82:00.0/10000": { "type": "eth", "netdev": "eth0", "flavour": "pci_pf", "pf": 0, }, "pci/0000:82:00.0/10001": { "type": "eth", "netdev": "eth1", "flavour": "pci_vf", "pf": 0, "vf": 0 }, "pci/0000:82:00.0/10002": { "type": "eth", "netdev": "eth2", "flavour": "pci_vf", "pf": 0, "vf": 1 } } } Signed-off-by: Jakub Kicinski --- devlink/devlink.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/devlink/devlink.c b/devlink/devlink.c index dc6e73fec20c..055b09808226 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -414,6 +414,8 @@ static const enum mnl_attr_data_type devlink_policy[DEVLINK_ATTR_MAX + 1] = { [DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT] = MNL_TYPE_U64, [DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS] = MNL_TYPE_U64, [DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD] = MNL_TYPE_U64, + [DEVLINK_ATTR_PORT_PCI_PF_NUMBER] = MNL_TYPE_U32, + [DEVLINK_ATTR_PORT_PCI_VF_NUMBER] = MNL_TYPE_U32, }; static int attr_cb(const struct nlattr *attr, void *data) @@ -2771,6 +2773,10 @@ static const char *port_flavour_name(uint16_t flavour) return "cpu"; case DEVLINK_PORT_FLAVOUR_DSA: return "dsa"; + case DEVLINK_PORT_FLAVOUR_PCI_PF: + return "pci_pf"; + case DEVLINK_PORT_FLAVOUR_PCI_VF: + return "pci_vf"; default: return ""; } @@ -2809,6 +2815,13 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) if (tb[DEVLINK_ATTR_PORT_SPLIT_GROUP]) pr_out_uint(dl, "split_group", mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_SPLIT_GROUP])); + if (tb[DEVLINK_ATTR_PORT_PCI_PF_NUMBER]) + pr_out_uint(dl, "pf", + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_PCI_PF_NUMBER])); + if (tb[DEVLINK_ATTR_PORT_PCI_VF_NUMBER]) + pr_out_uint(dl, "vf", + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_PCI_VF_NUMBER])); + pr_out_port_handle_end(dl); }