android_kernel_xiaomi_sm7250/drivers
Herbert Xu 932ff279a4 [NET]: Add netif_tx_lock
Various drivers use xmit_lock internally to synchronise with their
transmission routines.  They do so without setting xmit_lock_owner.
This is fine as long as netpoll is not in use.

With netpoll it is possible for deadlocks to occur if xmit_lock_owner
isn't set.  This is because if a printk occurs while xmit_lock is held
and xmit_lock_owner is not set can cause netpoll to attempt to take
xmit_lock recursively.

While it is possible to resolve this by getting netpoll to use
trylock, it is suboptimal because netpoll's sole objective is to
maximise the chance of getting the printk out on the wire.  So
delaying or dropping the message is to be avoided as much as possible.

So the only alternative is to always set xmit_lock_owner.  The
following patch does this by introducing the netif_tx_lock family of
functions that take care of setting/unsetting xmit_lock_owner.

I renamed xmit_lock to _xmit_lock to indicate that it should not be
used directly.  I didn't provide irq versions of the netif_tx_lock
functions since xmit_lock is meant to be a BH-disabling lock.

This is pretty much a straight text substitution except for a small
bug fix in winbond.  It currently uses
netif_stop_queue/spin_unlock_wait to stop transmission.  This is
unsafe as an IRQ can potentially wake up the queue.  So it is safer to
use netif_tx_disable.

The hamradio bits used spin_lock_irq but it is unnecessary as
xmit_lock must never be taken in an IRQ handler.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-17 21:30:14 -07:00
..
acorn
acpi [PATCH] powernow-k8 crash workaround 2006-06-10 11:02:05 -07:00
amba
atm [PATCH] Replace 0xff.. with correct DMA_xBIT_MASK 2006-03-28 09:16:07 -08:00
base [PATCH] revert "swsusp add check for suspension of X controlled devices" 2006-05-31 16:27:11 -07:00
block [PATCH] USB: ub oops in block_uevent 2006-05-08 23:43:55 -07:00
bluetooth [PATCH] pcmcia: use bitfield instead of p_state and state 2006-03-31 17:26:33 +02:00
cdrom [PATCH] fix cdrom open 2006-06-17 10:44:26 -07:00
char [PATCH] Fix for the PPTP hangs that have been reported 2006-06-11 20:40:39 -07:00
connector [CONNECTOR]: Fix warning in cn_queue.c 2006-06-17 21:29:43 -07:00
cpufreq [PATCH] x86_64: Move ondemand timer into own work queue 2006-05-08 09:34:56 -07:00
crypto
dio
dma [I/OAT]: Do not use for_each_cpu(). 2006-06-17 21:25:58 -07:00
edac [PATCH] EDAC Coexistence with BIOS 2006-05-03 20:05:41 -07:00
eisa
fc4
firmware [PATCH] DMI: move dmi_scan.c from arch/i386 to drivers/firmware/ 2006-04-14 11:41:25 -07:00
hwmon [PATCH] w83792d: Be quiet on misdetection 2006-04-14 11:18:33 -07:00
i2c [PATCH] scx200_acb: fix section mismatch warning 2006-05-26 11:55:46 -07:00
ide [PATCH] sgiioc4: use mmio ops instead of port io 2006-05-31 16:27:11 -07:00
ieee1394 [PATCH] sbp2: fix check of return value of hpsb_allocate_and_register_addrspace() 2006-06-05 12:29:16 -07:00
infiniband [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
input Input: psmouse - DMI updates for lifebook protocol 2006-05-29 23:31:12 -04:00
isdn [PATCH] Overrun in isdn_tty.c 2006-05-21 12:59:18 -07:00
leds [PATCH] LED: Fix sysfs store function error handling 2006-05-15 11:20:56 -07:00
macintosh [PATCH] powerpc: fix oops in alsa powermac driver 2006-04-21 22:34:26 +10:00
mca
md [PATCH] md: Fix badness in sysfs_notify caused by md_new_event 2006-05-31 16:27:11 -07:00
media [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
message Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-06-10 11:03:51 -07:00
mfd
misc [PATCH] Make most file operations structs in fs/ const 2006-03-28 09:16:06 -08:00
mmc [MMC] Prevent au1xmmc.c breakage on non-Au1200 Alchemy 2006-06-04 17:40:58 +01:00
mtd [PATCH] Remove blkmtd 2006-04-11 06:18:43 -07:00
net [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
nubus
oprofile [PATCH] mark f_ops const in the inode 2006-03-28 09:16:05 -08:00
parisc [PARISC] Document that we tolerate "Relaxed Ordering" 2006-04-21 22:20:33 +00:00
parport [PATCH] parport_pc: fix section mismatch warnings (v2) 2006-04-19 09:13:52 -07:00
pci [PATCH] PCI: reverse pci config space restore order 2006-06-11 14:02:27 -07:00
pcmcia [PATCH] pcmcia: missing pcmcia_get_socket() result check 2006-06-02 00:56:17 +02:00
pnp [PATCH] pnp: fix two messages in manager.c 2006-04-19 09:13:52 -07:00
rapidio
rtc [PATCH] m48t86: ia64 build fix 2006-06-05 12:29:17 -07:00
s390 [PATCH] s390: cio non-unique path group ids 2006-06-05 12:29:16 -07:00
sbus [SPARC]: Fix warning on prom_getproperty in openprom.c 2006-05-12 12:53:59 -07:00
scsi [PATCH] sata_mv: grab host lock inside eng_timeout 2006-06-11 23:03:18 -04:00
serial [PATCH] ppc32 CPM_UART: various fixes for pq2 uart users 2006-05-26 22:38:56 +10:00
sh
sn [PATCH] Altix: correct ioc4 port order 2006-05-03 20:05:41 -07:00
spi [PATCH] s3c24xx: fix spi driver with CONFIG_PM 2006-05-26 11:55:46 -07:00
tc
telephony [PATCH] pcmcia: use bitfield instead of p_state and state 2006-03-31 17:26:33 +02:00
usb [ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget 2006-06-08 22:44:07 +01:00
video [PATCH] fbcon: fix limited scroll in SCROLL_PAN_REDRAW mode 2006-06-08 15:12:21 -07:00
w1
zorro
Kconfig [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00
Makefile [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00