<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/net/8021q/vlan.c, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-06-01T23:50:52+00:00</updated>
<entry>
<title>vlan: Add GRO support for non hardware accelerated vlan</title>
<updated>2015-06-01T23:50:52+00:00</updated>
<author>
<name>Toshiaki Makita</name>
<email>makita.toshiaki@lab.ntt.co.jp</email>
</author>
<published>2015-06-01T12:55:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=66e5133f19e901a044fa5eaeeb6ecff4545839e5'/>
<id>urn:sha1:66e5133f19e901a044fa5eaeeb6ecff4545839e5</id>
<content type='text'>
Currently packets with non-hardware-accelerated vlan cannot be handled
by GRO. This causes low performance for 802.1ad and stacked vlan, as their
vlan tags are currently not stripped by hardware.

This patch adds GRO support for non-hardware-accelerated vlan and
improves receive performance of them.

Test Environment:
 vlan device (.1Q) on vlan device (.1ad) on ixgbe (82599)

Result:

- Before

$ netperf -t TCP_STREAM -H 192.168.20.2 -l 60
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

 87380  16384  16384    60.00    5233.17

Rx side CPU usage:
  %usr      %sys      %irq     %soft     %idle
  0.27     58.03      0.00     41.70      0.00

- After

$ netperf -t TCP_STREAM -H 192.168.20.2 -l 60
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

 87380  16384  16384    60.00    7586.85

Rx side CPU usage:
  %usr      %sys      %irq     %soft     %idle
  0.50     25.83      0.00     59.53     14.14

[ Register VLAN offloads with priority 10 -DaveM ]

Signed-off-by: Toshiaki Makita &lt;makita.toshiaki@lab.ntt.co.jp&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: Correctly propagate promisc|allmulti flags in notifier.</title>
<updated>2015-05-14T04:54:32+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vyasevich@gmail.com</email>
</author>
<published>2015-05-13T00:53:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=be346ffaad9bc354075fba5cd009fc4519abdd64'/>
<id>urn:sha1:be346ffaad9bc354075fba5cd009fc4519abdd64</id>
<content type='text'>
Currently vlan notifier handler will try to update all vlans
for a device when that device comes up.  A problem occurs,
however, when the vlan device was set to promiscuous, but not
by the user (ex: a bridge).  In that case, dev-&gt;gflags are
not updated.  What results is that the lower device ends
up with an extra promiscuity count.  Here are the
backtraces that prove this:
[62852.052179]  [&lt;ffffffff814fe248&gt;] __dev_set_promiscuity+0x38/0x1e0
[62852.052186]  [&lt;ffffffff8160bcbb&gt;] ? _raw_spin_unlock_bh+0x1b/0x40
[62852.052188]  [&lt;ffffffff814fe4be&gt;] ? dev_set_rx_mode+0x2e/0x40
[62852.052190]  [&lt;ffffffff814fe694&gt;] dev_set_promiscuity+0x24/0x50
[62852.052194]  [&lt;ffffffffa0324795&gt;] vlan_dev_open+0xd5/0x1f0 [8021q]
[62852.052196]  [&lt;ffffffff814fe58f&gt;] __dev_open+0xbf/0x140
[62852.052198]  [&lt;ffffffff814fe88d&gt;] __dev_change_flags+0x9d/0x170
[62852.052200]  [&lt;ffffffff814fe989&gt;] dev_change_flags+0x29/0x60

The above comes from the setting the vlan device to IFF_UP state.

[62852.053569]  [&lt;ffffffff814fe248&gt;] __dev_set_promiscuity+0x38/0x1e0
[62852.053571]  [&lt;ffffffffa032459b&gt;] ? vlan_dev_set_rx_mode+0x2b/0x30
[8021q]
[62852.053573]  [&lt;ffffffff814fe8d5&gt;] __dev_change_flags+0xe5/0x170
[62852.053645]  [&lt;ffffffff814fe989&gt;] dev_change_flags+0x29/0x60
[62852.053647]  [&lt;ffffffffa032334a&gt;] vlan_device_event+0x18a/0x690
[8021q]
[62852.053649]  [&lt;ffffffff8161036c&gt;] notifier_call_chain+0x4c/0x70
[62852.053651]  [&lt;ffffffff8109d456&gt;] raw_notifier_call_chain+0x16/0x20
[62852.053653]  [&lt;ffffffff814f744d&gt;] call_netdevice_notifiers+0x2d/0x60
[62852.053654]  [&lt;ffffffff814fe1a3&gt;] __dev_notify_flags+0x33/0xa0
[62852.053656]  [&lt;ffffffff814fe9b2&gt;] dev_change_flags+0x52/0x60
[62852.053657]  [&lt;ffffffff8150cd57&gt;] do_setlink+0x397/0xa40

And this one comes from the notification code.  What we end
up with is a vlan with promiscuity count of 1 and and a physical
device with a promiscuity count of 2.  They should both have
a count 1.

To resolve this issue, vlan code can use dev_get_flags() api
which correctly masks promiscuity and allmulti flags.

Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Fix high overhead of vlan sub-device teardown.</title>
<updated>2015-03-19T02:52:56+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2015-03-19T02:52:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=99c4a26a159b28fa46a3e746a9b41b297e73d261'/>
<id>urn:sha1:99c4a26a159b28fa46a3e746a9b41b297e73d261</id>
<content type='text'>
When a networking device is taken down that has a non-trivial number
of VLAN devices configured under it, we eat a full synchronize_net()
for every such VLAN device.

This is because of the call chain:

	NETDEV_DOWN notifier
	--&gt; vlan_device_event()
		--&gt; dev_change_flags()
		--&gt; __dev_change_flags()
		--&gt; __dev_close()
		--&gt; __dev_close_many()
		--&gt; dev_deactivate_many()
			--&gt; synchronize_net()

This is kind of rediculous because we already have infrastructure for
batching doing operation X to a list of net devices so that we only
incur one sync.

So make use of that by exporting dev_close_many() and adjusting it's
interfaace so that the caller can fully manage the batch list.  Use
this in vlan_device_event() and all the overhead goes away.

Reported-by: Salam Noureddine &lt;noureddine@arista.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: fail early when creating netdev named config</title>
<updated>2014-07-29T18:43:50+00:00</updated>
<author>
<name>WANG Cong</name>
<email>xiyou.wangcong@gmail.com</email>
</author>
<published>2014-07-25T22:25:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=9c5ff24f963919965155cf0c4a2323b22a0c5c84'/>
<id>urn:sha1:9c5ff24f963919965155cf0c4a2323b22a0c5c84</id>
<content type='text'>
Similarly, vlan will create  /proc/net/vlan/&lt;dev&gt;, so when we
create dev with name "config", it will confict with
/proc/net/vlan/config.

Reported-by: Stephane Chazelas &lt;stephane.chazelas@gmail.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;xiyou.wangcong@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: set name_assign_type in alloc_netdev()</title>
<updated>2014-07-15T23:12:48+00:00</updated>
<author>
<name>Tom Gundersen</name>
<email>teg@jklm.no</email>
</author>
<published>2014-07-14T14:37:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c835a677331495cf137a7f8a023463afd9f032f8'/>
<id>urn:sha1:c835a677331495cf137a7f8a023463afd9f032f8</id>
<content type='text'>
Extend alloc_netdev{,_mq{,s}}() to take name_assign_type as argument, and convert
all users to pass NET_NAME_UNKNOWN.

Coccinelle patch:

@@
expression sizeof_priv, name, setup, txqs, rxqs, count;
@@

(
-alloc_netdev_mqs(sizeof_priv, name, setup, txqs, rxqs)
+alloc_netdev_mqs(sizeof_priv, name, NET_NAME_UNKNOWN, setup, txqs, rxqs)
|
-alloc_netdev_mq(sizeof_priv, name, setup, count)
+alloc_netdev_mq(sizeof_priv, name, NET_NAME_UNKNOWN, setup, count)
|
-alloc_netdev(sizeof_priv, name, setup)
+alloc_netdev(sizeof_priv, name, NET_NAME_UNKNOWN, setup)
)

v9: move comments here from the wrong commit

Signed-off-by: Tom Gundersen &lt;teg@jklm.no&gt;
Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: Fix lockdep warning with stacked vlan devices.</title>
<updated>2014-05-17T02:14:49+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vyasevic@redhat.com</email>
</author>
<published>2014-05-16T21:04:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=d38569ab2bba6e6b3233acfc3a84cdbcfbd1f79f'/>
<id>urn:sha1:d38569ab2bba6e6b3233acfc3a84cdbcfbd1f79f</id>
<content type='text'>
This reverts commit dc8eaaa006350d24030502a4521542e74b5cb39f.
	vlan: Fix lockdep warning when vlan dev handle notification

Instead we use the new new API to find the lock subclass of
our vlan device.  This way we can support configurations where
vlans are interspersed with other devices:
  bond -&gt; vlan -&gt; macvlan -&gt; vlan

Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: Set hard_header_len according to available acceleration</title>
<updated>2014-03-27T19:00:37+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vyasevic@redhat.com</email>
</author>
<published>2014-03-26T15:47:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=fc0d48b8fb449ca007b2057328abf736cb516168'/>
<id>urn:sha1:fc0d48b8fb449ca007b2057328abf736cb516168</id>
<content type='text'>
Currently, if the card supports CTAG acceleration we do not
account for the vlan header even if we are configuring an
8021AD vlan.  This may not be best since we'll do software
tagging for 8021AD which will cause data copy on skb head expansion
Configure the length based on available hw offload capabilities and
vlan protocol.

CC: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>8021q: Use ether_addr_copy</title>
<updated>2014-01-22T02:13:04+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2014-01-20T17:52:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=07fc67befd2e843da8ad01785d559d9c257d7fd4'/>
<id>urn:sha1:07fc67befd2e843da8ad01785d559d9c257d7fd4</id>
<content type='text'>
Use ether_addr_copy instead of memcpy(a, b, ETH_ALEN) to
save some cycles on arm and powerpc.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: unlink the upper neighbour before unregistering</title>
<updated>2013-09-26T20:02:07+00:00</updated>
<author>
<name>Veaceslav Falico</name>
<email>vfalico@redhat.com</email>
</author>
<published>2013-09-25T07:20:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=47701a36a3ed6d97e5bbe7ad72cceb49ca329d00'/>
<id>urn:sha1:47701a36a3ed6d97e5bbe7ad72cceb49ca329d00</id>
<content type='text'>
On netdev unregister we're removing also all of its sysfs-associated stuff,
including the sysfs symlinks that are controlled by netdev neighbour code.
Also, it's a subtle race condition - cause we can still access it after
unregistering.

Move the unlinking right before the unregistering to fix both.

CC: Patrick McHardy &lt;kaber@trash.net&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Veaceslav Falico &lt;vfalico@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vlan: link the upper neighbour only after registering</title>
<updated>2013-09-26T20:02:07+00:00</updated>
<author>
<name>Veaceslav Falico</name>
<email>vfalico@redhat.com</email>
</author>
<published>2013-09-25T07:20:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=5df27e6cb2d302e90366848bc3c2bb73c41287fb'/>
<id>urn:sha1:5df27e6cb2d302e90366848bc3c2bb73c41287fb</id>
<content type='text'>
Otherwise users might access it without being fully registered, as per
sysfs - it only inits in register_netdevice(), so is unusable till it is
called.

CC: Patrick McHardy &lt;kaber@trash.net&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Veaceslav Falico &lt;vfalico@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
