From: Stephen Hemminger <shemminger@vyatta.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Subject: [PATCH 3/3] bridge: use statistics in net_device
Date: Tue, 17 Jun 2008 09:52:14 -0700 [thread overview]
Message-ID: <20080617165223.258482526@vyatta.com> (raw)
In-Reply-To: 20080617165211.615620784@vyatta.com
[-- Attachment #1: br-stats.patch --]
[-- Type: text/plain, Size: 2969 bytes --]
Move statistics to net_device structure. Also, update last_rx on bridge
device (even though only bonding seems to use it).
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
--- a/net/bridge/br_device.c 2008-06-17 09:31:24.000000000 -0700
+++ b/net/bridge/br_device.c 2008-06-17 09:34:01.000000000 -0700
@@ -21,12 +21,6 @@
#include <asm/uaccess.h>
#include "br_private.h"
-static struct net_device_stats *br_dev_get_stats(struct net_device *dev)
-{
- struct net_bridge *br = netdev_priv(dev);
- return &br->statistics;
-}
-
/* net device transmit always called with no BH (preempt_disabled) */
int br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
{
@@ -34,8 +28,8 @@ int br_dev_xmit(struct sk_buff *skb, str
const unsigned char *dest = skb->data;
struct net_bridge_fdb_entry *dst;
- br->statistics.tx_packets++;
- br->statistics.tx_bytes += skb->len;
+ dev->stats.tx_packets++;
+ dev->stats.tx_bytes += skb->len;
skb_reset_mac_header(skb);
skb_pull(skb, ETH_HLEN);
@@ -162,7 +156,6 @@ void br_dev_setup(struct net_device *dev
ether_setup(dev);
dev->do_ioctl = br_dev_ioctl;
- dev->get_stats = br_dev_get_stats;
dev->hard_start_xmit = br_dev_xmit;
dev->open = br_dev_open;
dev->set_multicast_list = br_dev_set_multicast_list;
--- a/net/bridge/br_forward.c 2008-06-17 09:32:32.000000000 -0700
+++ b/net/bridge/br_forward.c 2008-06-17 09:34:37.000000000 -0700
@@ -115,7 +115,7 @@ static void br_flood(struct net_bridge *
struct sk_buff *skb2;
if ((skb2 = skb_clone(skb, GFP_ATOMIC)) == NULL) {
- br->statistics.tx_dropped++;
+ br->dev->stats.tx_dropped++;
kfree_skb(skb);
return;
}
--- a/net/bridge/br_input.c 2008-06-17 09:32:52.000000000 -0700
+++ b/net/bridge/br_input.c 2008-06-17 09:35:49.000000000 -0700
@@ -24,13 +24,15 @@ const u8 br_group_address[ETH_ALEN] = {
static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb)
{
+ struct net_device *brdev = br->dev;
struct net_device *indev;
- br->statistics.rx_packets++;
- br->statistics.rx_bytes += skb->len;
+ brdev->stats.rx_packets++;
+ brdev->stats.rx_bytes += skb->len;
+ brdev->last_rx = jiffies;
indev = skb->dev;
- skb->dev = br->dev;
+ skb->dev = brdev;
NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, indev, NULL,
netif_receive_skb);
@@ -64,7 +66,7 @@ int br_handle_frame_finish(struct sk_buf
dst = NULL;
if (is_multicast_ether_addr(dest)) {
- br->statistics.multicast++;
+ br->dev->stats.multicast++;
skb2 = skb;
} else if ((dst = __br_fdb_get(br, dest)) && dst->is_local) {
skb2 = skb;
--- a/net/bridge/br_private.h 2008-06-17 09:21:43.000000000 -0700
+++ b/net/bridge/br_private.h 2008-06-17 09:21:58.000000000 -0700
@@ -90,7 +90,7 @@ struct net_bridge
spinlock_t lock;
struct list_head port_list;
struct net_device *dev;
- struct net_device_stats statistics;
+
spinlock_t hash_lock;
struct hlist_head hash[BR_HASH_SIZE];
struct list_head age_list;
--
next prev parent reply other threads:[~2008-06-17 16:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-17 16:52 [PATCH 0/3] Bridge patches for 2.6.27 Stephen Hemminger
2008-06-17 16:52 ` [PATCH 1/3] bridge: handle process all link-local frames Stephen Hemminger
2008-06-17 23:11 ` David Miller
2008-06-17 16:52 ` [PATCH 2/3] bridge: make bridge address settings sticky Stephen Hemminger
2008-06-17 23:11 ` David Miller
2008-06-17 16:52 ` Stephen Hemminger [this message]
2008-06-17 23:14 ` [PATCH 3/3] bridge: use statistics in net_device David Miller
2008-06-17 23:35 ` Stephen Hemminger
2008-06-17 23:50 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080617165223.258482526@vyatta.com \
--to=shemminger@vyatta.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).