android_kernel_samsung_msm8976/drivers/net
Satyam Sharma 0bcc181618 [NET] netconsole: Support dynamic reconfiguration using configfs
Based upon initial work by Keiichi Kii <k-keiichi@bx.jp.nec.com>.

This patch introduces support for dynamic reconfiguration (adding, removing
and/or modifying parameters of netconsole targets at runtime) using a
userspace interface exported via configfs.  Documentation is also updated
accordingly.

Issues and brief design overview:

(1) Kernel-initiated creation / destruction of kernel objects is not
    possible with configfs -- the lifetimes of the "config items" is managed
    exclusively from userspace.  But netconsole must support boot/module
    params too, and these are parsed in kernel and hence netpolls must be
    setup from the kernel.  Joel Becker suggested to separately manage the
    lifetimes of the two kinds of netconsole_target objects -- those created
    via configfs mkdir(2) from userspace and those specified from the
    boot/module option string.  This adds complexity and some redundancy here
    and also means that boot/module param-created targets are not exposed
    through the configfs namespace (and hence cannot be updated / destroyed
    dynamically).  However, this saves us from locking / refcounting
    complexities that would need to be introduced in configfs to support
    kernel-initiated item creation / destroy there.

(2) In configfs, item creation takes place in the call chain of the
    mkdir(2) syscall in the driver subsystem.  If we used an ioctl(2) to
    create / destroy objects from userspace, the special userspace program is
    able to fill out the structure to be passed into the ioctl and hence
    specify attributes such as local interface that are required at the time
    we set up the netpoll.  For configfs, this information is not available at
    the time of mkdir(2).  So, we keep all newly-created targets (via
    configfs) disabled by default.  The user is expected to set various
    attributes appropriately (including the local network interface if
    required) and then write(2) "1" to the "enabled" attribute.  Thus,
    netpoll_setup() is then called on the set parameters in the context of
    _this_ write(2) on the "enabled" attribute itself.  This design enables
    the user to reconfigure existing netconsole targets at runtime to be
    attached to newly-come-up interfaces that may not have existed when
    netconsole was loaded or when the targets were actually created.  All this
    effectively enables us to get rid of custom ioctls.

(3) Ultra-paranoid configfs attribute show() and store() operations, with
    sanity and input range checking, using only safe string primitives, and
    compliant with the recommendations in Documentation/filesystems/sysfs.txt.

(4) A new function netpoll_print_options() is created in the netpoll API,
    that just prints out the configured parameters for a netpoll structure.
    netpoll_parse_options() is modified to use that and it is also exported to
    be used from netconsole.

Signed-off-by: Satyam Sharma <satyam@infradead.org>
Acked-by: Keiichi Kii <k-keiichi@bx.jp.nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-10 16:48:06 -07:00
..
appletalk
arcnet
arm [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
atl1 atl1: disable broken 64-bit DMA 2007-09-12 23:54:50 -04:00
bonding [NET]: Share correct feature code between bridging and bonding 2007-08-13 22:52:14 -07:00
chelsio [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
cris
cxgb3 [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
e1000 [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ehea [EHEA]: Use LRO. 2007-10-10 16:47:47 -07:00
fec_8xx [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
fs_enet [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
hamradio bpqether: fix rcu usage 2007-07-31 15:39:40 -07:00
ibm_emac
irda [IRDA]: Do not do pointless kmalloc return value cast in KingSun driver 2007-08-26 18:35:44 -07:00
ixgb [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ixp2000 [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
mlx4 mlx4_core: Wait 1 second after reset before accessing device 2007-08-13 08:47:44 -07:00
myri10ge [MYRI10GE]: Use LRO. 2007-10-10 16:47:47 -07:00
netxen [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
pcmcia Revert "drivers/net/pcmcia/3c589_cs: fix port configuration switcheroo" 2007-09-25 00:11:34 -04:00
phy phy: export phy_mii_ioctl 2007-09-20 02:35:50 -04:00
sk98lin sk98lin: resurrect driver 2007-09-15 19:35:14 -04:00
skfp Typo fixes errror -> error 2007-07-31 15:39:42 -07:00
tokenring drivers/*: mark variables with uninitialized_var() 2007-07-17 16:23:19 -04:00
tulip [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
usb dm9601: Fix receive MTU 2007-10-02 12:59:10 -04:00
wan [WAN] drivers/net/wan/hdlc_fr.c: kmalloc + memset conversion to kzalloc 2007-08-13 22:52:11 -07:00
wireless [MAC80211]: improved short preamble handling 2007-10-10 16:47:38 -07:00
3c59x.c 3c59x: fix duplex configuration 2007-08-14 01:38:37 -04:00
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c
3c515.c
3c523.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
3c523.h
3c527.c
3c527.h
7990.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
7990.h
8139cp.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
8139too.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
8390.c
8390.h AX88796 network driver 2007-07-10 12:41:08 -04:00
82596.c netdev: i82596 Ethernet needs <asm/cacheflush.h> 2007-07-24 16:28:42 -04:00
a2065.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
a2065.h
ac3200.c
acenic.c drivers/net/acenic.c: fix check-after-use 2007-07-24 16:28:41 -04:00
acenic.h
acenic_firmware.h
amd8111e.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
amd8111e.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
apne.c
ariadne.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
au1000_eth.h
ax88796.c ax88796 printk fixes 2007-08-14 01:34:53 -04:00
b44.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
b44.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
bfin_mac.c Blackfin Ethernet MAC driver: fix bug Report returned -ENOMEM upwards (in case L1/uncached memory alloc fails) 2007-07-25 14:09:54 +08:00
bfin_mac.h Blackfin ethernet driver: on chip ethernet MAC controller driver 2007-07-18 18:38:25 -04:00
bmac.c
bmac.h
bnx2.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
bnx2.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
bnx2_fw.h
bnx2_fw2.h
bsd_comp.c [NET]: Avoid pointless allocation casts in BSD compression module 2007-08-26 18:35:45 -07:00
cassini.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
cassini.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
cs89x0.c
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c defxx: Use __maybe_unused rather than a local hack 2007-07-24 16:28:41 -04:00
defxx.h
depca.c
depca.h
dgrs.c
dgrs.h
dgrs_asstruct.h
dgrs_bcomm.h
dgrs_es4h.h
dgrs_ether.h
dgrs_firmware.c
dgrs_i82596.h
dgrs_plx9060.h
dl2k.c Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-07-12 13:40:57 -07:00
dl2k.h PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
dm9000.c DM9000: fix interface hang under load 2007-08-25 02:31:04 -04:00
dm9000.h
dummy.c [RTNETLINK]: rtnl_link: allow specifying initial device address 2007-07-11 19:45:36 -07:00
e100.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
e2100.c
eepro.c
eepro100.c [netdrvr] eepro100, ne2k-pci: abort resume if pci_enable_device() fails 2007-07-17 16:17:59 -04:00
eexpress.c
eexpress.h
epic100.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
eql.c [EQL]: sparse warning fix 2007-08-26 18:35:38 -07:00
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
fec.c setup and detect 2nd phy on MCF5275 in FEC driver 2007-07-30 10:52:09 -07:00
fec.h
forcedeth.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
gianfar.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
gianfar.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
gianfar_ethtool.c
gianfar_mii.c gfar: Fix modpost warning 2007-07-30 15:48:16 -04:00
gianfar_mii.h gfar: Fix modpost warning 2007-07-30 15:48:16 -04:00
gianfar_sysfs.c
hamachi.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
hp-plus.c
hp.c
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ibmveth.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ifb.c [RTNETLINK]: rtnl_link: allow specifying initial device address 2007-07-11 19:45:36 -07:00
ioc3-eth.c IOC3: Program UART predividers. 2007-08-31 06:52:57 -04:00
isa-skeleton.c
iseries_veth.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
jazzsonic.c
Kconfig [NET] netconsole: Support dynamic reconfiguration using configfs 2007-10-10 16:48:06 -07:00
lance.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
lasi_82596.c Extract chip specific code out of lasi_82596.c 2007-07-08 22:16:45 -04:00
lguest_net.c lguest: documentation VII: FIXMEs 2007-07-26 11:35:17 -07:00
lib8390.c lib8390: comment on locking by Alan Cox 2007-07-30 15:47:20 -04:00
lib82596.c Extract chip specific code out of lasi_82596.c 2007-07-08 22:16:45 -04:00
LICENSE.SRC
lne390.c
loopback.c [NET] loopback: Panic if registration fails 2007-07-31 02:28:14 -07:00
lp486e.c
mac89x0.c mac89x0: missing __init 2007-07-20 08:24:49 -07:00
mac8390.c
macb.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
macb.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
mace.c
mace.h
macmace.c macmace: use "unsigned long flags;" 2007-07-10 12:41:18 -04:00
macsonic.c
macvlan.c [NET]: Add macvlan driver 2007-07-14 18:55:06 -07:00
Makefile [NET]: Virtual ethernet device driver. 2007-10-10 16:47:46 -07:00
meth.c Don't use GFP_DMA for zone allocation. 2007-08-25 02:30:59 -04:00
meth.h
mii.c
mipsnet.c [MIPS] Don't drag a platform specific header into generic arch code. 2007-06-20 22:27:10 +01:00
mipsnet.h
mv643xx_eth.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
mv643xx_eth.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c [NET]: ethtool_perm_addr only has one implementation 2007-07-31 14:00:29 -07:00
ne3210.c
netconsole.c [NET] netconsole: Support dynamic reconfiguration using configfs 2007-10-10 16:48:06 -07:00
netx-eth.c
ni52.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
ni52.h
ni65.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
ni65.h
ni5010.c NI5010: Handle multicast frames. 2007-07-18 18:29:38 -04:00
ni5010.h
ns83820.c NS83820: Handle multicast frames. 2007-07-18 18:29:37 -04:00
pasemi_mac.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
pasemi_mac.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
pci-skeleton.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
pcnet32.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
plip.c
ppp_async.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
ppp_deflate.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
ppp_generic.c [PPP] generic: Fix receive path data clobbering & non-linear handling 2007-09-16 16:22:13 -07:00
ppp_mppe.c [PPP_MPPE]: Don't put InterimKey on the stack 2007-09-25 23:05:39 -07:00
ppp_mppe.h
ppp_synctty.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
pppoe.c [PPP] pppoe: Fix double-free on skb after transmit failure 2007-09-20 12:14:16 -07:00
pppol2tp.c [PPP] L2TP: Fix skb handling in pppol2tp_xmit 2007-09-20 12:14:18 -07:00
pppox.c [PPPoX/E]: return ENOTTY on unknown ioctl requests 2007-07-31 02:28:22 -07:00
ps3_gelic_net.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ps3_gelic_net.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
qla3xxx.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
qla3xxx.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
r8169.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
rionet.c
rrunner.c rrunner.c:rr_init() must be __devinit 2007-07-10 12:24:42 -04:00
rrunner.h
s2io-regs.h S2io: Mask spurious interrupts 2007-07-30 15:56:04 -04:00
s2io.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
s2io.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
saa9730.c SAA9730: Handle multicast frames. 2007-07-18 18:29:38 -04:00
saa9730.h
sb1000.c
sb1250-mac.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sc92031.c [NET]: ethtool_perm_addr only has one implementation 2007-07-31 14:00:29 -07:00
seeq8005.c
seeq8005.h
sgiseeq.c sgiseeq: Fix return type of sgiseeq_remove 2007-08-25 02:31:13 -04:00
sgiseeq.h
shaper.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
sis190.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sis900.c sis900_mii_probe() must be __devinit 2007-07-10 12:24:42 -04:00
sis900.h
skge.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
skge.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sky2.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sky2.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
slhc.c
slip.c [SLIP]: trivial sparse warning fix 2007-08-26 18:35:39 -07:00
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c
smc91x.h net: smc91x: Build fixes for general sh boards. 2007-08-07 17:18:31 -04:00
smc911x.c
smc911x.h
smc9194.c
smc9194.h
sni_82596.c Ethernet driver for EISA only SNI RM200/RM400 machines 2007-07-08 22:16:46 -04:00
sonic.c
sonic.h
Space.c more ACSI removal 2007-07-16 15:02:47 +02:00
spider_net.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
spider_net.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
spider_net_ethtool.c spidernet: checksum and ethtool 2007-06-20 19:09:33 -04:00
starfire.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
starfire_firmware.h
starfire_firmware.pl
stnic.c
sun3_82586.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
sun3_82586.h
sun3lance.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
sunbmac.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
sunbmac.h
sundance.c [NET]: ethtool_perm_addr only has one implementation 2007-07-31 14:00:29 -07:00
sungem.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sungem.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
sungem_phy.c
sungem_phy.h
sunhme.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
sunhme.h
sunlance.c [SUNLANCE]: Fix sparc32 crashes by using of_*() interfaces. 2007-07-30 18:23:39 -07:00
sunqe.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
sunqe.h
sunvnet.c [NET]: ethtool_perm_addr only has one implementation 2007-07-31 14:00:29 -07:00
sunvnet.h [SPARC64]: Add proper multicast support to VNET driver. 2007-07-20 17:14:30 -07:00
tc35815.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
tg3.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
tg3.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
tlan.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
tlan.h
tsi108_eth.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
tsi108_eth.h
tun.c [NET]: Allow group ownership of TUN/TAP devices. 2007-07-10 22:16:42 -07:00
typhoon-firmware.h
typhoon.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
typhoon.h
ucc_geth.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ucc_geth.h [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
ucc_geth_ethtool.c ucc_geth: remove get_perm_addr from ucc_geth_ethtool.c 2007-08-03 16:08:15 +08:00
ucc_geth_mii.c ucc_geth: fix section mismatch 2007-08-03 16:07:58 +08:00
ucc_geth_mii.h
veth.c [NET]: Virtual ethernet device driver. 2007-10-10 16:47:46 -07:00
via-rhine.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
via-velocity.c in-string typos of "error" 2007-07-31 15:39:40 -07:00
via-velocity.h
wd.c
xen-netfront.c [NET]: Make NAPI polling independent of struct net_device objects. 2007-10-10 16:47:45 -07:00
yellowfin.c [NET]: Kill eth_copy_and_sum(). 2007-07-10 22:08:12 -07:00
znet.c
zorro8390.c