Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
910b4606
Commit
910b4606
authored
Jun 08, 2004
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Plain Diff
Merge kroah.com:/home/greg/linux/BK/bleed-2.6
into kroah.com:/home/greg/linux/BK/usb-2.6
parents
123615f1
056d7d3a
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
221 additions
and
112 deletions
+221
-112
Makefile
Makefile
+2
-1
arch/i386/defconfig
arch/i386/defconfig
+50
-43
arch/ppc64/kernel/smp.c
arch/ppc64/kernel/smp.c
+3
-4
arch/ppc64/kernel/traps.c
arch/ppc64/kernel/traps.c
+13
-3
drivers/media/dvb/frontends/tda1004x.c
drivers/media/dvb/frontends/tda1004x.c
+1
-0
drivers/net/3c527.c
drivers/net/3c527.c
+1
-0
drivers/net/at1700.c
drivers/net/at1700.c
+9
-4
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+2
-1
drivers/net/epic100.c
drivers/net/epic100.c
+28
-2
drivers/net/tulip/interrupt.c
drivers/net/tulip/interrupt.c
+4
-0
include/asm-ppc64/current.h
include/asm-ppc64/current.h
+1
-3
include/asm-ppc64/paca.h
include/asm-ppc64/paca.h
+3
-1
include/linux/ethtool.h
include/linux/ethtool.h
+2
-0
include/linux/netfilter_arp.h
include/linux/netfilter_arp.h
+0
-1
include/linux/tcp.h
include/linux/tcp.h
+6
-3
lib/rwsem.c
lib/rwsem.c
+20
-15
net/core/ethtool.c
net/core/ethtool.c
+71
-31
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arp_tables.c
+2
-0
net/ipv4/tcp_diag.c
net/ipv4/tcp_diag.c
+3
-0
No files found.
Makefile
View file @
910b4606
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
7
EXTRAVERSION
=
-rc
2
EXTRAVERSION
=
-rc
3
NAME
=
Zonked Quokka
# *DOCUMENTATION*
...
...
@@ -1062,6 +1062,7 @@ versioncheck:
buildcheck
:
$(PERL)
scripts/reference_discarded.pl
$(PERL)
scripts/reference_init.pl
endif
#ifeq ($(config-targets),1)
endif
#ifeq ($(mixed-targets),1)
...
...
arch/i386/defconfig
View file @
910b4606
...
...
@@ -18,8 +18,11 @@ CONFIG_STANDALONE=y
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_HOTPLUG=y
# CONFIG_IKCONFIG is not set
...
...
@@ -30,6 +33,7 @@ CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
#
...
...
@@ -88,6 +92,7 @@ CONFIG_X86_USE_PPRO_CHECKSUM=y
# CONFIG_HPET_EMULATE_RTC is not set
CONFIG_SMP=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_PREEMPT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
...
...
@@ -200,7 +205,7 @@ CONFIG_BINFMT_MISC=y
#
# Generic Driver Options
#
# CONFIG_FW_LOADER is not set
CONFIG_FW_LOADER=m
#
# Memory Technology Devices (MTD)
...
...
@@ -259,7 +264,6 @@ CONFIG_BLK_DEV_IDE=y
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_IDEDISK_STROKE is not set
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
...
...
@@ -307,6 +311,7 @@ CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDE_ARM is not set
# CONFIG_IDE_CHIPSETS is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
...
...
@@ -332,7 +337,6 @@ CONFIG_CHR_DEV_SG=y
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
CONFIG_SCSI_REPORT_LUNS=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
...
...
@@ -354,6 +358,7 @@ CONFIG_SCSI_REPORT_LUNS=y
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
CONFIG_SCSI_DPT_I2O=m
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_MEGARAID is not set
...
...
@@ -361,7 +366,9 @@ CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_SVW is not set
CONFIG_SCSI_ATA_PIIX=y
# CONFIG_SCSI_SATA_PROMISE is not set
CONFIG_SCSI_SATA_SX4=m
# CONFIG_SCSI_SATA_SIL is not set
CONFIG_SCSI_SATA_SIS=m
# CONFIG_SCSI_SATA_VIA is not set
# CONFIG_SCSI_SATA_VITESSE is not set
# CONFIG_SCSI_BUSLOGIC is not set
...
...
@@ -380,6 +387,9 @@ CONFIG_SCSI_ATA_PIIX=y
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
CONFIG_SCSI_IPR=m
# CONFIG_SCSI_IPR_TRACE is not set
# CONFIG_SCSI_IPR_DUMP is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
...
...
@@ -484,8 +494,6 @@ CONFIG_IP_MULTICAST=y
#
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
...
...
@@ -539,13 +547,17 @@ CONFIG_IP_NF_TARGET_TCPMSS=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y
CONFIG_IP_NF_TARGET_NOTRACK=m
CONFIG_IP_NF_RAW=m
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
...
...
@@ -566,18 +578,23 @@ CONFIG_IP_NF_ARP_MANGLE=y
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_NET_SB1000 is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
#
# Ethernet (10 or 100Mbit)
#
...
...
@@ -619,7 +636,6 @@ CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_8139_RXBUF_IDX=2
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
...
...
@@ -637,7 +653,6 @@ CONFIG_8139_RXBUF_IDX=2
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
...
...
@@ -645,47 +660,31 @@ CONFIG_8139_RXBUF_IDX=2
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
CONFIG_S2IO=m
# CONFIG_S2IO_NAPI is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
# Wireless LAN (non-hamradio)
#
# CONFIG_
IRDA
is not set
# CONFIG_
NET_RADIO
is not set
#
#
Bluetooth support
#
Wan interfaces
#
# CONFIG_BT is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# ISDN subsystem
...
...
@@ -803,6 +802,7 @@ CONFIG_AGP=y
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=y
CONFIG_AGP_INTEL_MCH=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
...
...
@@ -978,6 +978,7 @@ CONFIG_USB_DEVICEFS=y
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=y
...
...
@@ -1012,6 +1013,7 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
CONFIG_USB_EGALAX=m
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
...
...
@@ -1061,6 +1063,8 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
CONFIG_USB_CYTHERM=m
CONFIG_USB_PHIDGETSERVO=m
# CONFIG_USB_TEST is not set
#
...
...
@@ -1110,6 +1114,7 @@ CONFIG_VFAT_FS=y
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
...
...
@@ -1152,7 +1157,6 @@ CONFIG_SUNRPC=y
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
# CONFIG_AFS_FS is not set
#
...
...
@@ -1217,6 +1221,7 @@ CONFIG_OPROFILE=y
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_FRAME_POINTER is not set
CONFIG_4KSTACKS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
...
...
@@ -1234,8 +1239,10 @@ CONFIG_X86_MPPARSE=y
# Library routines
#
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_X86_STD_RESOURCES=y
CONFIG_PC=y
arch/ppc64/kernel/smp.c
View file @
910b4606
...
...
@@ -390,8 +390,7 @@ static inline int __devinit smp_startup_cpu(unsigned int lcpu)
}
/* Fixup atomic count: it exited inside IRQ handler. */
((
struct
task_struct
*
)
paca
[
lcpu
].
xCurrent
)
->
thread_info
->
preempt_count
=
0
;
paca
[
lcpu
].
xCurrent
->
thread_info
->
preempt_count
=
0
;
/* Fixup SLB round-robin so next segment (kernel) goes in segment 0 */
paca
[
lcpu
].
xStab_data
.
next_round_robin
=
0
;
...
...
@@ -817,7 +816,7 @@ static void __init smp_create_idle(unsigned int cpu)
init_idle
(
p
,
cpu
);
unhash_process
(
p
);
paca
[
cpu
].
xCurrent
=
(
u64
)
p
;
paca
[
cpu
].
xCurrent
=
p
;
current_set
[
cpu
]
=
p
->
thread_info
;
}
...
...
@@ -869,7 +868,7 @@ void __devinit smp_prepare_boot_cpu(void)
/* cpu_possible is set up in prom.c */
cpu_set
(
boot_cpuid
,
cpu_online_map
);
paca
[
boot_cpuid
].
xCurrent
=
(
u64
)
current
;
paca
[
boot_cpuid
].
xCurrent
=
current
;
current_set
[
boot_cpuid
]
=
current
->
thread_info
;
}
...
...
arch/ppc64/kernel/traps.c
View file @
910b4606
...
...
@@ -466,6 +466,18 @@ SingleStepException(struct pt_regs *regs)
_exception
(
SIGTRAP
,
&
info
,
regs
);
}
/*
* After we have successfully emulated an instruction, we have to
* check if the instruction was being single-stepped, and if so,
* pretend we got a single-step exception. This was pointed out
* by Kumar Gala. -- paulus
*/
static
inline
void
emulate_single_step
(
struct
pt_regs
*
regs
)
{
if
(
regs
->
msr
&
MSR_SE
)
SingleStepException
(
regs
);
}
static
void
dummy_perf
(
struct
pt_regs
*
regs
)
{
}
...
...
@@ -487,10 +499,8 @@ AlignmentException(struct pt_regs *regs)
fixed
=
fix_alignment
(
regs
);
if
(
fixed
==
1
)
{
if
(
!
user_mode
(
regs
))
PPCDBG
(
PPCDBG_ALIGNFIXUP
,
"fix alignment at %lx
\n
"
,
regs
->
nip
);
regs
->
nip
+=
4
;
/* skip over emulated instruction */
emulate_single_step
(
regs
);
return
;
}
...
...
drivers/media/dvb/frontends/tda1004x.c
View file @
910b4606
...
...
@@ -190,6 +190,7 @@ static int tda10045h_fwinfo_count = sizeof(tda10045h_fwinfo) / sizeof(struct fwi
static
struct
fwinfo
tda10046h_fwinfo
[]
=
{
{.
file_size
=
286720
,.
fw_offset
=
0x3c4f9
,.
fw_size
=
24479
}
};
static
int
tda10046h_fwinfo_count
=
sizeof
(
tda10046h_fwinfo
)
/
sizeof
(
struct
fwinfo
);
static
int
errno
;
static
int
tda1004x_write_byte
(
struct
dvb_i2c_bus
*
i2c
,
struct
tda1004x_state
*
tda_state
,
int
reg
,
int
data
)
...
...
drivers/net/3c527.c
View file @
910b4606
...
...
@@ -287,6 +287,7 @@ struct net_device *__init mc32_probe(int unit)
}
}
free_netdev
(
dev
);
return
ERR_PTR
(
-
ENODEV
);
}
...
...
drivers/net/at1700.c
View file @
910b4606
...
...
@@ -242,7 +242,7 @@ static void cleanup_card(struct net_device *dev)
{
#ifdef CONFIG_MCA
struct
net_local
*
lp
=
netdev_priv
(
dev
);
if
(
lp
->
mca_slot
)
if
(
lp
->
mca_slot
>=
0
)
mca_mark_as_unused
(
lp
->
mca_slot
);
#endif
free_irq
(
dev
->
irq
,
NULL
);
...
...
@@ -444,11 +444,11 @@ static int __init at1700_probe1(struct net_device *dev, int ioaddr)
break
;
}
if
(
i
==
8
)
{
goto
err_
out
;
goto
err_
mca
;
}
}
else
{
if
(
fmv18x_probe_list
[
inb
(
ioaddr
+
IOCONFIG
)
&
0x07
]
!=
ioaddr
)
goto
err_
out
;
goto
err_
mca
;
irq
=
fmv_irqmap
[(
inb
(
ioaddr
+
IOCONFIG
)
>>
6
)
&
0x03
];
}
}
...
...
@@ -546,11 +546,16 @@ static int __init at1700_probe1(struct net_device *dev, int ioaddr)
if
(
ret
)
{
printk
(
" AT1700 at %#3x is unusable due to a conflict on"
"IRQ %d.
\n
"
,
ioaddr
,
irq
);
goto
err_
out
;
goto
err_
mca
;
}
return
0
;
err_mca:
#ifdef CONFIG_MCA
if
(
slot
>=
0
)
mca_mark_as_unused
(
slot
);
#endif
err_out:
#ifndef CONFIG_X86_PC9800
release_region
(
ioaddr
,
AT1700_IO_EXTENT
);
...
...
drivers/net/e1000/e1000_main.c
View file @
910b4606
...
...
@@ -52,7 +52,7 @@
char
e1000_driver_name
[]
=
"e1000"
;
char
e1000_driver_string
[]
=
"Intel(R) PRO/1000 Network Driver"
;
char
e1000_driver_version
[]
=
"5.2.52-k
2
"
;
char
e1000_driver_version
[]
=
"5.2.52-k
4
"
;
char
e1000_copyright
[]
=
"Copyright (c) 1999-2004 Intel Corporation."
;
/* e1000_pci_tbl - PCI Device ID Table
...
...
@@ -2143,6 +2143,7 @@ e1000_clean(struct net_device *netdev, int *budget)
if
(
work_done
<
work_to_do
||
!
netif_running
(
netdev
))
{
netif_rx_complete
(
netdev
);
e1000_irq_enable
(
adapter
);
return
0
;
}
return
(
work_done
>=
work_to_do
);
...
...
drivers/net/epic100.c
View file @
910b4606
...
...
@@ -67,11 +67,14 @@
* fix spurious bad initializations
* pound phy a la SMSC's app note on the subject
AC1.1.14ac
* fix power up/down for ethtool that broke in 1.11
*/
#define DRV_NAME "epic100"
#define DRV_VERSION "1.11+LK1.1.14"
#define DRV_RELDATE "
Aug 4, 2002
"
#define DRV_VERSION "1.11+LK1.1.14
+AC1.1.14
"
#define DRV_RELDATE "
June 2, 2004
"
/* The user-configurable values.
These may be modified when a driver module is loaded.*/
...
...
@@ -1424,6 +1427,27 @@ static void netdev_set_msglevel(struct net_device *dev, u32 value)
debug
=
value
;
}
static
int
ethtool_begin
(
struct
net_device
*
dev
)
{
unsigned
long
ioaddr
=
dev
->
base_addr
;
/* power-up, if interface is down */
if
(
!
netif_running
(
dev
))
{
outl
(
0x0200
,
ioaddr
+
GENCTL
);
outl
((
inl
(
ioaddr
+
NVCTL
)
&
~
0x003C
)
|
0x4800
,
ioaddr
+
NVCTL
);
}
return
0
;
}
static
void
ethtool_complete
(
struct
net_device
*
dev
)
{
unsigned
long
ioaddr
=
dev
->
base_addr
;
/* power-down, if interface is down */
if
(
!
netif_running
(
dev
))
{
outl
(
0x0008
,
ioaddr
+
GENCTL
);
outl
((
inl
(
ioaddr
+
NVCTL
)
&
~
0x483C
)
|
0x0000
,
ioaddr
+
NVCTL
);
}
}
static
struct
ethtool_ops
netdev_ethtool_ops
=
{
.
get_drvinfo
=
netdev_get_drvinfo
,
.
get_settings
=
netdev_get_settings
,
...
...
@@ -1434,6 +1458,8 @@ static struct ethtool_ops netdev_ethtool_ops = {
.
set_msglevel
=
netdev_set_msglevel
,
.
get_sg
=
ethtool_op_get_sg
,
.
get_tx_csum
=
ethtool_op_get_tx_csum
,
.
begin
=
ethtool_begin
,
.
complete
=
ethtool_complete
};
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
...
...
drivers/net/tulip/interrupt.c
View file @
910b4606
...
...
@@ -133,6 +133,10 @@ int tulip_poll(struct net_device *dev, int *budget)
tp
->
rx_ring
[
entry
].
status
);
do
{
if
(
inl
(
dev
->
base_addr
+
CSR5
)
==
0xffffffff
)
{
printk
(
KERN_DEBUG
" In tulip_poll(), hardware disappeared.
\n
"
);
break
;
}
/* Acknowledge current RX interrupt sources. */
outl
((
RxIntr
|
RxNoBuf
),
dev
->
base_addr
+
CSR5
);
...
...
include/asm-ppc64/current.h
View file @
910b4606
...
...
@@ -8,13 +8,11 @@
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
* Use r13 for current since the ppc64 ABI reserves it - Anton
*/
#include <asm/thread_info.h>
#define get_current() (
(struct task_struct *)(get_paca()->xCurrent)
)
#define get_current() (
get_paca()->xCurrent
)
#define current get_current()
#endif
/* !(_PPC64_CURRENT_H) */
include/asm-ppc64/paca.h
View file @
910b4606
...
...
@@ -37,6 +37,8 @@ extern struct paca_struct paca[];
register
struct
paca_struct
*
local_paca
asm
(
"r13"
);
#define get_paca() local_paca
struct
task_struct
;
/*============================================================================
* Name_______: paca
*
...
...
@@ -59,7 +61,7 @@ struct paca_struct {
*/
struct
ItLpPaca
*
xLpPacaPtr
;
/* Pointer to LpPaca for PLIC 0x00 */
struct
ItLpRegSave
*
xLpRegSavePtr
;
/* Pointer to LpRegSave for PLIC 0x08 */
u64
xCurrent
;
/* Pointer to current 0x10 */
struct
task_struct
*
xCurrent
;
/* Pointer to current 0x10 */
/* Note: the spinlock functions in arch/ppc64/lib/locks.c load lock_token and
xPacaIndex with a single lwz instruction, using the constant offset 24.
If you move either field, fix the spinlocks and rwlocks. */
...
...
include/linux/ethtool.h
View file @
910b4606
...
...
@@ -351,6 +351,8 @@ struct ethtool_ops {
int
(
*
phys_id
)(
struct
net_device
*
,
u32
);
int
(
*
get_stats_count
)(
struct
net_device
*
);
void
(
*
get_ethtool_stats
)(
struct
net_device
*
,
struct
ethtool_stats
*
,
u64
*
);
int
(
*
begin
)(
struct
net_device
*
);
void
(
*
complete
)(
struct
net_device
*
);
};
/* CMDs currently supported */
...
...
include/linux/netfilter_arp.h
View file @
910b4606
...
...
@@ -17,5 +17,4 @@
#define NF_ARP_FORWARD 2
#define NF_ARP_NUMHOOKS 3
static
DECLARE_MUTEX
(
arpt_mutex
);
#endif
/* __LINUX_ARP_NETFILTER_H */
include/linux/tcp.h
View file @
910b4606
...
...
@@ -183,6 +183,9 @@ struct tcp_info
__u32
tcpi_snd_cwnd
;
__u32
tcpi_advmss
;
__u32
tcpi_reordering
;
__u32
tcpi_rcv_rtt
;
__u32
tcpi_rcv_space
;
};
#ifdef __KERNEL__
...
...
@@ -351,11 +354,11 @@ struct tcp_opt {
__u8
urg_mode
;
/* In urgent mode */
__u32
snd_up
;
/* Urgent pointer */
/* The syn_wait_lock is necessary only to avoid
tcp_get_info
having
/* The syn_wait_lock is necessary only to avoid
proc interface
having
* to grab the main lock sock while browsing the listening hash
* (otherwise it's deadlock prone).
* This lock is acquired in read mode only from
tcp_get_info() and
* it's acquired in write mode _only_ from code that is actively
* This lock is acquired in read mode only from
listening_get_next()
*
and
it's acquired in write mode _only_ from code that is actively
* changing the syn_wait_queue. All readers that are holding
* the master sock lock don't need to grab this lock in read mode
* too as the syn_wait_queue writes are always protected from
...
...
lib/rwsem.c
View file @
910b4606
...
...
@@ -29,15 +29,15 @@ void rwsemtrace(struct rw_semaphore *sem, const char *str)
/*
* handle the lock being released whilst there are processes blocked on it that can now run
* - if we come here, then:
* - the 'active part' of the count (&0x0000ffff)
reached zero but has been re-incremented
* - if we come here
from up_xxxx()
, then:
* - the 'active part' of the count (&0x0000ffff)
had reached zero (but may have changed)
* - the 'waiting part' of the count (&0xffff0000) is negative (and will still be so)
* - there must be someone on the queue
* - the spinlock must be held by the caller
* - woken process blocks are discarded from the list after having task zeroed
* - writers are only woken if
wakewrite is non-zero
* - writers are only woken if
downgrading is false
*/
static
inline
struct
rw_semaphore
*
__rwsem_do_wake
(
struct
rw_semaphore
*
sem
,
int
wakewrite
)
static
inline
struct
rw_semaphore
*
__rwsem_do_wake
(
struct
rw_semaphore
*
sem
,
int
downgrading
)
{
struct
rwsem_waiter
*
waiter
;
struct
task_struct
*
tsk
;
...
...
@@ -46,10 +46,12 @@ static inline struct rw_semaphore *__rwsem_do_wake(struct rw_semaphore *sem, int
rwsemtrace
(
sem
,
"Entering __rwsem_do_wake"
);
if
(
!
wakewrite
)
if
(
downgrading
)
goto
dont_wake_writers
;
/* only wake someone up if we can transition the active part of the count from 0 -> 1 */
/* if we came through an up_xxxx() call, we only only wake someone up
* if we can transition the active part of the count from 0 -> 1
*/
try_again:
oldcount
=
rwsem_atomic_update
(
RWSEM_ACTIVE_BIAS
,
sem
)
-
RWSEM_ACTIVE_BIAS
;
if
(
oldcount
&
RWSEM_ACTIVE_MASK
)
...
...
@@ -78,9 +80,10 @@ static inline struct rw_semaphore *__rwsem_do_wake(struct rw_semaphore *sem, int
if
(
waiter
->
flags
&
RWSEM_WAITING_FOR_WRITE
)
goto
out
;
/* grant an infinite number of read locks to the readers at the front of the queue
* - note we increment the 'active part' of the count by the number of readers (less one
* for the activity decrement we've already done) before waking any processes up
/* grant an infinite number of read locks to the readers at the front
* of the queue
* - note we increment the 'active part' of the count by the number of
* readers before waking any processes up
*/
readers_only:
woken
=
0
;
...
...
@@ -95,8 +98,10 @@ static inline struct rw_semaphore *__rwsem_do_wake(struct rw_semaphore *sem, int
}
while
(
waiter
->
flags
&
RWSEM_WAITING_FOR_READ
);
loop
=
woken
;
woken
*=
RWSEM_ACTIVE_BIAS
-
RWSEM_WAITING_BIAS
;
woken
-=
RWSEM_ACTIVE_BIAS
;
woken
*=
RWSEM_ACTIVE_BIAS
-
RWSEM_WAITING_BIAS
;
if
(
!
downgrading
)
woken
-=
RWSEM_ACTIVE_BIAS
;
/* we'd already done one increment
* earlier */
rwsem_atomic_add
(
woken
,
sem
);
next
=
sem
->
wait_list
.
next
;
...
...
@@ -150,7 +155,7 @@ static inline struct rw_semaphore *rwsem_down_failed_common(struct rw_semaphore
* - it might even be this process, since the waker takes a more active part
*/
if
(
!
(
count
&
RWSEM_ACTIVE_MASK
))
sem
=
__rwsem_do_wake
(
sem
,
1
);
sem
=
__rwsem_do_wake
(
sem
,
0
);
spin_unlock
(
&
sem
->
wait_lock
);
...
...
@@ -201,7 +206,7 @@ struct rw_semaphore fastcall __sched *rwsem_down_write_failed(struct rw_semaphor
/*
* handle waking up a waiter on the semaphore
* - up_read has decremented the active part of the count if we come here
* - up_read
/up_write
has decremented the active part of the count if we come here
*/
struct
rw_semaphore
fastcall
*
rwsem_wake
(
struct
rw_semaphore
*
sem
)
{
...
...
@@ -211,7 +216,7 @@ struct rw_semaphore fastcall *rwsem_wake(struct rw_semaphore *sem)
/* do nothing if list empty */
if
(
!
list_empty
(
&
sem
->
wait_list
))
sem
=
__rwsem_do_wake
(
sem
,
1
);
sem
=
__rwsem_do_wake
(
sem
,
0
);
spin_unlock
(
&
sem
->
wait_lock
);
...
...
@@ -233,7 +238,7 @@ struct rw_semaphore fastcall *rwsem_downgrade_wake(struct rw_semaphore *sem)
/* do nothing if list empty */
if
(
!
list_empty
(
&
sem
->
wait_list
))
sem
=
__rwsem_do_wake
(
sem
,
0
);
sem
=
__rwsem_do_wake
(
sem
,
1
);
spin_unlock
(
&
sem
->
wait_lock
);
...
...
net/core/ethtool.c
View file @
910b4606
...
...
@@ -652,6 +652,7 @@ int dev_ethtool(struct ifreq *ifr)
struct
net_device
*
dev
=
__dev_get_by_name
(
ifr
->
ifr_name
);
void
__user
*
useraddr
=
ifr
->
ifr_data
;
u32
ethcmd
;
int
rc
;
/*
* XXX: This can be pushed down into the ethtool_* handlers that
...
...
@@ -669,71 +670,110 @@ int dev_ethtool(struct ifreq *ifr)
if
(
copy_from_user
(
&
ethcmd
,
useraddr
,
sizeof
(
ethcmd
)))
return
-
EFAULT
;
if
(
dev
->
ethtool_ops
->
begin
)
if
((
rc
=
dev
->
ethtool_ops
->
begin
(
dev
))
<
0
)
return
rc
;
switch
(
ethcmd
)
{
case
ETHTOOL_GSET
:
return
ethtool_get_settings
(
dev
,
useraddr
);
rc
=
ethtool_get_settings
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SSET
:
return
ethtool_set_settings
(
dev
,
useraddr
);
rc
=
ethtool_set_settings
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GDRVINFO
:
return
ethtool_get_drvinfo
(
dev
,
useraddr
);
rc
=
ethtool_get_drvinfo
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GREGS
:
return
ethtool_get_regs
(
dev
,
useraddr
);
rc
=
ethtool_get_regs
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GWOL
:
return
ethtool_get_wol
(
dev
,
useraddr
);
rc
=
ethtool_get_wol
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SWOL
:
return
ethtool_set_wol
(
dev
,
useraddr
);
rc
=
ethtool_set_wol
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GMSGLVL
:
return
ethtool_get_msglevel
(
dev
,
useraddr
);
rc
=
ethtool_get_msglevel
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SMSGLVL
:
return
ethtool_set_msglevel
(
dev
,
useraddr
);
rc
=
ethtool_set_msglevel
(
dev
,
useraddr
);
break
;
case
ETHTOOL_NWAY_RST
:
return
ethtool_nway_reset
(
dev
);
rc
=
ethtool_nway_reset
(
dev
);
break
;
case
ETHTOOL_GLINK
:
return
ethtool_get_link
(
dev
,
useraddr
);
rc
=
ethtool_get_link
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GEEPROM
:
return
ethtool_get_eeprom
(
dev
,
useraddr
);
rc
=
ethtool_get_eeprom
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SEEPROM
:
return
ethtool_set_eeprom
(
dev
,
useraddr
);
rc
=
ethtool_set_eeprom
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GCOALESCE
:
return
ethtool_get_coalesce
(
dev
,
useraddr
);
rc
=
ethtool_get_coalesce
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SCOALESCE
:
return
ethtool_set_coalesce
(
dev
,
useraddr
);
rc
=
ethtool_set_coalesce
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GRINGPARAM
:
return
ethtool_get_ringparam
(
dev
,
useraddr
);
rc
=
ethtool_get_ringparam
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SRINGPARAM
:
return
ethtool_set_ringparam
(
dev
,
useraddr
);
rc
=
ethtool_set_ringparam
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GPAUSEPARAM
:
return
ethtool_get_pauseparam
(
dev
,
useraddr
);
rc
=
ethtool_get_pauseparam
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SPAUSEPARAM
:
return
ethtool_set_pauseparam
(
dev
,
useraddr
);
rc
=
ethtool_set_pauseparam
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GRXCSUM
:
return
ethtool_get_rx_csum
(
dev
,
useraddr
);
rc
=
ethtool_get_rx_csum
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SRXCSUM
:
return
ethtool_set_rx_csum
(
dev
,
useraddr
);
rc
=
ethtool_set_rx_csum
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GTXCSUM
:
return
ethtool_get_tx_csum
(
dev
,
useraddr
);
rc
=
ethtool_get_tx_csum
(
dev
,
useraddr
);
break
;
case
ETHTOOL_STXCSUM
:
return
ethtool_set_tx_csum
(
dev
,
useraddr
);
rc
=
ethtool_set_tx_csum
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GSG
:
return
ethtool_get_sg
(
dev
,
useraddr
);
rc
=
ethtool_get_sg
(
dev
,
useraddr
);
break
;
case
ETHTOOL_SSG
:
return
ethtool_set_sg
(
dev
,
useraddr
);
rc
=
ethtool_set_sg
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GTSO
:
return
ethtool_get_tso
(
dev
,
useraddr
);
rc
=
ethtool_get_tso
(
dev
,
useraddr
);
break
;
case
ETHTOOL_STSO
:
return
ethtool_set_tso
(
dev
,
useraddr
);
rc
=
ethtool_set_tso
(
dev
,
useraddr
);
break
;
case
ETHTOOL_TEST
:
return
ethtool_self_test
(
dev
,
useraddr
);
rc
=
ethtool_self_test
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GSTRINGS
:
return
ethtool_get_strings
(
dev
,
useraddr
);
rc
=
ethtool_get_strings
(
dev
,
useraddr
);
break
;
case
ETHTOOL_PHYS_ID
:
return
ethtool_phys_id
(
dev
,
useraddr
);
rc
=
ethtool_phys_id
(
dev
,
useraddr
);
break
;
case
ETHTOOL_GSTATS
:
return
ethtool_get_stats
(
dev
,
useraddr
);
rc
=
ethtool_get_stats
(
dev
,
useraddr
);
break
;
default:
r
eturn
-
EOPNOTSUPP
;
r
c
=
-
EOPNOTSUPP
;
}
if
(
dev
->
ethtool_ops
->
complete
)
dev
->
ethtool_ops
->
complete
(
dev
);
return
rc
;
ioctl:
if
(
dev
->
do_ioctl
)
return
dev
->
do_ioctl
(
dev
,
ifr
,
SIOCETHTOOL
);
...
...
net/ipv4/netfilter/arp_tables.c
View file @
910b4606
...
...
@@ -62,6 +62,8 @@ do { \
#include <linux/netfilter_ipv4/lockhelp.h>
#include <linux/netfilter_ipv4/listhelp.h>
static
DECLARE_MUTEX
(
arpt_mutex
);
struct
arpt_table_info
{
unsigned
int
size
;
unsigned
int
number
;
...
...
net/ipv4/tcp_diag.c
View file @
910b4606
...
...
@@ -91,6 +91,9 @@ void tcp_get_info(struct sock *sk, struct tcp_info *info)
info
->
tcpi_snd_cwnd
=
tp
->
snd_cwnd
;
info
->
tcpi_advmss
=
tp
->
advmss
;
info
->
tcpi_reordering
=
tp
->
reordering
;
info
->
tcpi_rcv_rtt
=
((
1000000
*
tp
->
rcv_rtt_est
.
rtt
)
/
HZ
)
>>
3
;
info
->
tcpi_rcv_space
=
tp
->
rcvq_space
.
space
;
}
static
int
tcpdiag_fill
(
struct
sk_buff
*
skb
,
struct
sock
*
sk
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment