linux/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
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
connector
cpufreq cpufreq: release policy->rwsem on error 2014-09-22 14:32:43 +02:00
cpuidle
crypto crypto: ccp - Check for CCP before registering crypto algs 2014-09-24 14:23:34 +08:00
dca
devfreq
dio
dma dmaengine: omap-dma: Restore the CLINK_CTRL in resume path 2014-09-23 18:22:55 +05:30
dma-buf
edac
eisa
extcon
firewire
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
hsi
hv
hwmon hwmon: (tmp103) Fix resource leak bug in tmp103 temperature sensor driver 2014-09-22 11:11:48 -07:00
hwspinlock
i2c i2c: acpi: Fix NULL Pointer dereference 2014-09-25 16:08:15 +02:00
ide
idle
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
isdn isdn/gigaset: use USB API function usb_endpoint_num() 2014-10-05 21:17:52 -04:00
leds
lguest
macintosh
mailbox
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
memstick
message scsi: use 'depends' instead of 'select' for SCSI_FC_ATTRS 2014-09-16 16:55:55 -04:00
mfd
misc Lattice ECP3 FPGA: Check firmware pointer 2014-09-08 14:38:14 -07:00
mmc
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
pci PCI updates for v3.17: 2014-09-24 09:46:29 -07:00
pcmcia
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
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
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
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-22 18:23:33 -07:00
sfi
sh
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
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
thunderbolt
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
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
w1
watchdog
xen xen: bug fixes for 3.17-rc4 2014-09-11 16:52:29 -07:00
zorro
Kconfig
Makefile