From patchwork Thu Mar 3 18:20:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ben@skyportsystems.com X-Patchwork-Id: 591558 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 065D4140C7B for ; Fri, 4 Mar 2016 05:24:25 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=skyportsystems.com header.i=@skyportsystems.com header.b=52O63EeN; dkim-atps=neutral Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 12BFF22C41F; Thu, 3 Mar 2016 10:21:38 -0800 (PST) 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 146F422C40C for ; Thu, 3 Mar 2016 10:21:36 -0800 (PST) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id A08FE162408 for ; Thu, 3 Mar 2016 11:21:35 -0700 (MST) X-ASG-Debug-ID: 1457029294-0b32372d78412350001-byXFYA Received: from mx1-pf2.cudamail.com ([192.168.24.2]) by bar6.cudamail.com with ESMTP id wbIoxtcDjrVE184W (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 03 Mar 2016 11:21:34 -0700 (MST) X-Barracuda-Envelope-From: ben@skyportsystems.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.2 Received: from unknown (HELO mail-pf0-f171.google.com) (209.85.192.171) by mx1-pf2.cudamail.com with ESMTPS (RC4-SHA encrypted); 3 Mar 2016 18:21:34 -0000 Received-SPF: pass (mx1-pf2.cudamail.com: SPF record at _netblocks.google.com designates 209.85.192.171 as permitted sender) X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.171 Received: by mail-pf0-f171.google.com with SMTP id w128so19483559pfb.2 for ; Thu, 03 Mar 2016 10:21:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skyportsystems.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=2qBck6b7gPca+asbdE0Vg0CWvvo+TiDT9M8sc4HLPcs=; b=52O63EeNxJcehn2BB1wXcolnMduZGZMCwbBrXTYHQsAU1O1ypBG3k4BzFiBZYGrT3u bpbzS1tfaJTb3p7FrFfo48RTunQ4w2cqlcwJxOv9+cn4nAnGmVEFfRUoj1pkkA5MMj1u SqRDDX8sHmT8Uh75tSxNS83U6deL9MMt0SZlU= 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:in-reply-to:references; bh=2qBck6b7gPca+asbdE0Vg0CWvvo+TiDT9M8sc4HLPcs=; b=nGgoapRqgxn1CFo5W2c0metpbpcewQvQX1sUiTPOFl+7A6eVqpmNPEkXffbR9EhF8N 0LQafopjI+Cgnq3EYnnESffJn/kFGUSAFrXgcluDmEPQ527hn1F4xzulXmwGUF9cNXSi OLm9DbweepnXQ+dtgWtx5M8zuv0B0TXwS0S3HFx5o90DiRhJ2v6BrDKlRdgCv4RDOgH8 PQyQhf0UkAo7geESY79VAgMurYbfc+wz7HEB+DwG8cOLZnmIphZPQbKvVfL1mQTYqSdE KjiENNQnvG4M3+80wo9gq6HRMsyZCL0XEPJU7bMpMKyaXnyXCZmAqZoC6Dkyxc6z1ySu r+nw== X-Gm-Message-State: AD7BkJKZIF11NRSTpjN55xZ8x4HQi1yFgB+12XiGk+/dA5F/XgjnNRbhOgPzmbq4n4Fq2tcm X-Received: by 10.98.79.28 with SMTP id d28mr5570129pfb.77.1457029293421; Thu, 03 Mar 2016 10:21:33 -0800 (PST) Received: from Arrow.corp.skyportsystems.com (67-207-112-138.static.wiline.com. [67.207.112.138]) by smtp.gmail.com with ESMTPSA id g25sm62149841pfg.35.2016.03.03.10.21.32 (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 03 Mar 2016 10:21:32 -0800 (PST) X-CudaMail-Envelope-Sender: ben@skyportsystems.com X-Barracuda-Apparent-Source-IP: 67.207.112.138 From: ben@skyportsystems.com To: dev@openvswitch.org X-CudaMail-MID: CM-E2-302055956 X-CudaMail-DTE: 030316 X-CudaMail-Originating-IP: 209.85.192.171 Date: Thu, 3 Mar 2016 10:20:59 -0800 X-ASG-Orig-Subj: [##CM-E2-302055956##][PATCH v2 19/23] Break netdev.h into private and public parts Message-Id: X-Mailer: git-send-email 2.5.4 (Apple Git-61) In-Reply-To: References: In-Reply-To: References: X-GBUdb-Analysis: 0, 209.85.192.171, Ugly c=0.389962 p=-0.363636 Source Normal X-MessageSniffer-Rules: 0-0-0-16798-c X-Barracuda-Connect: UNKNOWN[192.168.24.2] X-Barracuda-Start-Time: 1457029294 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA 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 per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=4.0 tests=BSF_SC5_MJ1963, DKIM_SIGNED, NO_REAL_NAME, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.27543 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 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: Ben Warren Subject: [ovs-dev] [PATCH v2 19/23] Break netdev.h into private and public parts 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" From: Ben Warren Public (struct definitions and some prototypes) go in include/openvswitch Signed-off-by: Ben Warren --- include/openvswitch/automake.mk | 1 + include/openvswitch/netdev.h | 87 +++++++++++++++++++++++++++++++++++++++++ lib/netdev.h | 66 +------------------------------ 3 files changed, 89 insertions(+), 65 deletions(-) create mode 100644 include/openvswitch/netdev.h diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk index 17beb2d..86c836c 100644 --- a/include/openvswitch/automake.mk +++ b/include/openvswitch/automake.mk @@ -7,6 +7,7 @@ openvswitchinclude_HEADERS = \ include/openvswitch/list.h \ include/openvswitch/match.h \ include/openvswitch/meta-flow.h \ + include/openvswitch/netdev.h \ include/openvswitch/ofpbuf.h \ include/openvswitch/ofp-errors.h \ include/openvswitch/ofp-parse.h \ diff --git a/include/openvswitch/netdev.h b/include/openvswitch/netdev.h new file mode 100644 index 0000000..fa5e8f2 --- /dev/null +++ b/include/openvswitch/netdev.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OPENVSWITCH_NETDEV_H +#define OPENVSWITCH_NETDEV_H 1 + +#include +#include +#include + +struct netdev; + +/* Network device statistics. + * + * Values of unsupported statistics are set to all-1-bits (UINT64_MAX). */ +struct netdev_stats { + uint64_t rx_packets; /* Total packets received. */ + uint64_t tx_packets; /* Total packets transmitted. */ + uint64_t rx_bytes; /* Total bytes received. */ + uint64_t tx_bytes; /* Total bytes transmitted. */ + uint64_t rx_errors; /* Bad packets received. */ + uint64_t tx_errors; /* Packet transmit problems. */ + uint64_t rx_dropped; /* No buffer space. */ + uint64_t tx_dropped; /* No buffer space. */ + uint64_t multicast; /* Multicast packets received. */ + uint64_t collisions; + + /* Detailed receive errors. */ + uint64_t rx_length_errors; + uint64_t rx_over_errors; /* Receiver ring buff overflow. */ + uint64_t rx_crc_errors; /* Recved pkt with crc error. */ + uint64_t rx_frame_errors; /* Recv'd frame alignment error. */ + uint64_t rx_fifo_errors; /* Recv'r fifo overrun . */ + uint64_t rx_missed_errors; /* Receiver missed packet. */ + + /* Detailed transmit errors. */ + uint64_t tx_aborted_errors; + uint64_t tx_carrier_errors; + uint64_t tx_fifo_errors; + uint64_t tx_heartbeat_errors; + uint64_t tx_window_errors; +}; + +/* Features. */ +enum netdev_features { + NETDEV_F_10MB_HD = 1 << 0, /* 10 Mb half-duplex rate support. */ + NETDEV_F_10MB_FD = 1 << 1, /* 10 Mb full-duplex rate support. */ + NETDEV_F_100MB_HD = 1 << 2, /* 100 Mb half-duplex rate support. */ + NETDEV_F_100MB_FD = 1 << 3, /* 100 Mb full-duplex rate support. */ + NETDEV_F_1GB_HD = 1 << 4, /* 1 Gb half-duplex rate support. */ + NETDEV_F_1GB_FD = 1 << 5, /* 1 Gb full-duplex rate support. */ + NETDEV_F_10GB_FD = 1 << 6, /* 10 Gb full-duplex rate support. */ + NETDEV_F_40GB_FD = 1 << 7, /* 40 Gb full-duplex rate support. */ + NETDEV_F_100GB_FD = 1 << 8, /* 100 Gb full-duplex rate support. */ + NETDEV_F_1TB_FD = 1 << 9, /* 1 Tb full-duplex rate support. */ + NETDEV_F_OTHER = 1 << 10, /* Other rate, not in the list. */ + NETDEV_F_COPPER = 1 << 11, /* Copper medium. */ + NETDEV_F_FIBER = 1 << 12, /* Fiber medium. */ + NETDEV_F_AUTONEG = 1 << 13, /* Auto-negotiation. */ + NETDEV_F_PAUSE = 1 << 14, /* Pause. */ + NETDEV_F_PAUSE_ASYM = 1 << 15, /* Asymmetric pause. */ +}; + +int netdev_get_features(const struct netdev *, + enum netdev_features *current, + enum netdev_features *advertised, + enum netdev_features *supported, + enum netdev_features *peer); +uint64_t netdev_features_to_bps(enum netdev_features features, + uint64_t default_bps); +bool netdev_features_is_full_duplex(enum netdev_features features); +int netdev_set_advertisements(struct netdev *, enum netdev_features advertise); + +#endif /* netdev.h */ diff --git a/lib/netdev.h b/lib/netdev.h index a81989e..63fb394 100644 --- a/lib/netdev.h +++ b/lib/netdev.h @@ -17,9 +17,7 @@ #ifndef NETDEV_H #define NETDEV_H 1 -#include -#include -#include +#include "openvswitch/netdev.h" #include "openvswitch/types.h" #include "packets.h" #include "flow.h" @@ -62,7 +60,6 @@ extern "C" { */ struct dp_packet; -struct netdev; struct netdev_class; struct netdev_rxq; struct netdev_saved_flags; @@ -73,37 +70,6 @@ struct smap; struct sset; struct ovs_action_push_tnl; -/* Network device statistics. - * - * Values of unsupported statistics are set to all-1-bits (UINT64_MAX). */ -struct netdev_stats { - uint64_t rx_packets; /* Total packets received. */ - uint64_t tx_packets; /* Total packets transmitted. */ - uint64_t rx_bytes; /* Total bytes received. */ - uint64_t tx_bytes; /* Total bytes transmitted. */ - uint64_t rx_errors; /* Bad packets received. */ - uint64_t tx_errors; /* Packet transmit problems. */ - uint64_t rx_dropped; /* No buffer space. */ - uint64_t tx_dropped; /* No buffer space. */ - uint64_t multicast; /* Multicast packets received. */ - uint64_t collisions; - - /* Detailed receive errors. */ - uint64_t rx_length_errors; - uint64_t rx_over_errors; /* Receiver ring buff overflow. */ - uint64_t rx_crc_errors; /* Recved pkt with crc error. */ - uint64_t rx_frame_errors; /* Recv'd frame alignment error. */ - uint64_t rx_fifo_errors; /* Recv'r fifo overrun . */ - uint64_t rx_missed_errors; /* Receiver missed packet. */ - - /* Detailed transmit errors. */ - uint64_t tx_aborted_errors; - uint64_t tx_carrier_errors; - uint64_t tx_fifo_errors; - uint64_t tx_heartbeat_errors; - uint64_t tx_window_errors; -}; - /* Configuration specific to tunnels. */ struct netdev_tunnel_config { bool in_key_present; @@ -204,36 +170,6 @@ bool netdev_get_carrier(const struct netdev *); long long int netdev_get_carrier_resets(const struct netdev *); int netdev_set_miimon_interval(struct netdev *, long long int interval); -/* Features. */ -enum netdev_features { - NETDEV_F_10MB_HD = 1 << 0, /* 10 Mb half-duplex rate support. */ - NETDEV_F_10MB_FD = 1 << 1, /* 10 Mb full-duplex rate support. */ - NETDEV_F_100MB_HD = 1 << 2, /* 100 Mb half-duplex rate support. */ - NETDEV_F_100MB_FD = 1 << 3, /* 100 Mb full-duplex rate support. */ - NETDEV_F_1GB_HD = 1 << 4, /* 1 Gb half-duplex rate support. */ - NETDEV_F_1GB_FD = 1 << 5, /* 1 Gb full-duplex rate support. */ - NETDEV_F_10GB_FD = 1 << 6, /* 10 Gb full-duplex rate support. */ - NETDEV_F_40GB_FD = 1 << 7, /* 40 Gb full-duplex rate support. */ - NETDEV_F_100GB_FD = 1 << 8, /* 100 Gb full-duplex rate support. */ - NETDEV_F_1TB_FD = 1 << 9, /* 1 Tb full-duplex rate support. */ - NETDEV_F_OTHER = 1 << 10, /* Other rate, not in the list. */ - NETDEV_F_COPPER = 1 << 11, /* Copper medium. */ - NETDEV_F_FIBER = 1 << 12, /* Fiber medium. */ - NETDEV_F_AUTONEG = 1 << 13, /* Auto-negotiation. */ - NETDEV_F_PAUSE = 1 << 14, /* Pause. */ - NETDEV_F_PAUSE_ASYM = 1 << 15, /* Asymmetric pause. */ -}; - -int netdev_get_features(const struct netdev *, - enum netdev_features *current, - enum netdev_features *advertised, - enum netdev_features *supported, - enum netdev_features *peer); -uint64_t netdev_features_to_bps(enum netdev_features features, - uint64_t default_bps); -bool netdev_features_is_full_duplex(enum netdev_features features); -int netdev_set_advertisements(struct netdev *, enum netdev_features advertise); - /* Flags. */ enum netdev_flags { NETDEV_UP = 0x0001, /* Device enabled? */