* Re: [PATCH net-next-2.6] ethtool: Compat handling for struct ethtool_rxnfc
From: David Miller @ 2011-02-28 19:06 UTC (permalink / raw)
To: bhutchings; +Cc: alexander.h.duyck, santwona.behera, netdev
In-Reply-To: <1298917347.2569.5.camel@bwh-desktop>
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Mon, 28 Feb 2011 18:22:26 +0000
> This structure was accidentally defined such that its layout can
> differ between 32-bit and 64-bit processes. Add compat structure
> definitions and functions to copy from/to user-space with the
> necessary adjustments.
>
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Please implement this via the proper contextual compat ioctl handling
in net/socket.c
Using is_compat_task() is heavily discouraged.
^ permalink raw reply
* Re: [PATCH net-next-2.6] ethtool: Compat handling for struct ethtool_rxnfc
From: Ben Hutchings @ 2011-02-28 19:12 UTC (permalink / raw)
To: David Miller; +Cc: alexander.h.duyck, santwona.behera, netdev
In-Reply-To: <20110228.110655.71121452.davem@davemloft.net>
On Mon, 2011-02-28 at 11:06 -0800, David Miller wrote:
> From: Ben Hutchings <bhutchings@solarflare.com>
> Date: Mon, 28 Feb 2011 18:22:26 +0000
>
> > This structure was accidentally defined such that its layout can
> > differ between 32-bit and 64-bit processes. Add compat structure
> > definitions and functions to copy from/to user-space with the
> > necessary adjustments.
> >
> > Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
>
> Please implement this via the proper contextual compat ioctl handling
> in net/socket.c
>
> Using is_compat_task() is heavily discouraged.
This is going to be even more horrible. But I'll try it.
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH] net: use pci_dev->revision, again
From: John W. Linville @ 2011-02-28 19:17 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, jcliburn-Re5JQEeQqe8AvxtiuMwx3w,
chris.snook-Re5JQEeQqe8AvxtiuMwx3w,
jie.yang-DlyHzToyqoxBDgjK7y7TUQ, romieu-W8zweXLXuWQS+FvcfC7Uqw,
sorbica-XpRToVZ20tCCuPEqFHbRBg, cooldavid-eHdHF5TYP0iWVfeAwA7xHQ,
Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ,
chaoming_li-kXabqFNEczNtrwSWzY7KCg,
e1000-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <201102282136.44374.sshtylyov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org>
On Mon, Feb 28, 2011 at 09:36:43PM +0300, Sergei Shtylyov wrote:
> Several more network drivers that read the device's revision ID
> from the PCI configuration register were merged after the commit
> 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all drivers
> to use pci_device->revision), so it's time to do another pass of
> conversion to using the 'revision' field of 'struct pci_dev'...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org>
>
> ---
> The patch is against the recent Linus' tree.
>
> drivers/net/atl1e/atl1e_main.c | 2 +-
> drivers/net/atlx/atl2.c | 2 +-
> drivers/net/cnic.c | 14 +++++---------
> drivers/net/e1000e/ethtool.c | 6 ++----
> drivers/net/igbvf/ethtool.c | 6 ++----
> drivers/net/igbvf/netdev.c | 3 +--
> drivers/net/ipg.c | 4 +---
> drivers/net/ixgbevf/ixgbevf_main.c | 2 +-
> drivers/net/jme.c | 2 +-
> drivers/net/vxge/vxge-main.c | 18 +-----------------
> drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +---
> drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +-
> drivers/net/wireless/rtlwifi/pci.c | 4 +---
> 13 files changed, 19 insertions(+), 50 deletions(-)
ACK
--
John W. Linville Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org might be all we have. Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH] don't allow CAP_NET_ADMIN to load non-netdev kernel modules
From: David Miller @ 2011-02-28 19:23 UTC (permalink / raw)
To: segoon
Cc: mjt, arnd, mirqus, bhutchings, netdev, linux-kernel, kuznet,
pekkas, jmorris, yoshfuji, kaber, eric.dumazet, therbert, xiaosuo,
jesse, kees.cook, eugene, dan.j.rosenberg, akpm
In-Reply-To: <20110228095133.GA4351@albatros>
From: Vasiliy Kulikov <segoon@openwall.com>
Date: Mon, 28 Feb 2011 12:51:33 +0300
> David, are you OK with this way?
Sure.
^ permalink raw reply
* Re: [PATCH] bonding: added 802.3ad round-robin hashing policy and source mac selection mode
From: Jay Vosburgh @ 2011-02-28 19:29 UTC (permalink / raw)
To: Oleg V. Ukhno; +Cc: netdev, David S. Miller
In-Reply-To: <20110216191341.GA14920@yandex-team.ru>
Oleg V. Ukhno <olegu@yandex-team.ru> wrote:
>Patch introduces two new (related) features to bonding module.
>First feature is round-robin hashing policy, which is primarily
>intended for use with 802.3ad mode, and puts every next IPv4 and
>IPv6 packet into next availables slave without taling into account
>which layer3 and above protocol is used.
>Second feature makes possible choosing which MAC-address will be set
>in the transmitted packet - when set to src-mac it will force setting
>slave's interface real MAC address as source MAC address in every
>packet, sent via this slave interface.
>Main goal of this patch is to make possible single TCP stream
>equally striped for both transmitted and received packets over all
>available slaves.
>This operating mode is not fully 802.3ad compliant, and will cause
>some packet reordering in TCP stream, to some kernel tuning may be
>required.
>For correct working enabling round-robin hashing policy plus using
>real slave's MAC addresses as source MAC addresses in transmitted
>packets requires specific switch setting)hashing mode for port-channel
>("etherchannel) should be set to src-mac or src-dst-mac to get
>correct load-striping on the receiving host's etherchannel.
>General requirements for using bonding in this operating mode are:
>- even and preferrably equal number of slaves on sending and receiving
>hosts;
>- equal RTT between sending and receiving hosts on all slaves;
>- switch capable of doing etherchannels and using src-mac or src-dst-mac
>hashing policy for egress load striping
>
>Signed-off-by: Oleg V. Ukhno <olegu@yandex-team.ru>
>---
>
> Documentation/networking/bonding.txt | 65 +++++++++++++++++++++++++++++++++++
> drivers/net/bonding/bond_3ad.c | 2 -
> drivers/net/bonding/bond_main.c | 60 +++++++++++++++++++++++++++++---
> drivers/net/bonding/bond_sysfs.c | 50 ++++++++++++++++++++++++++
> drivers/net/bonding/bonding.h | 7 +++
> include/linux/if_bonding.h | 1
> 6 files changed, 178 insertions(+), 7 deletions(-)
>
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/Documentation/networking/bonding.txt linux-2.6.p/Documentation/networking/bonding.txt
>--- linux-2.6/Documentation/networking/bonding.txt 2011-02-08 16:03:01.290281998 +0300
>+++ linux-2.6.p/Documentation/networking/bonding.txt 2011-02-16 22:03:09.650281997 +0300
>@@ -83,6 +83,7 @@ Table of Contents
> 12. Configuring Bonding for Maximum Throughput
> 12.1 Maximum Throughput in a Single Switch Topology
> 12.1.1 MT Bonding Mode Selection for Single Switch Topology
>+12.1.1.1 Maximizing TCP Throughput for RX/TX for Single Switch Topology using layer2 mechanisms
> 12.1.2 MT Link Monitoring for Single Switch Topology
> 12.2 Maximum Throughput in a Multiple Switch Topology
> 12.2.1 MT Bonding Mode Selection for Multiple Switch Topology
>@@ -761,6 +762,34 @@ xmit_hash_policy
> conversations. Other implementations of 802.3ad may
> or may not tolerate this noncompliance.
>
>+ round-robin
>+
>+ This policy simply puts every next packet into next
>+ slave interfaces, providing round-robin load striping
>+ for transmitted data. This policy can be enabled with
>+ any mode which supports choosing alternate hash policy,
>+ but was initially done for 802.3ad mode.
>+
>+ Main goal for this policy is to stripe TX load without
>+ taking into account which layer3 protocol is used, and
>+ can be used for single TCP connection load striping. When
>+ enabled, it will round-robin packets for IPv4 and IPv6
>+ only.
>+
>+ There is also src_mac_select option, which can be used
>+ to configure RX load-striping using switch hashing
>+ algorhytms on the receiving side. See detailed description
>+ below.
The src_mac_select option should be documented separately (at
the appropriate place in the document) as well, something like:
src_mac_select
Specifies the source MAC selection method for outgoing packets.
Possible values are:
default or 0
The normal selection policy for the bonding mode is
used. This varies according to the bonding mode. The
balance-xor, balance-rr, 802.3ad and broadcast modes use
the MAC address of the bonding master. The balance-alb
and balance-tlb modes use the MAC address of the slave
the packet is sent on.
slave-src
Sets the source MAC for all outgoing IPv4 and IPv6
packets to the MAC address of the slave the packet is
sent on. This is intended to permit fine grained load
balancing for 802.3ad and balance-xor modes by changing
the slave's MAC addresses. This is documented in detail
in section 12.1.1.1.
This option was added for bonding version 3.8.0
>+ It is important to understand, that this hashing policy
>+ will possibly cause TCP out-of-order packets when enabled
>+ and must not be used when slaves have different bandwidth
>+ and/or RTT in receiver's direction. This algorithm is not
>+ fully 802.3ad compliant. Some implementations of 802.3ad
>+ may or may not tolerate this noncompliance.
I would phrase the above as:
This algorithm is not 802.3ad compliant. This hash
policy will generally cause TCP packets to be delivered
out of order. Other implementations of 802.3ad may or
may not tolerate this noncompliance.
>+ Hashing formula is transmitted packet number % slave count.
You can leave this out.
>+
> The default value is layer2. This option was added in bonding
> version 2.6.3. In earlier versions of bonding, this parameter
> does not exist, and the layer2 policy is the only policy. The
Also, bump the DRV_VERSION to 3.8.0, and DRV_RELDATE to today's
date in bonding.h, and put a bit here that says "the round-robin value
was added for bonding version 3.8.0"
>@@ -2190,6 +2219,42 @@ balance-alb: This mode is everything tha
> device driver must support changing the hardware address while
> the device is open.
>
>+12.1.1.1 Maximizing TCP Throughput for RX/TX for Single Switch Topology
>+ using layer2 mechanisms
>+----------------------------------------------------------------------
>+ Besides of methods of load striping and configuring HA, mentioned
>+above, you can use round-robin hashing policy and src_mac_select "slave-src"
>+setting to stripe TCP load near-equally over even number of slaves. Please
>+note, that enabling round-robin policy for balance-xor mode should turn it
>+into mode similar to balance-rr mode.
>+ There is also specific switch configuration required to use all
>+benefits of both round-robin hashing policy and src_mac_select "slave-src"
>+setting.
>+ When you enable round-robin xmit hashing policy plus set
>+src_mac_select to slave-src mode, you will get every next packet
>+transmitted over a new slave with every's packet source MAC address set
>+to real MAC address of the according slave interface, not the aggregate
>+interface.
>+ Imagine, that you have two hosts(let's say A and B), each connected
>+using 2 slave interfaces to switch with appropriate port-channels configured
>+("etherchannels"). After you start transmitting TCP data from A to B, and
>+round-robin hashing policy is enabled, you will see that TX load is equally
>+striped over host A slaves, but all this traffic is received with only one
>+machine's B slave.
>+ Now, you set src_mac_select parameter to "slave-src" and
>+configure switch for src-mac hashing for "outqoing" etherchannel load
>+striping. Now every packet sent from host A has slave's MAC as source MAC
>+address, and switch will send every packet from host A into receiving
>+port-channel of host B taking into account source MAC address of packet being
>+put into, so you will get near-equal RX load striping, which does not depend
>+on layer3 and above protocols used for data transmission.
>+ It is important to understand, that this load striping mode
>+will only work correctly if number of slaves on each side is at least
>+even, and preferrably equal and even.
>+ This load striping mode also can cause TCP out-of-order packets,
>+so you may need to tune your kernel for handling increased number of
>+reordered packets.
I'd write the above block as:
12.1.1.1 Maximizing TCP Throughput for RX/TX for Single Switch Topology
using layer2 mechanisms
----------------------------------------------------------------------
It is also possible to use round-robin packet transmission,
either in the balance-rr mode or using the round-robin xmit_hash_policy
setting for balance-xor or 802.3ad modes to evenly stripe traffic across
the set of slaves. In conjuction with the src_mac_select option's
"slave-src" value and a carefully configured network, it is possible to
achieve high throughput using round robin.
The network here involves multiple hosts running bonding, all
connected to a common switch, for example:
+--------+ +------------+ +--------+
| |eth0 port1| |port3 eth0| |
| Host A +-------------+ switch +-------------+ Host B |
| bond0 +-------------+ +-------------+ bond0 |
| |eth1 port2| |port4 eth1| |
+--------+ +------------+ +--------+
In this configuration, the switch has ports 1 and 2 in a port
channel group, and ports 3 and 4 in a separate port channel group.
These channel groups are set to hash transmitted packets according to
the source MAC address.
Host A and Host B each have a bond utilizing a round-robin
transmit scheme, with src_mac_select set to "slave-src" and each slave's
MAC address chosen to hash sequentially when run through the switch's
source MAC address egress hash.
For clarity, only two slaves / ports are shown in the diagram.
In this manner, traffic sent from Host A to Host B will
generally be evenly striped all the way through to Host B. It is first
sent round robin by Host A. The switch will then hash on the source MAC
address of the packets, whose MAC addresses have been manually selected
to hash sequentially, thus the switch's egress port channel will tend to
keep the traffic separated by port similarly to how it arrived (e.g.,
packets from eth0 arriving on port1 will tend to go out port3, and
simiarly for eth1, port2 and port4).
This scheme works best when the number of slaves and switch
ports match at both ends. Note that it will work with differing numbers
of slaves, but the traffic balance may not be optimal, and it may be
possible for a host with more slaves to overrun a host with fewer
slaves.
> 12.1.2 MT Link Monitoring for Single Switch Topology
> ----------------------------------------------------
>
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/drivers/net/bonding/bond_3ad.c linux-2.6.p/drivers/net/bonding/bond_3ad.c
>--- linux-2.6/drivers/net/bonding/bond_3ad.c 2011-02-16 00:59:18.710282002 +0300
>+++ linux-2.6.p/drivers/net/bonding/bond_3ad.c 2011-02-16 01:30:47.770281998 +0300
>@@ -2419,7 +2419,7 @@ int bond_3ad_xmit_xor(struct sk_buff *sk
> goto out;
> }
>
>- slave_agg_no = bond->xmit_hash_policy(skb, slaves_in_agg);
>+ slave_agg_no = bond->xmit_hash_policy(skb, slaves_in_agg, bond->rr_tx_counter++);
>
> bond_for_each_slave(bond, slave, i) {
> struct aggregator *agg = SLAVE_AD_INFO(slave).port.aggregator;
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/drivers/net/bonding/bonding.h linux-2.6.p/drivers/net/bonding/bonding.h
>--- linux-2.6/drivers/net/bonding/bonding.h 2011-02-16 00:59:18.720282002 +0300
>+++ linux-2.6.p/drivers/net/bonding/bonding.h 2011-02-16 01:33:11.610282004 +0300
>@@ -162,6 +162,7 @@ struct bond_params {
> int tx_queues;
> int all_slaves_active;
> int resend_igmp;
>+ int src_mac_select;
> };
>
> struct bond_parm_tbl {
>@@ -235,7 +236,7 @@ struct bonding {
> #endif /* CONFIG_PROC_FS */
> struct list_head bond_list;
> struct netdev_hw_addr_list mc_list;
>- int (*xmit_hash_policy)(struct sk_buff *, int);
>+ int (*xmit_hash_policy)(struct sk_buff *, int, int);
> __be32 master_ip;
> u16 flags;
> u16 rr_tx_counter;
>@@ -308,6 +309,9 @@ static inline bool bond_is_lb(const stru
> #define BOND_ARP_VALIDATE_ALL (BOND_ARP_VALIDATE_ACTIVE | \
> BOND_ARP_VALIDATE_BACKUP)
>
>+#define BOND_MAC_SRC_DEFAULT 0
>+#define BOND_MAC_SRC_SLAVE 1
For consistency with the option name (src_mac_select), I'd name
these BOND_SRC_MAC_DEFAULT and BOND_SRC_MAC_SLAVE. There may be a
dst_mac_select someday, and that would make the option value sets
clearer.
> static inline int slave_do_arp_validate(struct bonding *bond,
> struct slave *slave)
> {
>@@ -402,6 +406,7 @@ extern const struct bond_parm_tbl arp_va
> extern const struct bond_parm_tbl fail_over_mac_tbl[];
> extern const struct bond_parm_tbl pri_reselect_tbl[];
> extern struct bond_parm_tbl ad_select_tbl[];
>+extern const struct bond_parm_tbl src_mac_select_tbl[];
>
> #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
> void bond_send_unsolicited_na(struct bonding *bond);
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/drivers/net/bonding/bond_main.c linux-2.6.p/drivers/net/bonding/bond_main.c
>--- linux-2.6/drivers/net/bonding/bond_main.c 2011-02-16 00:59:18.720282002 +0300
>+++ linux-2.6.p/drivers/net/bonding/bond_main.c 2011-02-16 22:08:22.650281997 +0300
>@@ -111,6 +111,7 @@ static char *fail_over_mac;
> static int all_slaves_active = 0;
> static struct bond_params bonding_defaults;
> static int resend_igmp = BOND_DEFAULT_RESEND_IGMP;
>+static char *src_mac_select;
>
> module_param(max_bonds, int, 0);
> MODULE_PARM_DESC(max_bonds, "Max number of bonded devices");
>@@ -152,7 +153,7 @@ module_param(ad_select, charp, 0);
> MODULE_PARM_DESC(ad_select, "803.ad aggregation selection logic: stable (0, default), bandwidth (1), count (2)");
> module_param(xmit_hash_policy, charp, 0);
> MODULE_PARM_DESC(xmit_hash_policy, "XOR hashing method: 0 for layer 2 (default)"
>- ", 1 for layer 3+4");
>+ ", 1 for layer 3+4, 3 for round-robin");
> module_param(arp_interval, int, 0);
> MODULE_PARM_DESC(arp_interval, "arp interval in milliseconds");
> module_param_array(arp_ip_target, charp, NULL, 0);
>@@ -167,6 +168,9 @@ MODULE_PARM_DESC(all_slaves_active, "Kee
> "0 for never (default), 1 for always.");
> module_param(resend_igmp, int, 0);
> MODULE_PARM_DESC(resend_igmp, "Number of IGMP membership reports to send on link failure");
>+module_param(src_mac_select, charp, 0);
>+MODULE_PARM_DESC(src_mac_select, "Source MAC selection mode: 0 or default (default),"
>+ "1 or slave-src to use slave's MAC as packet's src MAC");
>
> /*----------------------------- Global variables ----------------------------*/
>
>@@ -206,6 +210,7 @@ const struct bond_parm_tbl xmit_hashtype
> { "layer2", BOND_XMIT_POLICY_LAYER2},
> { "layer3+4", BOND_XMIT_POLICY_LAYER34},
> { "layer2+3", BOND_XMIT_POLICY_LAYER23},
>+{ "round-robin", BOND_XMIT_POLICY_LAYERRR},
> { NULL, -1},
> };
>
>@@ -238,6 +243,12 @@ struct bond_parm_tbl ad_select_tbl[] = {
> { NULL, -1},
> };
>
>+const struct bond_parm_tbl src_mac_select_tbl[] = {
>+{ "default", BOND_MAC_SRC_DEFAULT},
>+{ "slave-src", BOND_MAC_SRC_SLAVE},
>+{ NULL, -1},
>+};
>+
> /*-------------------------- Forward declarations ---------------------------*/
>
> static void bond_send_gratuitous_arp(struct bonding *bond);
>@@ -422,6 +433,7 @@ struct vlan_entry *bond_next_vlan(struct
> int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb,
> struct net_device *slave_dev)
> {
>+ struct ethhdr *eth_data;
> skb->dev = slave_dev;
> skb->priority = 1;
> #ifdef CONFIG_NET_POLL_CONTROLLER
>@@ -433,6 +445,15 @@ int bond_dev_queue_xmit(struct bonding *
> slave_dev->priv_flags &= ~IFF_IN_NETPOLL;
> } else
> #endif
>+ if (bond->params.src_mac_select == BOND_MAC_SRC_SLAVE &&
>+ (skb->protocol == htons(ETH_P_IP) ||
>+ skb->protocol == htons(ETH_P_IPV6))) {
>+ skb_reset_mac_header(skb);
>+ eth_data = eth_hdr(skb);
>+ memcpy(eth_data->h_source, slave_dev->perm_addr,
>+ ETH_ALEN);
>+ }
>+
> dev_queue_xmit(skb);
>
> return 0;
>@@ -3261,6 +3282,13 @@ static void bond_info_show_master(struct
> bond->params.xmit_policy);
> }
>
>+ if (bond->params.src_mac_select == BOND_MAC_SRC_DEFAULT ||
>+ bond->params.src_mac_select == BOND_MAC_SRC_DEFAULT) {
This tests the same thing twice, which doesn't seem right. I
think you should remove the if () block and do the seq_printf
unconditionally.
>+ seq_printf(seq, "Source MAC select is: %s (%d)\n",
>+ src_mac_select_tbl[bond->params.src_mac_select].modename,
>+ bond->params.src_mac_select);
>+ }
>+
> if (USES_PRIMARY(bond->params.mode)) {
> seq_printf(seq, "Primary Slave: %s",
> (bond->primary_slave) ?
>@@ -3717,7 +3745,8 @@ void bond_unregister_arp(struct bonding
> * Hash for the output device based upon layer 2 and layer 3 data. If
> * the packet is not IP mimic bond_xmit_hash_policy_l2()
> */
>-static int bond_xmit_hash_policy_l23(struct sk_buff *skb, int count)
>+static int bond_xmit_hash_policy_l23(struct sk_buff *skb, int count,
>+ int pktcount)
> {
> struct ethhdr *data = (struct ethhdr *)skb->data;
> struct iphdr *iph = ip_hdr(skb);
>@@ -3735,7 +3764,8 @@ static int bond_xmit_hash_policy_l23(str
> * the packet is a frag or not TCP or UDP, just use layer 3 data. If it is
> * altogether not IP, mimic bond_xmit_hash_policy_l2()
> */
>-static int bond_xmit_hash_policy_l34(struct sk_buff *skb, int count)
>+static int bond_xmit_hash_policy_l34(struct sk_buff *skb, int count,
>+ int pktcount)
> {
> struct ethhdr *data = (struct ethhdr *)skb->data;
> struct iphdr *iph = ip_hdr(skb);
>@@ -3759,13 +3789,29 @@ static int bond_xmit_hash_policy_l34(str
> /*
> * Hash for the output device based upon layer 2 data
> */
>-static int bond_xmit_hash_policy_l2(struct sk_buff *skb, int count)
>+static int bond_xmit_hash_policy_l2(struct sk_buff *skb, int count,
>+ int pktcount)
> {
> struct ethhdr *data = (struct ethhdr *)skb->data;
>
> return (data->h_dest[5] ^ data->h_source[5]) % count;
> }
>
>+/*
>+ * Round-robin over all active slaves(one packet per slave) for IP and IPv6,
>+ * otherwise mimic bond_xmit_hash_policy_l2()
>+ */
>+static int bond_xmit_hash_policy_rr(struct sk_buff *skb, int count,
>+ int pktcount)
>+{
>+ struct ethhdr *data = (struct ethhdr *)skb->data;
>+ if (skb->protocol == htons(ETH_P_IP)
>+ || skb->protocol == htons(ETH_P_IPV6)) {
>+ return pktcount % count;
>+ }
>+ return (data->h_dest[5] ^ data->h_source[5]) % count;
>+}
Why does this only round robin for IP/IPv6? This hash policy
should behave identically to the bond_xmit_roundrobin logic, which round
robins all traffic except for IPv4 IGMP.
For consistency, it would be desirable for bond_xmit_roundrobin
and bond_xmit_hash_policy_rr to use a common backend function to select
the slave (probably passing in the struct bond * instead of a counter).
>+
> /*-------------------------- Device entry points ----------------------------*/
>
> static int bond_open(struct net_device *bond_dev)
>@@ -4395,7 +4441,8 @@ static int bond_xmit_xor(struct sk_buff
> if (!BOND_IS_OK(bond))
> goto out;
>
>- slave_no = bond->xmit_hash_policy(skb, bond->slave_cnt);
>+ slave_no = bond->xmit_hash_policy(skb, bond->slave_cnt,
>+ bond->rr_tx_counter++);
>
> bond_for_each_slave(bond, slave, i) {
> slave_no--;
>@@ -4492,6 +4539,9 @@ static void bond_set_xmit_hash_policy(st
> case BOND_XMIT_POLICY_LAYER34:
> bond->xmit_hash_policy = bond_xmit_hash_policy_l34;
> break;
>+ case BOND_XMIT_POLICY_LAYERRR:
>+ bond->xmit_hash_policy = bond_xmit_hash_policy_rr;
>+ break;
> case BOND_XMIT_POLICY_LAYER2:
> default:
> bond->xmit_hash_policy = bond_xmit_hash_policy_l2;
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/drivers/net/bonding/bond_sysfs.c linux-2.6.p/drivers/net/bonding/bond_sysfs.c
>--- linux-2.6/drivers/net/bonding/bond_sysfs.c 2011-02-08 16:03:02.950282003 +0300
>+++ linux-2.6.p/drivers/net/bonding/bond_sysfs.c 2011-02-16 02:05:58.650281999 +0300
>@@ -1643,6 +1643,55 @@ out:
> static DEVICE_ATTR(resend_igmp, S_IRUGO | S_IWUSR,
> bonding_show_resend_igmp, bonding_store_resend_igmp);
>
>+/*
>+ * Show and set the bonding src_mac_select param.
>+ */
>+
>+static ssize_t bonding_show_src_mac_select(struct device *d,
>+ struct device_attribute *attr,
>+ char *buf)
>+{
>+ struct bonding *bond = to_bond(d);
>+
>+ return sprintf(buf, "%s %d\n",
>+ src_mac_select_tbl[bond->params.src_mac_select].modename,
>+ bond->params.src_mac_select);
>+}
>+
>+static ssize_t bonding_store_src_mac_select(struct device *d,
>+ struct device_attribute *attr,
>+ const char *buf, size_t count)
>+{
>+ int new_value, ret = count;
>+ struct bonding *bond = to_bond(d);
>+
>+ if (bond->dev->flags & IFF_UP) {
>+ pr_err("%s: Interface is up. Unable to update src mac select policy.\n",
>+ bond->dev->name);
>+ ret = -EPERM;
>+ goto out;
>+ }
>+
>+ new_value = bond_parse_parm(buf, src_mac_select_tbl);
>+ if (new_value < 0) {
>+ pr_err("%s: Ignoring invalid src mac select policy value %.*s.\n",
>+ bond->dev->name,
>+ (int)strlen(buf) - 1, buf);
>+ ret = -EINVAL;
>+ goto out;
>+ } else {
>+ bond->params.src_mac_select = new_value;
>+ pr_info("%s: setting src mac select policy to %s (%d).\n",
>+ bond->dev->name,
>+ src_mac_select_tbl[new_value].modename, new_value);
>+ }
>+out:
>+ return ret;
>+}
>+
>+static DEVICE_ATTR(src_mac_select, S_IRUGO | S_IWUSR,
>+ bonding_show_src_mac_select, bonding_store_src_mac_select);
>+
> static struct attribute *per_bond_attrs[] = {
> &dev_attr_slaves.attr,
> &dev_attr_mode.attr,
>@@ -1671,6 +1720,7 @@ static struct attribute *per_bond_attrs[
> &dev_attr_queue_id.attr,
> &dev_attr_all_slaves_active.attr,
> &dev_attr_resend_igmp.attr,
>+ &dev_attr_src_mac_select.attr,
> NULL,
> };
>
>diff -uprN -X linux-2.6/Documentation/dontdiff linux-2.6/include/linux/if_bonding.h linux-2.6.p/include/linux/if_bonding.h
>--- linux-2.6/include/linux/if_bonding.h 2011-02-16 00:59:18.720282002 +0300
>+++ linux-2.6.p/include/linux/if_bonding.h 2011-02-16 01:23:38.660282000 +0300
>@@ -91,6 +91,7 @@
> #define BOND_XMIT_POLICY_LAYER2 0 /* layer 2 (MAC only), default */
> #define BOND_XMIT_POLICY_LAYER34 1 /* layer 3+4 (IP ^ (TCP || UDP)) */
> #define BOND_XMIT_POLICY_LAYER23 2 /* layer 2+3 (IP ^ MAC) */
>+#define BOND_XMIT_POLICY_LAYERRR 3 /* round-robin mode */
A nit perhaps, but round robin isn't really a layer. I'm ok to
call this BOND_XMIT_POLICY_RR.
> typedef struct ifbond {
> __s32 bond_mode;
-J
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
* Re: [PATCH] net: use pci_dev->revision, again
From: David Miller @ 2011-02-28 19:32 UTC (permalink / raw)
To: linville-2XuSBdqkA4R54TAoqtyWWQ
Cc: sshtylyov-hkdhdckH98+B+jHODAdFcQ, netdev-u79uwXL29TY76Z2rM5mHXA,
jcliburn-Re5JQEeQqe8AvxtiuMwx3w,
chris.snook-Re5JQEeQqe8AvxtiuMwx3w,
jie.yang-DlyHzToyqoxBDgjK7y7TUQ, romieu-W8zweXLXuWQS+FvcfC7Uqw,
sorbica-XpRToVZ20tCCuPEqFHbRBg, cooldavid-eHdHF5TYP0iWVfeAwA7xHQ,
Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ,
chaoming_li-kXabqFNEczNtrwSWzY7KCg,
e1000-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20110228191728.GE2515-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
From: "John W. Linville" <linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Date: Mon, 28 Feb 2011 14:17:29 -0500
> On Mon, Feb 28, 2011 at 09:36:43PM +0300, Sergei Shtylyov wrote:
>> Several more network drivers that read the device's revision ID
>> from the PCI configuration register were merged after the commit
>> 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all drivers
>> to use pci_device->revision), so it's time to do another pass of
>> conversion to using the 'revision' field of 'struct pci_dev'...
>>
>> Signed-off-by: Sergei Shtylyov <sshtylyov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org>
>>
>> ---
>> The patch is against the recent Linus' tree.
>>
>> drivers/net/atl1e/atl1e_main.c | 2 +-
>> drivers/net/atlx/atl2.c | 2 +-
>> drivers/net/cnic.c | 14 +++++---------
>> drivers/net/e1000e/ethtool.c | 6 ++----
>> drivers/net/igbvf/ethtool.c | 6 ++----
>> drivers/net/igbvf/netdev.c | 3 +--
>> drivers/net/ipg.c | 4 +---
>> drivers/net/ixgbevf/ixgbevf_main.c | 2 +-
>> drivers/net/jme.c | 2 +-
>> drivers/net/vxge/vxge-main.c | 18 +-----------------
>> drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +---
>> drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +-
>> drivers/net/wireless/rtlwifi/pci.c | 4 +---
>> 13 files changed, 19 insertions(+), 50 deletions(-)
>
> ACK
Ok, I'll take these into net-next-2.6 when I get a chance.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH kernel 2.6.38-rc5] fmvj18x_cs: add new id
From: David Miller @ 2011-02-28 20:06 UTC (permalink / raw)
To: ken_kawasaki; +Cc: netdev
In-Reply-To: <20110221000720.e93225c1.ken_kawasaki@spring.nifty.jp>
From: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>
Date: Mon, 21 Feb 2011 00:07:20 +0900
>
> fmvj18x_cs:add new id
> Toshiba lan&modem multifuction card (model name:IPC5010A)
>
> Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>
Applied, thank you.
^ permalink raw reply
* Re: [PATCH] CAN: add controller hardware name for Softing cards
From: David Miller @ 2011-02-28 20:09 UTC (permalink / raw)
To: mkl; +Cc: kurt.van.dijck, netdev
In-Reply-To: <4D622CC1.5050402@pengutronix.de>
From: Marc Kleine-Budde <mkl@pengutronix.de>
Date: Mon, 21 Feb 2011 10:13:37 +0100
> On 02/21/2011 10:04 AM, Kurt Van Dijck wrote:
>> I just found that the controller hardware name is not set for the Softing
>> driver. After this patch, "$ ip -d link show" looks nicer.
>>
>> Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be>
> Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] netlink: handle errors from netlink_dump()
From: David Miller @ 2011-02-28 20:18 UTC (permalink / raw)
To: avagin; +Cc: netdev
In-Reply-To: <1298292047-25025-1-git-send-email-avagin@openvz.org>
From: Andrey Vagin <avagin@openvz.org>
Date: Mon, 21 Feb 2011 15:40:47 +0300
> netlink_dump() may failed, but nobody handle its error.
> It generates output data, when a previous portion has been returned to
> user space. This mechanism works when all data isn't go in skb. If we
> enter in netlink_recvmsg() and skb is absent in the recv queue, the
> netlink_dump() will not been executed. So if netlink_dump() is failed
> one time, the new data never appear and the reader will sleep forever.
>
> netlink_dump() is called from two places:
>
> 1. from netlink_sendmsg->...->netlink_dump_start().
> In this place we can report error directly and it will be returned
> by sendmsg().
>
> 2. from netlink_recvmsg
> There we can't report error directly, because we have a portion of
> valid output data and call netlink_dump() for prepare the next portion.
> If netlink_dump() is failed, the socket will be mark as error and the
> next recvmsg will be failed.
>
> Signed-off-by: Andrey Vagin <avagin@openvz.org>
This issue has existed since the very creation of the netlink code :-)
Applied, thanks!
^ permalink raw reply
* Re: [PATCH net-next] bnx2x: use dcb_setapp to manage negotiated application tlvs
From: David Miller @ 2011-02-28 20:20 UTC (permalink / raw)
To: shmulikr; +Cc: eilong, netdev
In-Reply-To: <1298313481.24633.15.camel@lb-tlvb-shmulik.il.broadcom.com>
From: "Shmulik Ravid" <shmulikr@broadcom.com>
Date: Mon, 21 Feb 2011 20:38:01 +0200
> With this patch the bnx2x uses the generic dcbnl application tlv list
> instead of implementing its own get-app handler. When the driver is
> alerted to a change in the DCB negotiated parameters, it calls
> dcb_setapp to update the dcbnl application tlvs list making it available
> to user mode applications and registered notifiers.
>
> Signed-off-by: Shmulik Ravid <shmulikr@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Applied, thank you.
^ permalink raw reply
* Re: [PATCH] macb: don't use platform_set_drvdata() on a net_device
From: David Miller @ 2011-02-28 20:22 UTC (permalink / raw)
To: jamie; +Cc: netdev, nicolas.ferre
In-Reply-To: <1298901925-16525-1-git-send-email-jamie@jamieiles.com>
From: Jamie Iles <jamie@jamieiles.com>
Date: Mon, 28 Feb 2011 14:05:25 +0000
> Commit 71d6429 (Driver core: convert platform_{get,set}_drvdata to
> static inline functions) now triggers a warning in the macb network
> driver:
>
> CC drivers/net/macb.o
> drivers/net/macb.c: In function ‘macb_mii_init’:
> drivers/net/macb.c:263: warning: passing argument 1 of ‘platform_set_drvdata’ from incompatible pointer type
> include/linux/platform_device.h:138: note: expected ‘struct platform_device *’ but argument is of type ‘struct net_device *’
>
> Use dev_set_drvdata() on the device embedded in the net_device instead.
>
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Signed-off-by: Jamie Iles <jamie@jamieiles.com>
Applied.
^ permalink raw reply
* Re: [PATCH] dnet: fix wrong use of platform_set_drvdata()
From: David Miller @ 2011-02-28 20:22 UTC (permalink / raw)
To: yanok; +Cc: sfr, greg, linux-next, linux-kernel, mkl, netdev
In-Reply-To: <1298319630-18159-1-git-send-email-yanok@emcraft.com>
From: Ilya Yanok <yanok@emcraft.com>
Date: Mon, 21 Feb 2011 21:20:30 +0100
> platform_set_drvdata() was used with argument of incorrect type and
> could cause memory corruption. Moreover, because of not setting drvdata
> in the correct place not all resources were freed upon module unload.
>
> Signed-off-by: Ilya Yanok <yanok@emcraft.com>
Applied.
^ permalink raw reply
* Re: [PATCH] llc: avoid skb_clone() if there is only one handler
From: David Miller @ 2011-02-28 20:29 UTC (permalink / raw)
To: xiaosuo; +Cc: acme, netdev
In-Reply-To: <1298375718-5052-1-git-send-email-xiaosuo@gmail.com>
From: Changli Gao <xiaosuo@gmail.com>
Date: Tue, 22 Feb 2011 19:55:18 +0800
> Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Applied to net-next-2.6, thanks.
^ permalink raw reply
* Re: [PATCH] sis900: use pci_dev->revision
From: David Miller @ 2011-02-28 20:29 UTC (permalink / raw)
To: sshtylyov; +Cc: netdev, venza
In-Reply-To: <201102222329.02049.sshtylyov@ru.mvista.com>
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Tue, 22 Feb 2011 23:29:01 +0300
> This driver uses PCI_CLASS_REVISION instead of PCI_REVISION_ID, so it wasn't
> converted by commit 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all
> drivers to use pci_device->revision).
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] net: TX timestamps for IPv6 UDP packets
From: David Miller @ 2011-02-28 20:31 UTC (permalink / raw)
To: anders; +Cc: john.ronciak, netdev
In-Reply-To: <240353FF-7F9F-428C-84C3-3BD9B43213EE@halon.se>
From: Anders Berggren <anders@halon.se>
Date: Tue, 22 Feb 2011 22:43:47 +0100
> Enabling TX timestamps (SO_TIMESTAMPING) for IPv6 UDP packets, in
> the same fashion as for IPv4. Necessary in order for NICs such as
> Intel 82580 to timestamp IPv6 packets.
>
> Signed-off-by: Anders Berggren <anders@halon.se>
I'll apply this, thanks.
^ permalink raw reply
* Re: net: update Documentation/networking/00-INDEX
From: David Miller @ 2011-02-28 20:33 UTC (permalink / raw)
To: rlandley; +Cc: rdunlap, netdev, mk, linux-kernel, linux-doc
In-Reply-To: <4D64504D.6070306@parallels.com>
From: Rob Landley <rlandley@parallels.com>
Date: Tue, 22 Feb 2011 18:09:49 -0600
> On 02/22/2011 04:23 PM, Randy Dunlap wrote:
>> From: Randy Dunlap <randy.dunlap@oracle.com>
>>
>> Clean up entries in 00-INDEX: drop files that have been removed.
>>
>> Reported-by: Rob Landley <rlandley@parallels.com>
>> Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
>
> Acked-by: Rob Landley <rlandley@parallels.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH 2/2] net/fec: fix unterminated platform_device_id table
From: David Miller @ 2011-02-28 20:36 UTC (permalink / raw)
To: axel.lin; +Cc: linux-kernel, u.kleine-koenig, netdev
In-Reply-To: <1298453326.25444.3.camel@mola>
From: Axel Lin <axel.lin@gmail.com>
Date: Wed, 23 Feb 2011 17:28:46 +0800
> The platform_device_id table is supposed to be zero-terminated.
>
> Signed-off-by: Axel Lin <axel.lin@gmail.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] f_phonet: avoid pskb_pull(), fix OOPS with CONFIG_HIGHMEM
From: David Miller @ 2011-02-28 20:38 UTC (permalink / raw)
To: remi.denis-courmont; +Cc: netdev
In-Reply-To: <1298465493-3787-1-git-send-email-remi.denis-courmont@nokia.com>
From: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Date: Wed, 23 Feb 2011 14:51:33 +0200
> This is similar to what we already do in cdc-phonet.c in the same
> situation. pskb_pull() refuses to work with HIGHMEM, even if it is
> known that the socket buffer is entirely in "low" memory.
>
> Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] bonding: fix sparse warning
From: David Miller @ 2011-02-28 20:40 UTC (permalink / raw)
To: shemminger; +Cc: fubar, netdev
In-Reply-To: <20110223094033.0c2268b4@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Wed, 23 Feb 2011 09:40:33 -0800
> Fix use of zero where NULL expected. And wrap long line.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH] qla3xxx: add missing __iomem annotation
From: David Miller @ 2011-02-28 20:42 UTC (permalink / raw)
To: shemminger; +Cc: ron.mercer, netdev
In-Reply-To: <20110223095427.38a67186@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Wed, 23 Feb 2011 09:54:27 -0800
> Add necessary annotations about pointer to io memory space
> that is checked by sparse.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Applied.
^ permalink raw reply
* Re: [net-next-2.6 PATCH] enic: Flush driver cache of registered addr lists during port profile disassociate
From: David Miller @ 2011-02-28 20:42 UTC (permalink / raw)
To: roprabhu; +Cc: netdev
In-Reply-To: <20110224011601.16406.36125.stgit@savbu-pc100.cisco.com>
From: Roopa Prabhu <roprabhu@cisco.com>
Date: Wed, 23 Feb 2011 17:16:01 -0800
> From: Roopa Prabhu <roprabhu@cisco.com>
>
> During a port profile disassociate all address registrations for the interface
> are blown away from the adapter. This patch resets the driver cache of
> registered address lists to zero after a port profile disassociate.
>
> Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
> Signed-off-by: David Wang <dwang2@cisco.com>
> Signed-off-by: Christian Benvenuti <benve@cisco.com>
Applied.
^ permalink raw reply
* Re: [PATCH] DM9000: Allow randomised ethernet address
From: David Miller @ 2011-02-28 20:42 UTC (permalink / raw)
To: broonie; +Cc: eric.dumazet, netdev, patches, ben-linux
In-Reply-To: <1298553432-30240-1-git-send-email-broonie@opensource.wolfsonmicro.com>
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
Date: Thu, 24 Feb 2011 13:17:12 +0000
> From: Ben Dooks <ben-linux@fluff.org>
>
> Allow randomised ethernet address if the device does not have a valid
> EEPROM or pre-set MAC address.
>
> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Applied.
^ permalink raw reply
* Re: [PATCH] cxgb{3,4}: streamline Kconfig options
From: David Miller @ 2011-02-28 21:19 UTC (permalink / raw)
To: JBeulich; +Cc: dm, divy, linux-kbuild, netdev
In-Reply-To: <4D6B68BE020000780003402E@vpn.id2.novell.com>
From: "Jan Beulich" <JBeulich@novell.com>
Date: Mon, 28 Feb 2011 08:19:58 +0000
>>>> On 25.02.11 at 20:51, Dimitris Michailidis <dm@chelsio.com> wrote:
>> Dimitris Michailidis wrote:
>>> Jan Beulich wrote:
>>>
>>>> As to that INET vs NET dependency - is it possible that the
>>>> network drivers really just need NET, but the iSCSI ones need
>>>> INET? In which case the only common dependency would be
>>>> PCI - certainly not worth a custom helper option.
>>>
>>> Reading the commit message that introduced CHELSIO_T3_DEPENDS, it talks
>>> of hidden dependencies that select does not see. I am not sure which
>>> exactly but since it's been a few years since that commit I'll try to
>>> see what the situation is today without the *_DEPENDS symbols and let
>>> you know.
>>
>> I looked into this and found that with the current Kconfig the iSCSI driver
>> does not appear in the SCSI menu until one first enables NETDEVICES and
>> NETDEV_10000 in the network driver menu. It appears that the *_DEPENDS
>> symbols were added to capture dependencies on such symbols within the
>> network driver Kconfig, besides the dependencies the driver's entry listed
>> explicitly.
>>
>> The patch below removes *T4*_DEPENDS and the network drivers' unnecessary
>> dependency on INET, and updates the iSCSI driver's entry so it is visible
>> without requiring any net driver options to be enabled first and has
>> adequate selects to be able to build the net driver (this part is adapted
>> from bnx2i's Kconfig entry). I still need to do the T3 part of this and
>> check that there isn't a conflict with the current scsi tree. Just for
>> review at this time.
>
> Thanks, this looks good to me.
Dimitris, please submit this anew with a proper commit log messag and
signoff. Thanks.
^ permalink raw reply
* Re: [PATCH] bonding: use the correct size for _simple_hash()
From: David Miller @ 2011-02-28 21:21 UTC (permalink / raw)
To: amwang; +Cc: linux-kernel, fubar, netdev
In-Reply-To: <1298885668-3917-1-git-send-email-amwang@redhat.com>
From: Amerigo Wang <amwang@redhat.com>
Date: Mon, 28 Feb 2011 17:34:28 +0800
> Clearly it should be the size of ->ip_dst here.
> Although this is harmless, but it still reads odd.
>
> Signed-off-by: WANG Cong <amwang@redhat.com>
Applied to net-next-2.6, thanks.
^ permalink raw reply
* Re: 2.6.37 regression: adding main interface to a bridge breaks vlan interface RX
From: Jesse Gross @ 2011-02-28 21:37 UTC (permalink / raw)
To: chriss, Francois Romieu; +Cc: netdev
In-Reply-To: <loom.20110226T120245-774@post.gmane.org>
On Sat, Feb 26, 2011 at 3:51 AM, chriss <mail_to_chriss@gmx.net> wrote:
> Jesse Gross <jesse <at> nicira.com> writes:
>
>>
>> Can you confirm this by running tcpdump -eni br0? I would expect that
>> you see the correct packets but without vlan tags.
>>
>
> Thats correct. i see the packets in br0 without tags and tagged in eth1. thats
> why i added the brouting rule in ebtables to drop it at eth1 and the it apears
> in eth1.3 (untagged)...
Putting a vlan device on eth1 actually affects the behavior of the
driver, which is why that works. I suspect that if you put the vlan
device on both the physical interface and the bridge you would see
packets with tags on the bridge.
Regardless, the solution is to remove the dependency on vlan devices
by converting over to the new vlan model. Francois, any chance that
you might have some time to look at this?
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox