[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTi=R9f3oAdVAG1MyyTwEqBGRaBj8mtLPg15R2BjW@mail.gmail.com>
Date: Mon, 25 Oct 2010 23:40:29 +0200
From: Michał Mirosław <mirqus@...il.com>
To: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@...el.com>
Cc: Jesse Gross <jesse@...ira.com>, David Miller <davem@...emloft.net>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"Tantilov, Emil S" <emil.s.tantilov@...el.com>,
"Kirsher, Jeffrey T" <jeffrey.t.kirsher@...el.com>
Subject: Re: [PATCH v2 10/14] ixgbe: Update ixgbe to use new vlan accleration.
W dniu 25 października 2010 19:50 użytkownik Peter P Waskiewicz Jr
<peter.p.waskiewicz.jr@...el.com> napisał:
> On Fri, 2010-10-22 at 06:24 -0700, Michał Mirosław wrote:
>> 2010/10/21 Jesse Gross <jesse@...ira.com>:
>> > Make the ixgbe driver use the new vlan accleration model.
>> [...]
>> > --- a/drivers/net/ixgbe/ixgbe_main.c
>> > +++ b/drivers/net/ixgbe/ixgbe_main.c
>> > @@ -954,17 +954,13 @@ static void ixgbe_receive_skb(struct ixgbe_q_vector *q_vector,
>> > bool is_vlan = (status & IXGBE_RXD_STAT_VP);
>> > u16 tag = le16_to_cpu(rx_desc->wb.upper.vlan);
>> >
>> > - if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL)) {
>> > - if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK))
>> > - vlan_gro_receive(napi, adapter->vlgrp, tag, skb);
>> > - else
>> > - napi_gro_receive(napi, skb);
>> > - } else {
>> > - if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK))
>> > - vlan_hwaccel_rx(skb, adapter->vlgrp, tag);
>> > - else
>> > - netif_rx(skb);
>> > - }
>> > + if (is_vlan && (tag & VLAN_VID_MASK))
>> > + __vlan_hwaccel_put_tag(skb, tag);
>>
>> I know that this is carried over from the driver, but why tag == 0 is
>> treated differently here? VID0 is somewhat special, as normally it
>> means 802.1p packet, but i.e. in embedded world people are using it as
>> normal VID. It would be nice to have this handled consistently in the
>> VLAN core - deliver to base dev (tag stripped) if vlan 0 is not
>> configured and to vlan dev if it is.
>
> ixgbe handles VLAN 0 differently because that's the tag that's used when
> DCB is enabled, and no VLAN is configured. We have to insert the 802.1p
> tag for DCB to work, but the OS won't know about the 802.1q tag, and
> ends up dropping the frame. So we enable VLAN ID 0 in the HW and tell
> it to strip the tag, so we can still pass the frame up the stack.
So that's actually (part of) what I'm proposing but done at driver level.
BTW, What happens If you both configure VLAN 0 and enable DCB?
Best Regards,
Michał Mirosław
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists