From: Vlad Yasevich <vyasevic@redhat.com>
To: Veaceslav Falico <vfalico@gmail.com>
Cc: netdev@vger.kernel.org, Jay Vosburgh <j.vosburgh@gmail.com>,
Andy Gospodarek <andy@greyhouse.net>
Subject: Re: [PATCH net] bonding: Don't assume 802.1Q when sending alb learning packets.
Date: Wed, 21 May 2014 16:10:14 -0400 [thread overview]
Message-ID: <537D0826.8040102@redhat.com> (raw)
In-Reply-To: <20140521154835.GA16470@mikrodark.usersys.redhat.com>
On 05/21/2014 11:48 AM, Veaceslav Falico wrote:
> On Wed, May 21, 2014 at 11:24:39AM -0400, Vlad Yasevich wrote:
>> TLB/ALB learning packets always assume 802.1Q vlan protocol, but
>> that is no longer the case since we now have support for Q-in-Q
>> on top of bonding. Pass the vlan protocol to alb_send_lp_vid()
>> so that the packets are properly tagged.
>>
>> CC: Jay Vosburgh <j.vosburgh@gmail.com>
>> CC: Veaceslav Falico <vfalico@gmail.com>
>
> There one more left - the rlb_update_client(), but it'll require a bit more
> hacking with rlb_client_info struct to work. Maybe some day in the future
> :).
Just looked at it and it looks like q-in-q support is very incompletely
in for alb mode bonding.
Some things I noticed:
1) bond_start_xmit() looks at skb->protocol only which could be 8021Q
or 8021ad. Need to look for the protocol harder.
2) all the arp recv_probe handlers need to know how skip past vlan
headers to see if this is an ARP or not.
3) rlb_client_info needs to know about all vlan headers, not just the
outer one so that rlb_update_client() can function correctly.
-vlad
>
> Acked-by: Veaceslav Falico <vfalico@gmail.com>
>
>> CC: Andy Gospodarek <andy@greyhouse.net>
>> Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
>> ---
>> drivers/net/bonding/bond_alb.c | 7 ++++---
>> 1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/bonding/bond_alb.c
>> b/drivers/net/bonding/bond_alb.c
>> index e538478..2ec945c 100644
>> --- a/drivers/net/bonding/bond_alb.c
>> +++ b/drivers/net/bonding/bond_alb.c
>> @@ -995,7 +995,7 @@ static void rlb_clear_vlan(struct bonding *bond,
>> unsigned short vlan_id)
>> /*********************** tlb/rlb shared functions *********************/
>>
>> static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
>> - u16 vid)
>> + __be16 vlan_proto, u16 vid)
>> {
>> struct learning_pkt pkt;
>> struct sk_buff *skb;
>> @@ -1021,7 +1021,7 @@ static void alb_send_lp_vid(struct slave *slave,
>> u8 mac_addr[],
>> skb->dev = slave->dev;
>>
>> if (vid) {
>> - skb = vlan_put_tag(skb, htons(ETH_P_8021Q), vid);
>> + skb = vlan_put_tag(skb, vlan_proto, vid);
>> if (!skb) {
>> pr_err("%s: Error: failed to insert VLAN tag\n",
>> slave->bond->dev->name);
>> @@ -1040,13 +1040,14 @@ static void alb_send_learning_packets(struct
>> slave *slave, u8 mac_addr[])
>> struct list_head *iter;
>>
>> /* send untagged */
>> - alb_send_lp_vid(slave, mac_addr, 0);
>> + alb_send_lp_vid(slave, mac_addr, 0, 0);
>>
>> /* loop through vlans and send one packet for each */
>> rcu_read_lock();
>> netdev_for_each_all_upper_dev_rcu(bond->dev, upper, iter) {
>> if (is_vlan_dev(upper) && vlan_get_encap_level(upper) == 0)
>> alb_send_lp_vid(slave, mac_addr,
>> + vlan_dev_vlan_proto(upper),
>> vlan_dev_vlan_id(upper));
>> }
>> rcu_read_unlock();
>> --
>> 1.9.0
>>
next prev parent reply other threads:[~2014-05-21 20:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-21 15:24 [PATCH net] bonding: Don't assume 802.1Q when sending alb learning packets Vlad Yasevich
2014-05-21 15:48 ` Veaceslav Falico
2014-05-21 20:10 ` Vlad Yasevich [this message]
2014-05-22 19:45 ` 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=537D0826.8040102@redhat.com \
--to=vyasevic@redhat.com \
--cc=andy@greyhouse.net \
--cc=j.vosburgh@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=vfalico@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.