WSL2-Linux-Kernel/drivers
Eric Dumazet 0287587884 net: better IFF_XMIT_DST_RELEASE support
Testing xmit_more support with netperf and connected UDP sockets,
I found strange dst refcount false sharing.

Current handling of IFF_XMIT_DST_RELEASE is not optimal.

Dropping dst in validate_xmit_skb() is certainly too late in case
packet was queued by cpu X but dequeued by cpu Y

The logical point to take care of drop/force is in __dev_queue_xmit()
before even taking qdisc lock.

As Julian Anastasov pointed out, need for skb_dst() might come from some
packet schedulers or classifiers.

This patch adds new helper to cleanly express needs of various drivers
or qdiscs/classifiers.

Drivers that need skb_dst() in their ndo_start_xmit() should call
following helper in their setup instead of the prior :

	dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
->
	netif_keep_dst(dev);

Instead of using a single bit, we use two bits, one being
eventually rebuilt in bonding/team drivers.

The other one, is permanent and blocks IFF_XMIT_DST_RELEASE being
rebuilt in bonding/team. Eventually, we could add something
smarter later.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-10-07 13:22:11 -04:00
..
accessibility
acpi Merge branches 'acpi-hotplug', 'acpi-scan', 'acpi-lpss', 'acpi-gpio' and 'acpi-video' 2014-09-25 22:59:30 +02:00
amba
ata ahci_xgene: Fix the link down in first attempt for the APM X-Gene SoC AHCI SATA host controller driver. 2014-09-06 11:27:15 +09:00
atm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-08-13 18:27:40 -06:00
auxdisplay
base regmap: Fix registers file debugfs 2014-09-15 16:20:56 -07:00
bcma bcma: use chipcommon node from DT for SoC GPIO chip 2014-09-30 13:17:14 -04:00
block Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-09-13 09:39:55 -07:00
bluetooth Bluetooth: btusb: remove redundant lock variable 2014-09-30 14:13:29 +02:00
bus bus: omap_l3_noc: Fix connID for OMAP4 2014-09-11 10:43:39 -07:00
cdrom
char virtio-rng: skip reading when we start to remove the device 2014-09-11 22:28:38 +09:30
clk clk/efm32gg: fix dt init prototype 2014-09-09 13:52:18 -07:00
clocksource ARM: SoC platform changes for 3.17 2014-08-08 11:14:29 -07:00
connector connector: Use ktime_get_ns() 2014-07-23 10:18:07 -07:00
cpufreq cpufreq: release policy->rwsem on error 2014-09-22 14:32:43 +02:00
cpuidle ARM: 8130/1: cpuidle/cpuidle-big_little: fix reading cpu id part number 2014-08-27 15:40:45 +01:00
crypto crypto: ccp - Check for CCP before registering crypto algs 2014-09-24 14:23:34 +08:00
dca
devfreq PM / OPP: Remove ARCH_HAS_OPP 2014-07-23 00:51:30 +02:00
dio
dma dmaengine: omap-dma: Restore the CLINK_CTRL in resume path 2014-09-23 18:22:55 +05:30
dma-buf dma-buf/fence: Fix a kerneldoc warning 2014-08-28 11:59:09 +05:30
edac Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac 2014-08-15 17:56:45 -06:00
eisa
extcon extcon: sm5502: Change internal hardware switch according to cable type 2014-07-23 10:22:35 +09:00
firewire Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-08-06 09:38:14 -07:00
firmware Revert "efi/x86: efistub: Move shared dependencies to <asm/efi.h>" 2014-09-23 22:01:55 +01:00
fmc
gpio ACPI and power management fixes for 3.17-rc7 2014-09-25 15:25:52 -07:00
gpu Merge branch 'drm-fixes-3.17' of git://people.freedesktop.org/~agd5f/linux into drm-fixes 2014-09-25 06:49:26 +10:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2014-08-27 09:38:06 -07:00
hsi HSI changes for the v3.17 series 2014-08-06 20:06:14 -07:00
hv Char / Misc driver patches for 3.17-rc1 2014-08-04 17:32:24 -07:00
hwmon hwmon: (tmp103) Fix resource leak bug in tmp103 temperature sensor driver 2014-09-22 11:11:48 -07:00
hwspinlock hwspinlock: enable OMAP build for AM33xx, AM43xx & DRA7xx 2014-07-29 11:46:28 +03:00
i2c i2c: acpi: Fix NULL Pointer dereference 2014-09-25 16:08:15 +02:00
ide ide: use module_platform_driver() 2014-08-05 21:16:46 -07:00
idle intel_idle: Broadwell support 2014-08-15 17:06:40 -04:00
iio iio:magnetometer: bugfix magnetometers gain values 2014-09-14 18:21:23 +01:00
infiniband net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-09-26 11:04:31 -07:00
iommu iommu/fsl: Fix warning resulting from adding PCI device twice 2014-09-05 16:01:46 +02:00
ipack
irqchip irqchip: gic-v3: Declare rdist as __percpu pointer to __iomem pointer 2014-09-03 12:08:10 +00:00
isdn isdn/gigaset: use USB API function usb_endpoint_num() 2014-10-05 21:17:52 -04:00
leds Revert "leds: convert blink timer to workqueue" 2014-09-02 10:02:13 -07:00
lguest mm/vmalloc.c: clean up map_vm_area third argument 2014-08-06 18:01:19 -07:00
macintosh == Changes to existing drivers == 2014-08-07 17:23:16 -07:00
mailbox mailbox/omap: add a parent structure for every IP instance 2014-07-29 01:57:25 -07:00
mcb
md Bugfixes for md/raid1 2014-09-24 08:53:33 -07:00
media [media] em28xx-v4l: get rid of field "users" in struct em28xx_v4l2" 2014-09-21 21:27:57 -03:00
memory memory: Freescale CoreNet Coherency Fabric error reporting driver 2014-07-29 19:26:30 -05:00
memstick
message scsi: use 'depends' instead of 'select' for SCSI_FC_ATTRS 2014-09-16 16:55:55 -04:00
mfd mfd: twl4030-power: Fix PM idle pin configuration to not conflict with regulators 2014-08-28 15:57:55 +01:00
misc Lattice ECP3 FPGA: Check firmware pointer 2014-09-08 14:38:14 -07:00
mmc PCI changes for the v3.17 merge window (part 2): 2014-08-14 18:10:33 -06:00
mtd Two trivial MTD updates for 3.17-rc4: 2014-09-06 12:12:09 -07:00
net net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
nfc Merge tag 'master-2014-10-02' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-10-05 21:34:39 -04:00
ntb ntb: Add alignment check to meet hardware requirement 2014-09-14 00:10:38 -04:00
nubus
of net: phy: adjust fixed_phy_register() return value 2014-10-07 13:06:45 -04:00
oprofile
parisc parisc: pdc_stable.c: Avoid potential stack overflows 2014-09-21 22:31:08 +02:00
parport drivers/parport/parport_ip32.c: use PTR_ERR_OR_ZERO 2014-08-08 15:57:25 -07:00
pci PCI updates for v3.17: 2014-09-24 09:46:29 -07:00
pcmcia Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-08-07 08:50:34 -07:00
phy phy: spear1340-miphy: fix driver dependencies 2014-09-12 11:35:31 +05:30
pinctrl pinctrl: baytrail: resolve unbalanced IRQ wake disable warning 2014-09-10 14:25:51 +02:00
platform toshiba_acpi: fix and cleanup toshiba_kbd_bl_mode_store() 2014-09-03 10:45:12 -07:00
pnp ACPI / PNP: Fix acpi_pnp_match() 2014-07-30 00:23:09 +02:00
power ARM: SoC platform changes for 3.17 2014-08-08 11:14:29 -07:00
powercap powercap / RAPL: change domain detection message 2014-09-03 01:29:00 +02:00
pps
ps3
ptp PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
pwm pwm: Fix period and polarity in pwm_get() for non-perfect matches 2014-08-18 10:58:43 +02:00
rapidio PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
ras
regulator regulator: remove unnecessary of_node_get() to parent 2014-09-10 11:35:02 +01:00
remoteproc
reset
rpmsg
rtc drivers/rtc/rtc-efi.c: add missing module alias 2014-09-26 08:10:35 -07:00
s390 net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
sbus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2014-08-05 18:57:18 -07:00
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-22 18:23:33 -07:00
sfi
sh sh: intc: Confine SH_INTC to platforms that need it 2014-08-22 12:28:16 +09:00
sn
soc drivers/soc: qcom: do not disable the iface clock in probe 2014-09-23 21:38:32 -07:00
spi Merge remote-tracking branches 'spi/fix/davinci', 'spi/fix/dw', 'spi/fix/fsl', 'spi/fix/pl022', 'spi/fix/rockchip' and 'spi/fix/sirf' into spi-linus 2014-09-16 16:20:19 -07:00
spmi
ssb ssb: add PCI ID 0x4351 2014-08-25 15:39:22 -04:00
staging et131x: Add PCIe gigabit ethernet driver et131x to drivers/net 2014-10-03 12:22:19 -07:00
target iscsi-target: avoid NULL pointer in iscsi_copy_param_list failure 2014-09-17 13:44:01 -07:00
tc
thermal Merge branches 'exynos-fix', 'for-rc', 'int3403-fix', 'misc', 'rcar-thermal' and 'sti-thermal' of .git into next 2014-07-22 10:13:00 +08:00
thunderbolt thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
tty tty: xuartps: Fix tx_emtpy() callback 2014-09-08 16:33:56 -07:00
uio
usb Merge tag 'master-2014-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-09-26 15:39:24 -04:00
uwb uwb: init beacon cache entry before registering uwb device 2014-09-08 16:03:21 -07:00
vfio drivers/vfio: Enable VFIO if EEH is not supported 2014-08-08 10:39:16 -06:00
vhost
video video: ARM CLCD: Fix color model capabilities for DT platforms 2014-09-12 11:45:10 +03:00
virt
virtio virtio_ring: unify direct/indirect code paths. 2014-09-13 12:52:35 -04:00
vlynq
vme vme: bridges: use pci_zalloc_consistent 2014-08-08 15:57:30 -07:00
w1
watchdog Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-08-07 08:47:00 -07:00
xen xen: bug fixes for 3.17-rc4 2014-09-11 16:52:29 -07:00
zorro
Kconfig Char / Misc driver patches for 3.17-rc1 2014-08-04 17:32:24 -07:00
Makefile Driver core patches for 3.17-rc1 2014-08-04 18:34:04 -07:00