<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/drivers/net, branch v3.12.19</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.12.19</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.12.19'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2014-05-05T09:34:21Z</updated>
<entry>
<title>e1000e: Fix no connectivity when driver loaded with cable out</title>
<updated>2014-05-05T09:34:21Z</updated>
<author>
<name>David Ertman</name>
<email>davidx.m.ertman@intel.com</email>
</author>
<published>2014-03-25T04:27:55Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ee16a58677a12cd4b17e76ba8565117e435f5e1f'/>
<id>urn:sha1:ee16a58677a12cd4b17e76ba8565117e435f5e1f</id>
<content type='text'>
commit b20a774495671f037e7160ea2ce8789af6b61533 upstream.

In commit da1e2046e5, the flow for enabling/disabling an Si errata
workaround (e1000_lv_jumbo_workaround_ich8lan) was changed to fix a problem
with iAMT connections dropping on interface down with jumbo frames set.
Part of this change was to move the function call disabling the workaround
to e1000e_down() from the e1000_setup_rctl() function.  The mechanic for
disabling of this workaround involves writing several MAC and PHY registers
back to hardware defaults.

After this commit, when the driver is loaded with the cable out, the PHY
registers are not programmed with the correct default values.  This causes
the device to be capable of transmitting packets, but is unable to recieve
them until this workaround is called.

The flow of e1000e's open code relies upon calling the above workaround to
expicitly program these registers either with jumbo frame appropriate settings
or h/w defaults on 82579 and newer hardware.

Fix this issue by adding logic to e1000_setup_rctl() that not only calls
e1000_lv_jumbo_workaround_ich8lan() when jumbo frames are set, to enable the
workaround, but also calls this function to explicitly disable the workaround
in the case that jumbo frames are not set.

Signed-off-by: Dave Ertman &lt;davidx.m.ertman@intel.com&gt;
Tested-by: Jeff Pieper &lt;jeffrey.e.pieper@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>drivers/net: tulip_remove_one needs to call pci_disable_device()</title>
<updated>2014-04-25T16:45:50Z</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2014-02-14T14:32:20Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=831bb5573dcbeb0da783c82e21084ac191dafc24'/>
<id>urn:sha1:831bb5573dcbeb0da783c82e21084ac191dafc24</id>
<content type='text'>
commit c321f7d7c87cdc623c87845f6378620573e57512 upstream.

Otherwise the device is not completely shut down.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>brcmsmac: fix deadlock on missing firmware</title>
<updated>2014-04-25T16:10:04Z</updated>
<author>
<name>Emil Goode</name>
<email>emilgoode@gmail.com</email>
</author>
<published>2014-03-09T20:06:51Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=de0b7b0dd1b625c8b4730869ae3d651e9189617c'/>
<id>urn:sha1:de0b7b0dd1b625c8b4730869ae3d651e9189617c</id>
<content type='text'>
commit 8fc1e8c240aab968db658b2d8d079b4391207a36 upstream.

When brcm80211 firmware is not installed networking hangs.
A deadlock happens because we call ieee80211_unregister_hw()
from the .start callback of struct ieee80211_ops. When .start
is called we are under rtnl lock and ieee80211_unregister_hw()
tries to take it again.

Function call stack:

dev_change_flags()
	__dev_change_flags()
		__dev_open()
			ASSERT_RTNL() &lt;-- Assert rtnl lock
			ops-&gt;ndo_open()

.ndo_open = ieee80211_open,

ieee80211_open()
	ieee80211_do_open()
		drv_start()
			local-&gt;ops-&gt;start()

.start = brcms_ops_start,

brcms_ops_start()
	brcms_remove()
		ieee80211_unregister_hw()
			rtnl_lock() &lt;-- Here we deadlock

Introduced by:
commit 25b5632fb35ca61b8ae3eee235edcdc2883f7a5e
("brcmsmac: request firmware in .start() callback")

This patch fixes the bug by removing the call to brcms_remove()
and moves the brcms_request_fw() call to the top of the .start
callback to not initiate anything unless firmware is installed.

Signed-off-by: Emil Goode &lt;emilgoode@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>net: vxlan: fix crash when interface is created with no group</title>
<updated>2014-04-18T09:07:17Z</updated>
<author>
<name>Mike Rapoport</name>
<email>mike.rapoport@ravellosystems.com</email>
</author>
<published>2014-04-01T06:23:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=362bc7e25149fe30c5c0892611b63329433dbff8'/>
<id>urn:sha1:362bc7e25149fe30c5c0892611b63329433dbff8</id>
<content type='text'>
[ Upstream commit 5933a7bbb5de66482ea8aa874a7ebaf8e67603c4 ]

If the vxlan interface is created without explicit group definition,
there are corner cases which may cause kernel panic.

For instance, in the following scenario:

node A:
$ ip link add dev vxlan42  address 2c:c2:60:00:10:20 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.1/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.2 2c:c2:60:00:01:02
$ bridge fdb add dev vxlan42 to 2c:c2:60:00:01:02 dst &lt;IPv4 address&gt;
$ ping 10.0.0.2

node B:
$ ip link add dev vxlan42 address 2c:c2:60:00:01:02 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.2/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.1 2c:c2:60:00:10:20

node B crashes:

 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 BUG: unable to handle kernel NULL pointer dereference at 0000000000000046
 IP: [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 PGD 7bd89067 PUD 7bd4e067 PMD 0
 Oops: 0000 [#1] SMP
 Modules linked in:
 CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.0-rc8-hvx-xen-00019-g97a5221-dirty #154
 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
 task: ffff88007c774f50 ti: ffff88007c79c000 task.ti: ffff88007c79c000
 RIP: 0010:[&lt;ffffffff8143c459&gt;]  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 RSP: 0018:ffff88007fd03668  EFLAGS: 00010282
 RAX: 0000000000000000 RBX: ffffffff8186a000 RCX: 0000000000000040
 RDX: 0000000000000000 RSI: ffff88007b0e4a80 RDI: ffff88007fd03754
 RBP: ffff88007fd03688 R08: ffff88007b0e4a80 R09: 0000000000000000
 R10: 0200000a0100000a R11: 0001002200000000 R12: ffff88007fd03740
 R13: ffff88007b0e4a80 R14: ffff88007b0e4a80 R15: ffff88007bba0c50
 FS:  0000000000000000(0000) GS:ffff88007fd00000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
 CR2: 0000000000000046 CR3: 000000007bb60000 CR4: 00000000000006e0
 Stack:
  0000000000000000 ffff88007fd037a0 ffffffff8186a000 ffff88007fd03740
  ffff88007fd036c8 ffffffff814320bb 0000000000006e49 ffff88007b8b7360
  ffff88007bdbf200 ffff88007bcbc000 ffff88007b8b7000 ffff88007b8b7360
 Call Trace:
  &lt;IRQ&gt;
  [&lt;ffffffff814320bb&gt;] ip6_dst_lookup_tail+0x2d/0xa4
  [&lt;ffffffff814322a5&gt;] ip6_dst_lookup+0x10/0x12
  [&lt;ffffffff81323b4e&gt;] vxlan_xmit_one+0x32a/0x68c
  [&lt;ffffffff814a325a&gt;] ? _raw_spin_unlock_irqrestore+0x12/0x14
  [&lt;ffffffff8104c551&gt;] ? lock_timer_base.isra.23+0x26/0x4b
  [&lt;ffffffff8132451a&gt;] vxlan_xmit+0x66a/0x6a8
  [&lt;ffffffff8141a365&gt;] ? ipt_do_table+0x35f/0x37e
  [&lt;ffffffff81204ba2&gt;] ? selinux_ip_postroute+0x41/0x26e
  [&lt;ffffffff8139d0c1&gt;] dev_hard_start_xmit+0x2ce/0x3ce
  [&lt;ffffffff8139d491&gt;] __dev_queue_xmit+0x2d0/0x392
  [&lt;ffffffff813b380f&gt;] ? eth_header+0x28/0xb5
  [&lt;ffffffff8139d569&gt;] dev_queue_xmit+0xb/0xd
  [&lt;ffffffff813a5aa6&gt;] neigh_resolve_output+0x134/0x152
  [&lt;ffffffff813db741&gt;] ip_finish_output2+0x236/0x299
  [&lt;ffffffff813dc074&gt;] ip_finish_output+0x98/0x9d
  [&lt;ffffffff813dc749&gt;] ip_output+0x62/0x67
  [&lt;ffffffff813da9f2&gt;] dst_output+0xf/0x11
  [&lt;ffffffff813dc11c&gt;] ip_local_out+0x1b/0x1f
  [&lt;ffffffff813dcf1b&gt;] ip_send_skb+0x11/0x37
  [&lt;ffffffff813dcf70&gt;] ip_push_pending_frames+0x2f/0x33
  [&lt;ffffffff813ff732&gt;] icmp_push_reply+0x106/0x115
  [&lt;ffffffff813ff9e4&gt;] icmp_reply+0x142/0x164
  [&lt;ffffffff813ffb3b&gt;] icmp_echo.part.16+0x46/0x48
  [&lt;ffffffff813c1d30&gt;] ? nf_iterate+0x43/0x80
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813ffb62&gt;] icmp_echo+0x25/0x27
  [&lt;ffffffff814005f7&gt;] icmp_rcv+0x1d2/0x20a
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d810d&gt;] ip_local_deliver_finish+0xd6/0x14f
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d82bf&gt;] ip_local_deliver+0x4a/0x4f
  [&lt;ffffffff813d7f7b&gt;] ip_rcv_finish+0x253/0x26a
  [&lt;ffffffff813d7d28&gt;] ? inet_add_protocol+0x3e/0x3e
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d856a&gt;] ip_rcv+0x2a6/0x2ec
  [&lt;ffffffff8139a9a0&gt;] __netif_receive_skb_core+0x43e/0x478
  [&lt;ffffffff812a346f&gt;] ? virtqueue_poll+0x16/0x27
  [&lt;ffffffff8139aa2f&gt;] __netif_receive_skb+0x55/0x5a
  [&lt;ffffffff8139aaaa&gt;] process_backlog+0x76/0x12f
  [&lt;ffffffff8139add8&gt;] net_rx_action+0xa2/0x1ab
  [&lt;ffffffff81047847&gt;] __do_softirq+0xca/0x1d1
  [&lt;ffffffff81047ace&gt;] irq_exit+0x3e/0x85
  [&lt;ffffffff8100b98b&gt;] do_IRQ+0xa9/0xc4
  [&lt;ffffffff814a37ad&gt;] common_interrupt+0x6d/0x6d
  &lt;EOI&gt;
  [&lt;ffffffff810378db&gt;] ? native_safe_halt+0x6/0x8
  [&lt;ffffffff810110c7&gt;] default_idle+0x9/0xd
  [&lt;ffffffff81011694&gt;] arch_cpu_idle+0x13/0x1c
  [&lt;ffffffff8107480d&gt;] cpu_startup_entry+0xbc/0x137
  [&lt;ffffffff8102e741&gt;] start_secondary+0x1a0/0x1a5
 Code: 24 14 e8 f1 e5 01 00 31 d2 a8 32 0f 95 c2 49 8b 44 24 2c 49 0b 44 24 24 74 05 83 ca 04 eb 1c 4d 85 ed 74 17 49 8b 85 a8 02 00 00 &lt;66&gt; 8b 40 46 66 c1 e8 07 83 e0 07 c1 e0 03 09 c2 4c 89 e6 48 89
 RIP  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
  RSP &lt;ffff88007fd03668&gt;
 CR2: 0000000000000046
 ---[ end trace 4612329caab37efd ]---

When vxlan interface is created without explicit group definition, the
default_dst protocol family is initialiazed to AF_UNSPEC and the driver
assumes IPv4 configuration. On the other side, the default_dst protocol
family is used to differentiate between IPv4 and IPv6 cases and, since,
AF_UNSPEC != AF_INET, the processing takes the IPv6 path.

Making the IPv4 assumption explicit by settting default_dst protocol
family to AF_INET4 and preventing mixing of IPv4 and IPv6 addresses in
snooped fdb entries fixes the corner case crashes.

Signed-off-by: Mike Rapoport &lt;mike.rapoport@ravellosystems.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>xen-netback: disable rogue vif in kthread context</title>
<updated>2014-04-18T09:07:17Z</updated>
<author>
<name>Wei Liu</name>
<email>wei.liu2@citrix.com</email>
</author>
<published>2014-04-01T11:46:12Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=699dfec4e90e73bac6455560187c34f77115bc2f'/>
<id>urn:sha1:699dfec4e90e73bac6455560187c34f77115bc2f</id>
<content type='text'>
[ Upstream commit e9d8b2c2968499c1f96563e6522c56958d5a1d0d ]

When netback discovers frontend is sending malformed packet it will
disables the interface which serves that frontend.

However disabling a network interface involving taking a mutex which
cannot be done in softirq context, so we need to defer this process to
kthread context.

This patch does the following:
1. introduce a flag to indicate the interface is disabled.
2. check that flag in TX path, don't do any work if it's true.
3. check that flag in RX path, turn off that interface if it's true.

The reason to disable it in RX path is because RX uses kthread. After
this change the behavior of netback is still consistent -- it won't do
any TX work for a rogue frontend, and the interface will be eventually
turned off.

Also change a "continue" to "break" after xenvif_fatal_tx_err, as it
doesn't make sense to continue processing packets if frontend is rogue.

This is a fix for XSA-90.

Reported-by: Török Edwin &lt;edwin@etorok.net&gt;
Signed-off-by: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Reviewed-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Acked-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>xen-netback: remove pointless clause from if statement</title>
<updated>2014-04-18T09:07:15Z</updated>
<author>
<name>Paul Durrant</name>
<email>Paul.Durrant@citrix.com</email>
</author>
<published>2014-03-28T11:39:05Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=63273418e7e48018bfb432f13caca9eeaee00679'/>
<id>urn:sha1:63273418e7e48018bfb432f13caca9eeaee00679</id>
<content type='text'>
[ Upstream commit 0576eddf24df716d8570ef8ca11452a9f98eaab2 ]

This patch removes a test in start_new_rx_buffer() that checks whether
a copy operation is less than MAX_BUFFER_OFFSET in length, since
MAX_BUFFER_OFFSET is defined to be PAGE_SIZE and the only caller of
start_new_rx_buffer() already limits copy operations to PAGE_SIZE or less.

Signed-off-by: Paul Durrant &lt;paul.durrant@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Cc: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Reported-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Tested-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>usbnet: include wait queue head in device structure</title>
<updated>2014-04-18T09:07:13Z</updated>
<author>
<name>Oliver Neukum</name>
<email>oneukum@suse.de</email>
</author>
<published>2014-03-26T13:32:51Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=0631987d442761501dc65c8ecb9a1267e0b2050d'/>
<id>urn:sha1:0631987d442761501dc65c8ecb9a1267e0b2050d</id>
<content type='text'>
[ Upstream commit 14a0d635d18d0fb552dcc979d6d25106e6541f2e ]

This fixes a race which happens by freeing an object on the stack.
Quoting Julius:
&gt; The issue is
&gt; that it calls usbnet_terminate_urbs() before that, which temporarily
&gt; installs a waitqueue in dev-&gt;wait in order to be able to wait on the
&gt; tasklet to run and finish up some queues. The waiting itself looks
&gt; okay, but the access to 'dev-&gt;wait' is totally unprotected and can
&gt; race arbitrarily. I think in this case usbnet_bh() managed to succeed
&gt; it's dev-&gt;wait check just before usbnet_terminate_urbs() sets it back
&gt; to NULL. The latter then finishes and the waitqueue_t structure on its
&gt; stack gets overwritten by other functions halfway through the
&gt; wake_up() call in usbnet_bh().

The fix is to just not allocate the data structure on the stack.
As dev-&gt;wait is abused as a flag it also takes a runtime PM change
to fix this bug.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.de&gt;
Reported-by: Grant Grundler &lt;grundler@google.com&gt;
Tested-by: Grant Grundler &lt;grundler@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>tg3: Do not include vlan acceleration features in vlan_features</title>
<updated>2014-04-18T09:07:12Z</updated>
<author>
<name>Vlad Yasevich</name>
<email>vyasevic@redhat.com</email>
</author>
<published>2014-03-24T21:52:12Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=3552f3fcb4da06e0129eb4a66c31ad410ecbb9e4'/>
<id>urn:sha1:3552f3fcb4da06e0129eb4a66c31ad410ecbb9e4</id>
<content type='text'>
[ Upstream commit 51dfe7b944998eaeb2b34d314f3a6b16a5fd621b ]

Including hardware acceleration features in vlan_features breaks
stacked vlans (Q-in-Q) by marking the bottom vlan interface as
capable of acceleration.  This causes one of the tags to be lost
and the packets are sent with a sing vlan header.

CC: Nithin Nayak Sujir &lt;nsujir@broadcom.com&gt;
CC: Michael Chan &lt;mchan@broadcom.com&gt;
Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>net: micrel : ks8851-ml: add vdd-supply support</title>
<updated>2014-04-18T09:07:10Z</updated>
<author>
<name>Nishanth Menon</name>
<email>nm@ti.com</email>
</author>
<published>2014-03-21T06:52:48Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d8496cba73e6eb7f5fd36adbd3dbaf348bbe0ef2'/>
<id>urn:sha1:d8496cba73e6eb7f5fd36adbd3dbaf348bbe0ef2</id>
<content type='text'>
[ Upstream commit ebf4ad955d3e26d4d2a33709624fc7b5b9d3b969 ]

Few platforms use external regulator to keep the ethernet MAC supplied.
So, request and enable the regulator for driver functionality.

Fixes: 66fda75f47dc (regulator: core: Replace direct ops-&gt;disable usage)
Reported-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Suggested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>vxlan: fix nonfunctional neigh_reduce()</title>
<updated>2014-04-18T09:07:07Z</updated>
<author>
<name>David Stevens</name>
<email>dlstevens@us.ibm.com</email>
</author>
<published>2014-03-24T14:39:58Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d8be18c52dbc94989f6d74637b731af39cd3d902'/>
<id>urn:sha1:d8be18c52dbc94989f6d74637b731af39cd3d902</id>
<content type='text'>
[ Upstream commit 4b29dba9c085a4fb79058fb1c45a2f6257ca3dfa ]

The VXLAN neigh_reduce() code is completely non-functional since
check-in. Specific errors:

1) The original code drops all packets with a multicast destination address,
	even though neighbor solicitations are sent to the solicited-node
	address, a multicast address. The code after this check was never run.
2) The neighbor table lookup used the IPv6 header destination, which is the
	solicited node address, rather than the target address from the
	neighbor solicitation. So neighbor lookups would always fail if it
	got this far. Also for L3MISSes.
3) The code calls ndisc_send_na(), which does a send on the tunnel device.
	The context for neigh_reduce() is the transmit path, vxlan_xmit(),
	where the host or a bridge-attached neighbor is trying to transmit
	a neighbor solicitation. To respond to it, the tunnel endpoint needs
	to do a *receive* of the appropriate neighbor advertisement. Doing a
	send, would only try to send the advertisement, encapsulated, to the
	remote destinations in the fdb -- hosts that definitely did not do the
	corresponding solicitation.
4) The code uses the tunnel endpoint IPv6 forwarding flag to determine the
	isrouter flag in the advertisement. This has nothing to do with whether
	or not the target is a router, and generally won't be set since the
	tunnel endpoint is bridging, not routing, traffic.

	The patch below creates a proxy neighbor advertisement to respond to
neighbor solicitions as intended, providing proper IPv6 support for neighbor
reduction.

Signed-off-by: David L Stevens &lt;dlstevens@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
</feed>
