From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EC30C10F11 for ; Sat, 13 Apr 2019 16:21:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0D046208E3 for ; Sat, 13 Apr 2019 16:21:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="heqQpw8d" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727132AbfDMQVQ (ORCPT ); Sat, 13 Apr 2019 12:21:16 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:33173 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726998AbfDMQVQ (ORCPT ); Sat, 13 Apr 2019 12:21:16 -0400 Received: by mail-wm1-f66.google.com with SMTP id z6so2700741wmi.0 for ; Sat, 13 Apr 2019 09:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=+iDxE+mcpBaS7UsOiqhnjWihuOHE8ZDC0fgg0GCNg+I=; b=heqQpw8doxRf2olDQ7X/fTOyusrK02jxl4NG4Ws44g8p8ERaBzdCVbOpqZNnIQAX0j fr2KwKFOGs6hBp9nURLW6fUGYBGuKpQ5L0s+VylmpHEmz8qeNhUeILSuXOGZ3w5zbjLD aPt9rZzgEbiiQxoVaHTPioYqVjVX0KFam9DRho0HmZob7cNJ4NPYVHLZtOTtObxr1srt a4mBfIEjLftP1qob1/s6RnHtLhqLysPg/X2QgqSr3y0XXtkIEkXF87RkxY6sygdJFLnr Np0zDol7k5F1EsmPRLffwliYxbnOZl/wdwm+0pFaB8NwDK7McfQ5fmvTjD+0pTyH/Lwz Ze9g== 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; bh=+iDxE+mcpBaS7UsOiqhnjWihuOHE8ZDC0fgg0GCNg+I=; b=QaoInSpeoncqMjSk9OnDn0siCyxlcSk01ggO0yfrfr7s/0hN+bLJ0enT75umDDHCm8 rUCXq0N4d9ISHw4/BrXbVtiMN/VXizQGXPD4YWAg3NK+Ut8ihkjuCzDX5ibCBnCz8FoI DPqSuW6h1Mon2sCxMLChmK6QHz1aXpWeVbQZaJTC1PmSCG2tuodkDQ9tvgJpL2bVm3Su uni7DmCjVUcCPflYEMhwra0Lk6yYv+7RXKyPFLxniUyeeAg8aX42oP0Cg7HLNyUsXB2x 7mAlK4EkSOmMzsl9BwpojV7827/JSZCZ/L6/Tr3n2j5VhP+p1Y61kXhMGskmAtrc1FsU 9+8w== X-Gm-Message-State: APjAAAWPWECvDq2g/qd07XtyH5S/y26MWQiurvUGT5KslqsQ9J/eY2/R ZMkCMl1kkfVBNfWsu72HEX/1OfdlOec= X-Google-Smtp-Source: APXvYqw0bmuE5XrjWeH2ZRrLMsWMQEKlXs2VBHSBEK95ueQzK3+rIxitIc3LMRSnOlue3UtLQw5Wrg== X-Received: by 2002:a1c:a70f:: with SMTP id q15mr15147836wme.28.1555172474310; Sat, 13 Apr 2019 09:21:14 -0700 (PDT) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id z7sm43357462wrt.10.2019.04.13.09.21.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 13 Apr 2019 09:21:13 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, mlxsw@mellanox.com, jakub.kicinski@netronome.com Subject: [patch net-next rfc 00/15] netdevsim: impement proper device model Date: Sat, 13 Apr 2019 18:20:57 +0200 Message-Id: <20190413162112.8203-1-jiri@resnulli.us> X-Mailer: git-send-email 2.17.2 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Currently the model of netdevsim is a bit odd in multiple ways. 1) devlink instance is not in any way related with actual netdevsim netdevices. Instead, it is created per-namespace. 2) multi-port netdevsim device is done using "link" attribute. 3) netdevsim bus is there only to have something to bind the netdev to, it really does not act as a bus. 4) netdevsim instances are created by "ip link add" which is great for soft devices with no hw backend. The rtnl core allocates netdev and calls into driver holding rtnl mutex. For hw-backed devices, this flow is wrong as it breaks order in which things are done. This patchset adjust netdevsim to fix all above. In order to support proper devlink and devlink port instances and to be able to emulate real devices, there is need to implement bus probe and instantiate everything from there. User can specify device id and port count to be instantianted. For example: echo "10 4" > /sys/bus/netdevsim/new_device Then devlink shows this: $ devlink dev netdevsim/netdevsim10 $ devlink port netdevsim/netdevsim10/0: type eth netdev netdevsim10p1 flavour physical netdevsim/netdevsim10/1: type eth netdev netdevsim10p2 flavour physical netdevsim/netdevsim10/2: type eth netdev netdevsim10p3 flavour physical netdevsim/netdevsim10/3: type eth netdev netdevsim10p4 flavour physical Debugfs topology is also adjusted a bit. The rest stays the same as before. TODO: - teach udev to rename netdevsim netdevices similarly to pci netdevices - fix tools/testing/selftests/bpf/test_offload.py to work with new iface Jiri Pirko (15): netdevsim: move device registration on bus to be done earlier in init netdevsim: create devlink instance per netdevsim instance netdevsim: rename devlink.c to dev.c to contain per-dev(asic) items netdevsim: put netdevsim bus code into separate file netdevsim: move device registration and related code to bus.c netdevsim: add stub netdevsim driver implementation netdevsim: use ida for bus device ids netdevsim: add bus attributes to add new and delete devices netdevsim: rename dev_init/exit() functions and make them independent on ns netdevsim: merge sdev into dev netdevsim: generate random switch id instead of using dev id netdevsim: change debugfs tree topology netdevsim: implement dev probe/remove skeleton with port initialization netdevsim: move netdev creation/destruction to dev probe netdevsim: implement ndo_get_devlink_port drivers/net/netdevsim/Makefile | 2 +- drivers/net/netdevsim/bpf.c | 92 ++--- drivers/net/netdevsim/bus.c | 305 +++++++++++++++ drivers/net/netdevsim/dev.c | 385 +++++++++++++++++++ drivers/net/netdevsim/devlink.c | 295 --------------- drivers/net/netdevsim/fib.c | 103 +++-- drivers/net/netdevsim/ipsec.c | 3 +- drivers/net/netdevsim/netdev.c | 396 +++++--------------- drivers/net/netdevsim/netdevsim.h | 124 +++--- tools/testing/selftests/bpf/test_offload.py | 12 +- tools/testing/selftests/net/rtnetlink.sh | 8 +- 11 files changed, 964 insertions(+), 761 deletions(-) create mode 100644 drivers/net/netdevsim/bus.c create mode 100644 drivers/net/netdevsim/dev.c delete mode 100644 drivers/net/netdevsim/devlink.c -- 2.17.2