From patchwork Mon Mar 21 18:58:24 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: 600279 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 3qTQC56Hcpz9ryW for ; Tue, 22 Mar 2016 06:00:49 +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=COdLnsGj; dkim-atps=neutral Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id DB3B410585; Mon, 21 Mar 2016 11:59:01 -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 262F110530 for ; Mon, 21 Mar 2016 11:58:57 -0700 (PDT) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id 7A39F161A26 for ; Mon, 21 Mar 2016 12:58:56 -0600 (MDT) X-ASG-Debug-ID: 1458586735-0b323727606b4c50001-byXFYA Received: from mx1-pf2.cudamail.com ([192.168.24.2]) by bar6.cudamail.com with ESMTP id palFHePbm11i1tsk (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 21 Mar 2016 12:58:55 -0600 (MDT) X-Barracuda-Envelope-From: ben@skyportsystems.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.2 Received: from unknown (HELO mail-pf0-f180.google.com) (209.85.192.180) by mx1-pf2.cudamail.com with ESMTPS (RC4-SHA encrypted); 21 Mar 2016 18:58:54 -0000 Received-SPF: pass (mx1-pf2.cudamail.com: SPF record at _netblocks.google.com designates 209.85.192.180 as permitted sender) X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.180 Received: by mail-pf0-f180.google.com with SMTP id x3so275217969pfb.1 for ; Mon, 21 Mar 2016 11:58:54 -0700 (PDT) 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=COdLnsGjTjXYextkWbLx4KMGVKiT+CZo0y4uRlYr9j2L9lgkn0Hm0erbkJ7oodS6dD Kh4xsJYwJZA6yQJkPmJ7rjidO1hZHUs3yuZT7rmAj21dmB26HUX9mJohqiz546E5We8S GHZfa06hxUVzSwOuPAOngQe89h1n6oKMJ83/c= 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=igb/3vWjrBVL6OGCsfY0+Td33nPj8FZzcX6TDLct9x14drkaFgdgdEE1G2xoja8RyN O7q7WI2olzKjkMx1/lMUY6UYhBx/+Y7NPgxA+9P5QRM3z5Q4uzahj8sqCjuG61szD3k3 qEdkTcR/75zz2/itvUMTLRGDefF/QO9VOJyj9xA84HB0Tibx7z82sxhv6wkNlad3+kfp 0puoxFmfcs+4V4JvwINJyFu0iYc3kjNasg0cqNo1qwY4SGmtQSkKitslatAopF/3YVM7 g6z9dzLOoj5kWGPD0PObwOt2zdXV5d0lL2TN9tzolcCdlBRn9wj/P8+yov0u8aa1rjr1 ZpyQ== X-Gm-Message-State: AD7BkJIIOw21LmbMAwv2A2iMCoDhC/ZyFU533huhXr0T7gmpscI+CH+OILt5YPVAQfdABkDS X-Received: by 10.98.10.29 with SMTP id s29mr41229749pfi.166.1458586733937; Mon, 21 Mar 2016 11:58:53 -0700 (PDT) Received: from Arrow.corp.skyportsystems.com (67-207-112-138.static.wiline.com. [67.207.112.138]) by smtp.gmail.com with ESMTPSA id a22sm42472831pfj.2.2016.03.21.11.58.53 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 21 Mar 2016 11:58:53 -0700 (PDT) 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-320059267 X-CudaMail-DTE: 032116 X-CudaMail-Originating-IP: 209.85.192.180 Date: Mon, 21 Mar 2016 11:58:24 -0700 X-ASG-Orig-Subj: [##CM-E2-320059267##][PATCH v3 16/21] 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.180, Ugly c=0.43927 p=-0.380282 Source Normal X-MessageSniffer-Rules: 0-0-0-16800-c X-Barracuda-Connect: UNKNOWN[192.168.24.2] X-Barracuda-Start-Time: 1458586735 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.28028 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 v3 16/21] 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? */