From patchwork Wed Sep 28 12:42:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 676206 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3skcqN1n1jz9sCg for ; Wed, 28 Sep 2016 22:45:04 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b=1TgwjkzF; dkim-atps=neutral Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id D81C410657; Wed, 28 Sep 2016 05:43:25 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx3v3.cudamail.com (mx3.cudamail.com [64.34.241.5]) by archives.nicira.com (Postfix) with ESMTPS id F38D210640 for ; Wed, 28 Sep 2016 05:43:22 -0700 (PDT) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id 89A74162439 for ; Wed, 28 Sep 2016 06:43:22 -0600 (MDT) X-ASG-Debug-ID: 1475066596-0b323739b9bbeb0001-byXFYA Received: from mx1-pf1.cudamail.com ([192.168.24.1]) by bar6.cudamail.com with ESMTP id 0eolPksiOEEGa41Y (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Wed, 28 Sep 2016 06:43:16 -0600 (MDT) X-Barracuda-Envelope-From: simon.horman@netronome.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.1 Received: from unknown (HELO mail-wm0-f51.google.com) (74.125.82.51) by mx1-pf1.cudamail.com with ESMTPS (AES128-SHA encrypted); 28 Sep 2016 12:43:15 -0000 Received-SPF: neutral (mx1-pf1.cudamail.com: 74.125.82.51 is neither permitted nor denied by SPF record at mktomail.com) X-Barracuda-Apparent-Source-IP: 74.125.82.51 X-Barracuda-RBL-IP: 74.125.82.51 Received: by mail-wm0-f51.google.com with SMTP id l132so234063443wmf.0 for ; Wed, 28 Sep 2016 05:43:15 -0700 (PDT) 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; bh=n5FFxiUO8QP9RW210TFMy8eJftHfqJaGVptdqcKHYoo=; b=1TgwjkzFGLUt51yCe+XQZzVLdfAvbpXG3dvhhFFa7XDPlKZAOHa2tdR5Cit/+vG6ob Ot5BZVIDs0yxyK4STJJosFmXJaLbEHz+htemHBFM2zjcO/ruIMiyEKMQde8NzuMo4znw PJyISVEM+dQmyLXX3nNaAqf1Avj8Z2TDFV9EzrQxNv3ao/KO7vD7/bdNDUDKC3SP2a5E YqlYU6oQD96Q84jJc55lejpeVDyIeqagKusKHK1is7CdSjDXhzbxuAVWNO/1dE7utOx+ acKLT5BmlrBbb+wFWqD94y0n6Xym3pkJiyYUc9TGQIQvR9ggMGwb9vOy5cp8AcZVC+ln 9C3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=n5FFxiUO8QP9RW210TFMy8eJftHfqJaGVptdqcKHYoo=; b=gJyvaDf/LSLg9h8kPOUhxXn0TRcL9BwmwJCTSwOIKH1GyXy82wZQN8oj38pQw7oIGl WoDncRAhkFKAnloEw59/tL0FvoWz9sM0hKYmikImPlkrWvKWpAgI8Xws5AVgZUP72OeV 3klbZyWRtnw9WmmVQWNFCsUpIubK7FJkjVlXMrkkbmXlRUiWRLargH8Bz3cybEY0OZFt B/IDzpaSrFsG0Ss2G5B4cm9sECo7IAAi/LAUTOVrnvfLJO0dJspcaImxkqCfyr/RY5SR iXPUGjT+rnrHg5gZepqJ38Tvoi5UsIeAJzsNCzmUmyJasFD3a/J/e20puNsSTArdrhjC uuNA== X-Gm-Message-State: AA6/9RmLDXkL964ibRINimtilY8SC2UXL6qPOGzcxgPsGRMFMT7TdQioY2V1Y/Hi+7YfLIZW X-Received: by 10.28.56.196 with SMTP id f187mr7668228wma.120.1475066594425; Wed, 28 Sep 2016 05:43:14 -0700 (PDT) Received: from penelope.horms.nl (52D9BC73.cm-11-1c.dynamic.ziggo.nl. [82.217.188.115]) by smtp.gmail.com with ESMTPSA id g17sm8661670wme.3.2016.09.28.05.43.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 28 Sep 2016 05:43:13 -0700 (PDT) X-CudaMail-Envelope-Sender: simon.horman@netronome.com From: Simon Horman To: netdev@vger.kernel.org, dev@openvswitch.org X-CudaMail-MID: CM-E1-927012415 X-CudaMail-DTE: 092816 X-CudaMail-Originating-IP: 74.125.82.51 Date: Wed, 28 Sep 2016 14:42:55 +0200 X-ASG-Orig-Subj: [##CM-E1-927012415##][PATCH/RFC 05/12] rocker: Support Open vSwitch (-like) flow stats Message-Id: <1475066582-1971-6-git-send-email-simon.horman@netronome.com> X-Mailer: git-send-email 2.7.0.rc3.207.g0ac5344 In-Reply-To: <1475066582-1971-1-git-send-email-simon.horman@netronome.com> References: <1475066582-1971-1-git-send-email-simon.horman@netronome.com> X-Barracuda-Connect: UNKNOWN[192.168.24.1] X-Barracuda-Start-Time: 1475066596 X-Barracuda-Encrypted: ECDHE-RSA-AES256-GCM-SHA384 X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using global scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=4.0 tests=BSF_SC0_MISMATCH_TO, BSF_SC5_MJ1963, DKIM_SIGNED, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.33289 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Cc: Simon Horman Subject: [ovs-dev] [PATCH/RFC 05/12] rocker: Support Open vSwitch (-like) flow stats X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" Prototype an implementation of the new switchdev_port_obj_get SDO for the SWITCHDEV_OBJ_OVS_FLOW object type. This allows retrieval of statistics for Open vSwitch (-like) flows which have been programmed into hardware. Signed-off-by: Simon Horman --- drivers/net/ethernet/rocker/rocker.h | 2 ++ drivers/net/ethernet/rocker/rocker_main.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/drivers/net/ethernet/rocker/rocker.h b/drivers/net/ethernet/rocker/rocker.h index ebcc863fd25e..332adce701fa 100644 --- a/drivers/net/ethernet/rocker/rocker.h +++ b/drivers/net/ethernet/rocker/rocker.h @@ -122,6 +122,8 @@ struct rocker_world_ops { struct switchdev_trans *trans); int (*port_obj_sw_flow_del)(struct rocker_port *rocker_port, const struct switchdev_obj_sw_flow *sw_flow); + int (*port_obj_sw_flow_get_stats)(struct rocker_port *rocker_port, + const struct switchdev_obj_sw_flow *sw_flow); int (*port_obj_fib4_add)(struct rocker_port *rocker_port, const struct switchdev_obj_ipv4_fib *fib4, struct switchdev_trans *trans); diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c index e019772689a6..6c6a486cced6 100644 --- a/drivers/net/ethernet/rocker/rocker_main.c +++ b/drivers/net/ethernet/rocker/rocker_main.c @@ -1703,6 +1703,16 @@ static int rocker_world_port_obj_sw_flow_del(struct rocker_port *rocker_port, return wops->port_obj_sw_flow_del(rocker_port, sw_flow); } +static int rocker_world_port_obj_sw_flow_get_stats(struct rocker_port *rocker_port, + const struct switchdev_obj_sw_flow *sw_flow) +{ + struct rocker_world_ops *wops = rocker_port->rocker->wops; + + if (!wops->port_obj_sw_flow_get_stats) + return -EOPNOTSUPP; + return wops->port_obj_sw_flow_get_stats(rocker_port, sw_flow); +} + static int rocker_world_port_master_linked(struct rocker_port *rocker_port, struct net_device *master) { @@ -2197,12 +2207,32 @@ static int rocker_port_obj_dump(struct net_device *dev, return err; } +static int rocker_port_obj_get(struct net_device *dev, + struct switchdev_obj *obj) +{ + struct rocker_port *rocker_port = netdev_priv(dev); + int err = 0; + + switch (obj->id) { + case SWITCHDEV_OBJ_SW_FLOW: + err = rocker_world_port_obj_sw_flow_get_stats(rocker_port, + SWITCHDEV_OBJ_SW_FLOW(obj)); + break; + default: + err = -EOPNOTSUPP; + break; + } + + return err; +} + static const struct switchdev_ops rocker_port_switchdev_ops = { .switchdev_port_attr_get = rocker_port_attr_get, .switchdev_port_attr_set = rocker_port_attr_set, .switchdev_port_obj_add = rocker_port_obj_add, .switchdev_port_obj_del = rocker_port_obj_del, .switchdev_port_obj_dump = rocker_port_obj_dump, + .switchdev_port_obj_get = rocker_port_obj_get, }; /********************