Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
c280266a
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c280266a
编写于
12月 18, 2008
作者:
P
Paul Mackerras
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'linux-2.6' into next
上级
eddce368
55dac3a5
变更
57
隐藏空白更改
内联
并排
Showing
57 changed file
with
387 addition
and
301 deletion
+387
-301
Documentation/arm/mem_alignment
Documentation/arm/mem_alignment
+1
-1
Documentation/usb/gadget_serial.txt
Documentation/usb/gadget_serial.txt
+2
-2
Documentation/usb/proc_usb_info.txt
Documentation/usb/proc_usb_info.txt
+4
-2
Documentation/usb/usbmon.txt
Documentation/usb/usbmon.txt
+7
-5
MAINTAINERS
MAINTAINERS
+4
-4
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+1
-1
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+2
-2
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+1
-0
arch/arm/mach-pxa/include/mach/reset.h
arch/arm/mach-pxa/include/mach/reset.h
+2
-3
arch/arm/mm/fault.c
arch/arm/mm/fault.c
+1
-0
arch/ia64/hp/sim/Kconfig
arch/ia64/hp/sim/Kconfig
+1
-0
arch/powerpc/kernel/misc_32.S
arch/powerpc/kernel/misc_32.S
+2
-2
arch/powerpc/lib/rheap.c
arch/powerpc/lib/rheap.c
+1
-0
arch/sh/Kconfig
arch/sh/Kconfig
+2
-0
drivers/acpi/toshiba_acpi.c
drivers/acpi/toshiba_acpi.c
+29
-25
drivers/ata/libata-core.c
drivers/ata/libata-core.c
+59
-6
drivers/ata/pata_hpt366.c
drivers/ata/pata_hpt366.c
+9
-3
drivers/char/xilinx_hwicap/buffer_icap.c
drivers/char/xilinx_hwicap/buffer_icap.c
+0
-3
drivers/char/xilinx_hwicap/buffer_icap.h
drivers/char/xilinx_hwicap/buffer_icap.h
+0
-3
drivers/char/xilinx_hwicap/fifo_icap.c
drivers/char/xilinx_hwicap/fifo_icap.c
+0
-3
drivers/char/xilinx_hwicap/fifo_icap.h
drivers/char/xilinx_hwicap/fifo_icap.h
+0
-3
drivers/char/xilinx_hwicap/xilinx_hwicap.c
drivers/char/xilinx_hwicap/xilinx_hwicap.c
+0
-3
drivers/char/xilinx_hwicap/xilinx_hwicap.h
drivers/char/xilinx_hwicap/xilinx_hwicap.h
+0
-3
drivers/i2c/busses/i2c-cpm.c
drivers/i2c/busses/i2c-cpm.c
+1
-0
drivers/i2c/busses/i2c-s3c2410.c
drivers/i2c/busses/i2c-s3c2410.c
+15
-3
drivers/ieee1394/nodemgr.c
drivers/ieee1394/nodemgr.c
+6
-0
drivers/net/e1000e/ich8lan.c
drivers/net/e1000e/ich8lan.c
+7
-2
drivers/net/sungem.c
drivers/net/sungem.c
+88
-56
drivers/pcmcia/bfin_cf_pcmcia.c
drivers/pcmcia/bfin_cf_pcmcia.c
+1
-1
drivers/sh/maple/maple.c
drivers/sh/maple/maple.c
+1
-1
drivers/staging/Kconfig
drivers/staging/Kconfig
+3
-0
drivers/usb/class/usbtmc.c
drivers/usb/class/usbtmc.c
+1
-0
drivers/usb/core/driver.c
drivers/usb/core/driver.c
+3
-1
drivers/usb/gadget/f_rndis.c
drivers/usb/gadget/f_rndis.c
+4
-0
drivers/usb/serial/ftdi_sio.c
drivers/usb/serial/ftdi_sio.c
+2
-0
drivers/usb/serial/ftdi_sio.h
drivers/usb/serial/ftdi_sio.h
+6
-0
drivers/usb/serial/pl2303.c
drivers/usb/serial/pl2303.c
+2
-0
drivers/usb/serial/pl2303.h
drivers/usb/serial/pl2303.h
+8
-0
drivers/usb/serial/ti_usb_3410_5052.c
drivers/usb/serial/ti_usb_3410_5052.c
+3
-52
drivers/usb/storage/unusual_devs.h
drivers/usb/storage/unusual_devs.h
+15
-1
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+2
-1
fs/ocfs2/ocfs2_fs.h
fs/ocfs2/ocfs2_fs.h
+7
-1
fs/ocfs2/xattr.c
fs/ocfs2/xattr.c
+2
-2
include/linux/netdevice.h
include/linux/netdevice.h
+7
-0
include/linux/smp.h
include/linux/smp.h
+2
-0
include/linux/usb/ch9.h
include/linux/usb/ch9.h
+6
-2
kernel/cgroup.c
kernel/cgroup.c
+1
-1
lib/dynamic_printk.c
lib/dynamic_printk.c
+3
-3
mm/migrate.c
mm/migrate.c
+1
-1
mm/slob.c
mm/slob.c
+1
-1
net/core/netpoll.c
net/core/netpoll.c
+2
-0
net/ipv4/netfilter/nf_nat_rule.c
net/ipv4/netfilter/nf_nat_rule.c
+1
-1
net/ipv4/tcp_vegas.c
net/ipv4/tcp_vegas.c
+10
-70
net/ipv6/ndisc.c
net/ipv6/ndisc.c
+6
-1
net/netlabel/netlabel_unlabeled.c
net/netlabel/netlabel_unlabeled.c
+20
-18
net/phonet/pep-gprs.c
net/phonet/pep-gprs.c
+22
-5
net/sched/sch_netem.c
net/sched/sch_netem.c
+0
-3
未找到文件。
Documentation/arm/mem_alignment
浏览文件 @
c280266a
...
...
@@ -24,7 +24,7 @@ real bad - it changes the behaviour of all unaligned instructions in user
space, and might cause programs to fail unexpectedly.
To change the alignment trap behavior, simply echo a number into
/proc/
sys/debug
/alignment. The number is made up from various bits:
/proc/
cpu
/alignment. The number is made up from various bits:
bit behavior when set
--- -----------------
...
...
Documentation/usb/gadget_serial.txt
浏览文件 @
c280266a
...
...
@@ -114,11 +114,11 @@ modules.
Then you must load the gadget serial driver. To load it as an
ACM device (recommended for interoperability), do this:
modprobe g_serial
use_acm=1
modprobe g_serial
To load it as a vendor specific bulk in/out device, do this:
modprobe g_serial
modprobe g_serial
use_acm=0
This will also automatically load the underlying gadget peripheral
controller driver. This must be done each time you reboot the gadget
...
...
Documentation/usb/proc_usb_info.txt
浏览文件 @
c280266a
...
...
@@ -49,8 +49,10 @@ it and 002/048 sometime later.
These files can be read as binary data. The binary data consists
of first the device descriptor, then the descriptors for each
configuration of the device. That information is also shown in
text form by the /proc/bus/usb/devices file, described later.
configuration of the device. Multi-byte fields in the device and
configuration descriptors, but not other descriptors, are converted
to host endianness by the kernel. This information is also shown
in text form by the /proc/bus/usb/devices file, described later.
These files may also be used to write user-level drivers for the USB
devices. You would open the /proc/bus/usb/BBB/DDD file read/write,
...
...
Documentation/usb/usbmon.txt
浏览文件 @
c280266a
...
...
@@ -34,11 +34,12 @@ if usbmon is built into the kernel.
Verify that bus sockets are present.
# ls /sys/kernel/debug/usbmon
0s 0
t 0
u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
#
Now you can choose to either use the sockets numbered '0' (to capture packets on
all buses), and skip to step #3, or find the bus used by your device with step #2.
Now you can choose to either use the socket '0u' (to capture packets on all
buses), and skip to step #3, or find the bus used by your device with step #2.
This allows to filter away annoying devices that talk continuously.
2. Find which bus connects to the desired device
...
...
@@ -99,8 +100,9 @@ on the event type, but there is a set of words, common for all types.
Here is the list of words, from left to right:
- URB Tag. This is used to identify URBs is normally a kernel mode address
of the URB structure in hexadecimal.
- URB Tag. This is used to identify URBs, and is normally an in-kernel address
of the URB structure in hexadecimal, but can be a sequence number or any
other unique string, within reason.
- Timestamp in microseconds, a decimal number. The timestamp's resolution
depends on available clock, and so it can be much worse than a microsecond
...
...
MAINTAINERS
浏览文件 @
c280266a
...
...
@@ -1527,10 +1527,10 @@ W: http://ebtables.sourceforge.net/
S: Maintained
ECRYPT FILE SYSTEM
P:
Mike Halcrow, Phillip Hellewell
M:
mhalcrow@us.ibm.com, phillip@hellewell.homeip.net
L: ecryptfs-devel@lists.
sourceforge
.net
W: http
://ecryptfs.sourceforge.net/
P:
Tyler Hicks, Dustin Kirkland
M:
tyhicks@linux.vnet.ibm.com, kirkland@canonical.com
L: ecryptfs-devel@lists.
launchpad
.net
W: http
s://launchpad.net/ecryptfs
S: Supported
EDAC-CORE
...
...
arch/arm/common/sa1111.c
浏览文件 @
c280266a
...
...
@@ -630,7 +630,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
return
-
ENOMEM
;
sachip
->
clk
=
clk_get
(
me
,
"SA1111_CLK"
);
if
(
!
sachip
->
clk
)
{
if
(
IS_ERR
(
sachip
->
clk
)
)
{
ret
=
PTR_ERR
(
sachip
->
clk
);
goto
err_free
;
}
...
...
arch/arm/kernel/armksyms.c
浏览文件 @
c280266a
...
...
@@ -115,6 +115,8 @@ EXPORT_SYMBOL(__strnlen_user);
EXPORT_SYMBOL
(
__strncpy_from_user
);
#ifdef CONFIG_MMU
EXPORT_SYMBOL
(
copy_page
);
EXPORT_SYMBOL
(
__copy_from_user
);
EXPORT_SYMBOL
(
__copy_to_user
);
EXPORT_SYMBOL
(
__clear_user
);
...
...
@@ -181,8 +183,6 @@ EXPORT_SYMBOL(_find_first_bit_be);
EXPORT_SYMBOL
(
_find_next_bit_be
);
#endif
EXPORT_SYMBOL
(
copy_page
);
#ifdef CONFIG_FUNCTION_TRACER
EXPORT_SYMBOL
(
mcount
);
#endif
arch/arm/kernel/traps.c
浏览文件 @
c280266a
...
...
@@ -18,6 +18,7 @@
#include <linux/personality.h>
#include <linux/kallsyms.h>
#include <linux/delay.h>
#include <linux/hardirq.h>
#include <linux/init.h>
#include <linux/uaccess.h>
...
...
arch/arm/mach-pxa/include/mach/reset.h
浏览文件 @
c280266a
...
...
@@ -12,9 +12,8 @@ extern void clear_reset_status(unsigned int mask);
/**
* init_gpio_reset() - register GPIO as reset generator
*
* @gpio - gpio nr
* @output - set gpio as out/low instead of input during normal work
* @gpio: gpio nr
* @output: set gpio as out/low instead of input during normal work
*/
extern
int
init_gpio_reset
(
int
gpio
,
int
output
);
...
...
arch/arm/mm/fault.c
浏览文件 @
c280266a
...
...
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/signal.h>
#include <linux/mm.h>
#include <linux/hardirq.h>
#include <linux/init.h>
#include <linux/kprobes.h>
#include <linux/uaccess.h>
...
...
arch/ia64/hp/sim/Kconfig
浏览文件 @
c280266a
...
...
@@ -4,6 +4,7 @@ menu "HP Simulator drivers"
config HP_SIMETH
bool "Simulated Ethernet "
depends on NET
config HP_SIMSERIAL
bool "Simulated serial driver support"
...
...
arch/powerpc/kernel/misc_32.S
浏览文件 @
c280266a
...
...
@@ -486,13 +486,13 @@ _GLOBAL(_tlbil_va)
tlbsx
0
,
r3
mfspr
r4
,
SPRN_MAS1
/*
check
valid
*/
andis
.
r3
,
r4
,
MAS1_VALID
@
h
beq
lr
beq
1
f
rlwinm
r4
,
r4
,
0
,
1
,
31
mtspr
SPRN_MAS1
,
r4
tlbwe
msync
isync
wrtee
r10
1
:
wrtee
r10
blr
#endif /* CONFIG_FSL_BOOKE */
...
...
arch/powerpc/lib/rheap.c
浏览文件 @
c280266a
...
...
@@ -556,6 +556,7 @@ unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size, co
be
=
blk
->
start
+
blk
->
size
;
if
(
s
>=
bs
&&
e
<=
be
)
break
;
blk
=
NULL
;
}
if
(
blk
==
NULL
)
...
...
arch/sh/Kconfig
浏览文件 @
c280266a
...
...
@@ -55,6 +55,8 @@ config GENERIC_HARDIRQS
config GENERIC_HARDIRQS_NO__DO_IRQ
def_bool y
depends on SUPERH32 && (!SH_DREAMCAST && !SH_SH4202_MICRODEV && \
!SH_7751_SYSTEMH && !HD64461)
config GENERIC_IRQ_PROBE
def_bool y
...
...
drivers/acpi/toshiba_acpi.c
浏览文件 @
c280266a
...
...
@@ -824,32 +824,36 @@ static int __init toshiba_acpi_init(void)
toshiba_acpi_exit
();
return
-
ENOMEM
;
}
}
/* Register input device for kill switch */
toshiba_acpi
.
poll_dev
=
input_allocate_polled_device
();
if
(
!
toshiba_acpi
.
poll_dev
)
{
printk
(
MY_ERR
"unable to allocate kill-switch input device
\n
"
);
toshiba_acpi_exit
();
return
-
ENOMEM
;
}
toshiba_acpi
.
poll_dev
->
private
=
&
toshiba_acpi
;
toshiba_acpi
.
poll_dev
->
poll
=
bt_poll_rfkill
;
toshiba_acpi
.
poll_dev
->
poll_interval
=
1000
;
/* msecs */
toshiba_acpi
.
poll_dev
->
input
->
name
=
toshiba_acpi
.
rfk_name
;
toshiba_acpi
.
poll_dev
->
input
->
id
.
bustype
=
BUS_HOST
;
toshiba_acpi
.
poll_dev
->
input
->
id
.
vendor
=
0x0930
;
/* Toshiba USB ID */
set_bit
(
EV_SW
,
toshiba_acpi
.
poll_dev
->
input
->
evbit
);
set_bit
(
SW_RFKILL_ALL
,
toshiba_acpi
.
poll_dev
->
input
->
swbit
);
input_report_switch
(
toshiba_acpi
.
poll_dev
->
input
,
SW_RFKILL_ALL
,
TRUE
);
input_sync
(
toshiba_acpi
.
poll_dev
->
input
);
ret
=
input_register_polled_device
(
toshiba_acpi
.
poll_dev
);
if
(
ret
)
{
printk
(
MY_ERR
"unable to register kill-switch input device
\n
"
);
toshiba_acpi_exit
();
return
ret
;
/* Register input device for kill switch */
toshiba_acpi
.
poll_dev
=
input_allocate_polled_device
();
if
(
!
toshiba_acpi
.
poll_dev
)
{
printk
(
MY_ERR
"unable to allocate kill-switch input device
\n
"
);
toshiba_acpi_exit
();
return
-
ENOMEM
;
}
toshiba_acpi
.
poll_dev
->
private
=
&
toshiba_acpi
;
toshiba_acpi
.
poll_dev
->
poll
=
bt_poll_rfkill
;
toshiba_acpi
.
poll_dev
->
poll_interval
=
1000
;
/* msecs */
toshiba_acpi
.
poll_dev
->
input
->
name
=
toshiba_acpi
.
rfk_name
;
toshiba_acpi
.
poll_dev
->
input
->
id
.
bustype
=
BUS_HOST
;
/* Toshiba USB ID */
toshiba_acpi
.
poll_dev
->
input
->
id
.
vendor
=
0x0930
;
set_bit
(
EV_SW
,
toshiba_acpi
.
poll_dev
->
input
->
evbit
);
set_bit
(
SW_RFKILL_ALL
,
toshiba_acpi
.
poll_dev
->
input
->
swbit
);
input_report_switch
(
toshiba_acpi
.
poll_dev
->
input
,
SW_RFKILL_ALL
,
TRUE
);
input_sync
(
toshiba_acpi
.
poll_dev
->
input
);
ret
=
input_register_polled_device
(
toshiba_acpi
.
poll_dev
);
if
(
ret
)
{
printk
(
MY_ERR
"unable to register kill-switch input device
\n
"
);
toshiba_acpi_exit
();
return
ret
;
}
}
return
0
;
...
...
drivers/ata/libata-core.c
浏览文件 @
c280266a
...
...
@@ -4050,17 +4050,70 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
{
"ST3160023AS"
,
"3.42"
,
ATA_HORKAGE_NONCQ
},
/* Seagate NCQ + FLUSH CACHE firmware bug */
{
"ST31500341AS"
,
"
9JU138"
,
ATA_HORKAGE_NONCQ
|
{
"ST31500341AS"
,
"
SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST31
000333AS"
,
"9FZ136"
,
ATA_HORKAGE_NONCQ
|
{
"ST31
500341AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3
640623AS"
,
"9FZ164"
,
ATA_HORKAGE_NONCQ
|
{
"ST3
1500341AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3
640323AS"
,
"9FZ134"
,
ATA_HORKAGE_NONCQ
|
{
"ST3
1500341AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3
320813AS"
,
"9FZ182"
,
ATA_HORKAGE_NONCQ
|
{
"ST3
1500341AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"9FZ162"
,
ATA_HORKAGE_NONCQ
|
{
"ST31000333AS"
,
"SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST31000333AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST31000333AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST31000333AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST31000333AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640623AS"
,
"SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640623AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640623AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640623AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640623AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640323AS"
,
"SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640323AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640323AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640323AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3640323AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320813AS"
,
"SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320813AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320813AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320813AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320813AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"SD15"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"SD16"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"SD17"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"SD18"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
{
"ST3320613AS"
,
"SD19"
,
ATA_HORKAGE_NONCQ
|
ATA_HORKAGE_FIRMWARE_WARN
},
/* Blacklist entries taken from Silicon Image 3124/3132
...
...
drivers/ata/pata_hpt366.c
浏览文件 @
c280266a
...
...
@@ -183,7 +183,9 @@ static unsigned long hpt366_filter(struct ata_device *adev, unsigned long mask)
mask
&=
~
(
0xF8
<<
ATA_SHIFT_UDMA
);
if
(
hpt_dma_blacklisted
(
adev
,
"UDMA4"
,
bad_ata66_4
))
mask
&=
~
(
0xF0
<<
ATA_SHIFT_UDMA
);
}
}
else
if
(
adev
->
class
==
ATA_DEV_ATAPI
)
mask
&=
~
(
ATA_MASK_MWDMA
|
ATA_MASK_UDMA
);
return
ata_bmdma_mode_filter
(
adev
,
mask
);
}
...
...
@@ -211,11 +213,15 @@ static u32 hpt36x_find_mode(struct ata_port *ap, int speed)
static
int
hpt36x_cable_detect
(
struct
ata_port
*
ap
)
{
u8
ata66
;
struct
pci_dev
*
pdev
=
to_pci_dev
(
ap
->
host
->
dev
);
u8
ata66
;
/*
* Each channel of pata_hpt366 occupies separate PCI function
* as the primary channel and bit1 indicates the cable type.
*/
pci_read_config_byte
(
pdev
,
0x5A
,
&
ata66
);
if
(
ata66
&
(
1
<<
ap
->
port_no
)
)
if
(
ata66
&
2
)
return
ATA_CBL_PATA40
;
return
ATA_CBL_PATA80
;
}
...
...
drivers/char/xilinx_hwicap/buffer_icap.c
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2003-2008 Xilinx Inc.
* All rights reserved.
*
...
...
drivers/char/xilinx_hwicap/buffer_icap.h
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2003-2008 Xilinx Inc.
* All rights reserved.
*
...
...
drivers/char/xilinx_hwicap/fifo_icap.c
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2007-2008 Xilinx Inc.
* All rights reserved.
*
...
...
drivers/char/xilinx_hwicap/fifo_icap.h
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2007-2008 Xilinx Inc.
* All rights reserved.
*
...
...
drivers/char/xilinx_hwicap/xilinx_hwicap.c
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2002 Xilinx Inc., Systems Engineering Group
* (c) Copyright 2004 Xilinx Inc., Systems Engineering Group
* (c) Copyright 2007-2008 Xilinx Inc.
...
...
drivers/char/xilinx_hwicap/xilinx_hwicap.h
浏览文件 @
c280266a
...
...
@@ -21,9 +21,6 @@
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* Xilinx products are not intended for use in life support appliances,
* devices, or systems. Use in such applications is expressly prohibited.
*
* (c) Copyright 2003-2007 Xilinx Inc.
* All rights reserved.
*
...
...
drivers/i2c/busses/i2c-cpm.c
浏览文件 @
c280266a
...
...
@@ -365,6 +365,7 @@ static int cpm_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
pmsg
=
&
msgs
[
tptr
];
if
(
pmsg
->
flags
&
I2C_M_RD
)
ret
=
wait_event_interruptible_timeout
(
cpm
->
i2c_wait
,
(
in_be16
(
&
tbdf
[
tptr
].
cbd_sc
)
&
BD_SC_NAK
)
||
!
(
in_be16
(
&
rbdf
[
rptr
].
cbd_sc
)
&
BD_SC_EMPTY
),
1
*
HZ
);
else
...
...
drivers/i2c/busses/i2c-s3c2410.c
浏览文件 @
c280266a
...
...
@@ -56,6 +56,7 @@ enum s3c24xx_i2c_state {
struct
s3c24xx_i2c
{
spinlock_t
lock
;
wait_queue_head_t
wait
;
unsigned
int
suspended
:
1
;
struct
i2c_msg
*
msg
;
unsigned
int
msg_num
;
...
...
@@ -507,7 +508,7 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, struct i2c_msg *msgs, int
unsigned
long
timeout
;
int
ret
;
if
(
!
(
readl
(
i2c
->
regs
+
S3C2410_IICCON
)
&
S3C2410_IICCON_IRQEN
)
)
if
(
i2c
->
suspended
)
return
-
EIO
;
ret
=
s3c24xx_i2c_set_master
(
i2c
);
...
...
@@ -986,17 +987,26 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
}
#ifdef CONFIG_PM
static
int
s3c24xx_i2c_suspend_late
(
struct
platform_device
*
dev
,
pm_message_t
msg
)
{
struct
s3c24xx_i2c
*
i2c
=
platform_get_drvdata
(
dev
);
i2c
->
suspended
=
1
;
return
0
;
}
static
int
s3c24xx_i2c_resume
(
struct
platform_device
*
dev
)
{
struct
s3c24xx_i2c
*
i2c
=
platform_get_drvdata
(
dev
);
i
f
(
i2c
!=
NULL
)
s3c24xx_i2c_init
(
i2c
);
i
2c
->
suspended
=
0
;
s3c24xx_i2c_init
(
i2c
);
return
0
;
}
#else
#define s3c24xx_i2c_suspend_late NULL
#define s3c24xx_i2c_resume NULL
#endif
...
...
@@ -1005,6 +1015,7 @@ static int s3c24xx_i2c_resume(struct platform_device *dev)
static
struct
platform_driver
s3c2410_i2c_driver
=
{
.
probe
=
s3c24xx_i2c_probe
,
.
remove
=
s3c24xx_i2c_remove
,
.
suspend_late
=
s3c24xx_i2c_suspend_late
,
.
resume
=
s3c24xx_i2c_resume
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
...
...
@@ -1015,6 +1026,7 @@ static struct platform_driver s3c2410_i2c_driver = {
static
struct
platform_driver
s3c2440_i2c_driver
=
{
.
probe
=
s3c24xx_i2c_probe
,
.
remove
=
s3c24xx_i2c_remove
,
.
suspend_late
=
s3c24xx_i2c_suspend_late
,
.
resume
=
s3c24xx_i2c_resume
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
...
...
drivers/ieee1394/nodemgr.c
浏览文件 @
c280266a
...
...
@@ -115,8 +115,14 @@ static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length,
return
error
;
}
#define OUI_FREECOM_TECHNOLOGIES_GMBH 0x0001db
static
int
nodemgr_get_max_rom
(
quadlet_t
*
bus_info_data
,
void
*
__ci
)
{
/* Freecom FireWire Hard Drive firmware bug */
if
(
be32_to_cpu
(
bus_info_data
[
3
])
>>
8
==
OUI_FREECOM_TECHNOLOGIES_GMBH
)
return
0
;
return
(
be32_to_cpu
(
bus_info_data
[
2
])
>>
8
)
&
0x3
;
}
...
...
drivers/net/e1000e/ich8lan.c
浏览文件 @
c280266a
...
...
@@ -1893,12 +1893,17 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
ctrl
|=
E1000_CTRL_PHY_RST
;
}
ret_val
=
e1000_acquire_swflag_ich8lan
(
hw
);
/* Whether or not the swflag was acquired, we need to reset the part */
hw_dbg
(
hw
,
"Issuing a global reset to ich8lan"
);
ew32
(
CTRL
,
(
ctrl
|
E1000_CTRL_RST
));
msleep
(
20
);
/* release the swflag because it is not reset by hardware reset */
e1000_release_swflag_ich8lan
(
hw
);
if
(
!
ret_val
)
{
/* release the swflag because it is not reset by
* hardware reset
*/
e1000_release_swflag_ich8lan
(
hw
);
}
ret_val
=
e1000e_get_auto_rd_done
(
hw
);
if
(
ret_val
)
{
...
...
drivers/net/sungem.c
浏览文件 @
c280266a
...
...
@@ -1142,6 +1142,70 @@ static int gem_start_xmit(struct sk_buff *skb, struct net_device *dev)
return
NETDEV_TX_OK
;
}
static
void
gem_pcs_reset
(
struct
gem
*
gp
)
{
int
limit
;
u32
val
;
/* Reset PCS unit. */
val
=
readl
(
gp
->
regs
+
PCS_MIICTRL
);
val
|=
PCS_MIICTRL_RST
;
writel
(
val
,
gp
->
regs
+
PCS_MIICTRL
);
limit
=
32
;
while
(
readl
(
gp
->
regs
+
PCS_MIICTRL
)
&
PCS_MIICTRL_RST
)
{
udelay
(
100
);
if
(
limit
--
<=
0
)
break
;
}
if
(
limit
<=
0
)
printk
(
KERN_WARNING
"%s: PCS reset bit would not clear.
\n
"
,
gp
->
dev
->
name
);
}
static
void
gem_pcs_reinit_adv
(
struct
gem
*
gp
)
{
u32
val
;
/* Make sure PCS is disabled while changing advertisement
* configuration.
*/
val
=
readl
(
gp
->
regs
+
PCS_CFG
);
val
&=
~
(
PCS_CFG_ENABLE
|
PCS_CFG_TO
);
writel
(
val
,
gp
->
regs
+
PCS_CFG
);
/* Advertise all capabilities except assymetric
* pause.
*/
val
=
readl
(
gp
->
regs
+
PCS_MIIADV
);
val
|=
(
PCS_MIIADV_FD
|
PCS_MIIADV_HD
|
PCS_MIIADV_SP
|
PCS_MIIADV_AP
);
writel
(
val
,
gp
->
regs
+
PCS_MIIADV
);
/* Enable and restart auto-negotiation, disable wrapback/loopback,
* and re-enable PCS.
*/
val
=
readl
(
gp
->
regs
+
PCS_MIICTRL
);
val
|=
(
PCS_MIICTRL_RAN
|
PCS_MIICTRL_ANE
);
val
&=
~
PCS_MIICTRL_WB
;
writel
(
val
,
gp
->
regs
+
PCS_MIICTRL
);
val
=
readl
(
gp
->
regs
+
PCS_CFG
);
val
|=
PCS_CFG_ENABLE
;
writel
(
val
,
gp
->
regs
+
PCS_CFG
);
/* Make sure serialink loopback is off. The meaning
* of this bit is logically inverted based upon whether
* you are in Serialink or SERDES mode.
*/
val
=
readl
(
gp
->
regs
+
PCS_SCTRL
);
if
(
gp
->
phy_type
==
phy_serialink
)
val
&=
~
PCS_SCTRL_LOOP
;
else
val
|=
PCS_SCTRL_LOOP
;
writel
(
val
,
gp
->
regs
+
PCS_SCTRL
);
}
#define STOP_TRIES 32
/* Must be invoked under gp->lock and gp->tx_lock. */
...
...
@@ -1168,6 +1232,9 @@ static void gem_reset(struct gem *gp)
if
(
limit
<=
0
)
printk
(
KERN_ERR
"%s: SW reset is ghetto.
\n
"
,
gp
->
dev
->
name
);
if
(
gp
->
phy_type
==
phy_serialink
||
gp
->
phy_type
==
phy_serdes
)
gem_pcs_reinit_adv
(
gp
);
}
/* Must be invoked under gp->lock and gp->tx_lock. */
...
...
@@ -1324,7 +1391,7 @@ static int gem_set_link_modes(struct gem *gp)
gp
->
phy_type
==
phy_serdes
)
{
u32
pcs_lpa
=
readl
(
gp
->
regs
+
PCS_MIILP
);
if
(
pcs_lpa
&
PCS_MIIADV_FD
)
if
(
(
pcs_lpa
&
PCS_MIIADV_FD
)
||
gp
->
phy_type
==
phy_serdes
)
full_duplex
=
1
;
speed
=
SPEED_1000
;
}
...
...
@@ -1488,6 +1555,9 @@ static void gem_link_timer(unsigned long data)
val
=
readl
(
gp
->
regs
+
PCS_MIISTAT
);
if
((
val
&
PCS_MIISTAT_LS
)
!=
0
)
{
if
(
gp
->
lstate
==
link_up
)
goto
restart
;
gp
->
lstate
=
link_up
;
netif_carrier_on
(
gp
->
dev
);
(
void
)
gem_set_link_modes
(
gp
);
...
...
@@ -1708,61 +1778,8 @@ static void gem_init_phy(struct gem *gp)
if
(
gp
->
phy_mii
.
def
&&
gp
->
phy_mii
.
def
->
ops
->
init
)
gp
->
phy_mii
.
def
->
ops
->
init
(
&
gp
->
phy_mii
);
}
else
{
u32
val
;
int
limit
;
/* Reset PCS unit. */
val
=
readl
(
gp
->
regs
+
PCS_MIICTRL
);
val
|=
PCS_MIICTRL_RST
;
writel
(
val
,
gp
->
regs
+
PCS_MIICTRL
);
limit
=
32
;
while
(
readl
(
gp
->
regs
+
PCS_MIICTRL
)
&
PCS_MIICTRL_RST
)
{
udelay
(
100
);
if
(
limit
--
<=
0
)
break
;
}
if
(
limit
<=
0
)
printk
(
KERN_WARNING
"%s: PCS reset bit would not clear.
\n
"
,
gp
->
dev
->
name
);
/* Make sure PCS is disabled while changing advertisement
* configuration.
*/
val
=
readl
(
gp
->
regs
+
PCS_CFG
);
val
&=
~
(
PCS_CFG_ENABLE
|
PCS_CFG_TO
);
writel
(
val
,
gp
->
regs
+
PCS_CFG
);
/* Advertise all capabilities except assymetric
* pause.
*/
val
=
readl
(
gp
->
regs
+
PCS_MIIADV
);
val
|=
(
PCS_MIIADV_FD
|
PCS_MIIADV_HD
|
PCS_MIIADV_SP
|
PCS_MIIADV_AP
);
writel
(
val
,
gp
->
regs
+
PCS_MIIADV
);
/* Enable and restart auto-negotiation, disable wrapback/loopback,
* and re-enable PCS.
*/
val
=
readl
(
gp
->
regs
+
PCS_MIICTRL
);
val
|=
(
PCS_MIICTRL_RAN
|
PCS_MIICTRL_ANE
);
val
&=
~
PCS_MIICTRL_WB
;
writel
(
val
,
gp
->
regs
+
PCS_MIICTRL
);
val
=
readl
(
gp
->
regs
+
PCS_CFG
);
val
|=
PCS_CFG_ENABLE
;
writel
(
val
,
gp
->
regs
+
PCS_CFG
);
/* Make sure serialink loopback is off. The meaning
* of this bit is logically inverted based upon whether
* you are in Serialink or SERDES mode.
*/
val
=
readl
(
gp
->
regs
+
PCS_SCTRL
);
if
(
gp
->
phy_type
==
phy_serialink
)
val
&=
~
PCS_SCTRL_LOOP
;
else
val
|=
PCS_SCTRL_LOOP
;
writel
(
val
,
gp
->
regs
+
PCS_SCTRL
);
gem_pcs_reset
(
gp
);
gem_pcs_reinit_adv
(
gp
);
}
/* Default aneg parameters */
...
...
@@ -2680,6 +2697,21 @@ static int gem_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
cmd
->
speed
=
0
;
cmd
->
duplex
=
cmd
->
port
=
cmd
->
phy_address
=
cmd
->
transceiver
=
cmd
->
autoneg
=
0
;
/* serdes means usually a Fibre connector, with most fixed */
if
(
gp
->
phy_type
==
phy_serdes
)
{
cmd
->
port
=
PORT_FIBRE
;
cmd
->
supported
=
(
SUPPORTED_1000baseT_Half
|
SUPPORTED_1000baseT_Full
|
SUPPORTED_FIBRE
|
SUPPORTED_Autoneg
|
SUPPORTED_Pause
|
SUPPORTED_Asym_Pause
);
cmd
->
advertising
=
cmd
->
supported
;
cmd
->
transceiver
=
XCVR_INTERNAL
;
if
(
gp
->
lstate
==
link_up
)
cmd
->
speed
=
SPEED_1000
;
cmd
->
duplex
=
DUPLEX_FULL
;
cmd
->
autoneg
=
1
;
}
}
cmd
->
maxtxpkt
=
cmd
->
maxrxpkt
=
0
;
...
...
drivers/pcmcia/bfin_cf_pcmcia.c
浏览文件 @
c280266a
...
...
@@ -334,6 +334,6 @@ static void __exit bfin_cf_exit(void)
module_init
(
bfin_cf_init
);
module_exit
(
bfin_cf_exit
);
MODULE_AUTHOR
(
"Michael Hennerich <hennerich@blackfin.uclinux.org>"
)
MODULE_AUTHOR
(
"Michael Hennerich <hennerich@blackfin.uclinux.org>"
)
;
MODULE_DESCRIPTION
(
"BFIN CF/PCMCIA Driver"
);
MODULE_LICENSE
(
"GPL"
);
drivers/sh/maple/maple.c
浏览文件 @
c280266a
...
...
@@ -827,7 +827,7 @@ static int __init maple_bus_init(void)
maple_queue_cache
=
kmem_cache_create
(
"maple_queue_cache"
,
0x400
,
0
,
SLAB_
POISON
|
SLAB_
HWCACHE_ALIGN
,
NULL
);
SLAB_HWCACHE_ALIGN
,
NULL
);
if
(
!
maple_queue_cache
)
goto
cleanup_bothirqs
;
...
...
drivers/staging/Kconfig
浏览文件 @
c280266a
...
...
@@ -22,6 +22,8 @@ menuconfig STAGING
If in doubt, say N here.
if STAGING
config STAGING_EXCLUDE_BUILD
bool "Exclude Staging drivers from being built" if STAGING
default y
...
...
@@ -62,3 +64,4 @@ source "drivers/staging/at76_usb/Kconfig"
source "drivers/staging/poch/Kconfig"
endif # !STAGING_EXCLUDE_BUILD
endif # STAGING
drivers/usb/class/usbtmc.c
浏览文件 @
c280266a
...
...
@@ -51,6 +51,7 @@ static struct usb_device_id usbtmc_devices[] = {
{
USB_INTERFACE_INFO
(
USB_CLASS_APP_SPEC
,
3
,
0
),
},
{
0
,
}
/* terminating entry */
};
MODULE_DEVICE_TABLE
(
usb
,
usbtmc_devices
);
/*
* This structure is the capabilities for the device
...
...
drivers/usb/core/driver.c
浏览文件 @
c280266a
...
...
@@ -279,7 +279,9 @@ static int usb_unbind_interface(struct device *dev)
* altsetting means creating new endpoint device entries).
* When either of these happens, defer the Set-Interface.
*/
if
(
!
error
&&
intf
->
dev
.
power
.
status
==
DPM_ON
)
if
(
intf
->
cur_altsetting
->
desc
.
bAlternateSetting
==
0
)
;
/* Already in altsetting 0 so skip Set-Interface */
else
if
(
!
error
&&
intf
->
dev
.
power
.
status
==
DPM_ON
)
usb_set_interface
(
udev
,
intf
->
altsetting
[
0
].
desc
.
bInterfaceNumber
,
0
);
else
...
...
drivers/usb/gadget/f_rndis.c
浏览文件 @
c280266a
...
...
@@ -651,6 +651,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
fs_in_desc
.
bEndpointAddress
;
hs_out_desc
.
bEndpointAddress
=
fs_out_desc
.
bEndpointAddress
;
hs_notify_desc
.
bEndpointAddress
=
fs_notify_desc
.
bEndpointAddress
;
/* copy descriptors, and track endpoint copies */
f
->
hs_descriptors
=
usb_copy_descriptors
(
eth_hs_function
);
...
...
@@ -662,6 +664,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
f
->
hs_descriptors
,
&
hs_in_desc
);
rndis
->
hs
.
out
=
usb_find_endpoint
(
eth_hs_function
,
f
->
hs_descriptors
,
&
hs_out_desc
);
rndis
->
hs
.
notify
=
usb_find_endpoint
(
eth_hs_function
,
f
->
hs_descriptors
,
&
hs_notify_desc
);
}
rndis
->
port
.
open
=
rndis_open
;
...
...
drivers/usb/serial/ftdi_sio.c
浏览文件 @
c280266a
...
...
@@ -143,6 +143,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
static
struct
usb_device_id
id_table_combined
[]
=
{
{
USB_DEVICE
(
FTDI_VID
,
FTDI_AMC232_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_CANUSB_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_CANDAPTER_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_SCS_DEVICE_0_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_SCS_DEVICE_1_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_SCS_DEVICE_2_PID
)
},
...
...
@@ -166,6 +167,7 @@ static struct usb_device_id id_table_combined [] = {
{
USB_DEVICE
(
FTDI_VID
,
FTDI_OPENDCC_PID
)
},
{
USB_DEVICE
(
INTERBIOMETRICS_VID
,
INTERBIOMETRICS_IOBOARD_PID
)
},
{
USB_DEVICE
(
INTERBIOMETRICS_VID
,
INTERBIOMETRICS_MINI_IOBOARD_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_SPROG_II
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_XF_632_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_XF_634_PID
)
},
{
USB_DEVICE
(
FTDI_VID
,
FTDI_XF_547_PID
)
},
...
...
drivers/usb/serial/ftdi_sio.h
浏览文件 @
c280266a
...
...
@@ -40,6 +40,9 @@
/* AlphaMicro Components AMC-232USB01 device */
#define FTDI_AMC232_PID 0xFF00
/* Product Id */
/* www.candapter.com Ewert Energy Systems CANdapter device */
#define FTDI_CANDAPTER_PID 0x9F80
/* Product Id */
/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
/* the VID is the standard ftdi vid (FTDI_VID) */
#define FTDI_SCS_DEVICE_0_PID 0xD010
/* SCS PTC-IIusb */
...
...
@@ -75,6 +78,9 @@
/* OpenDCC (www.opendcc.de) product id */
#define FTDI_OPENDCC_PID 0xBFD8
/* Sprog II (Andrew Crosland's SprogII DCC interface) */
#define FTDI_SPROG_II 0xF0C8
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
/* they use the ftdi chipset for the USB interface and the vendor id is the same */
#define FTDI_XF_632_PID 0xFC08
/* 632: 16x2 Character Display */
...
...
drivers/usb/serial/pl2303.c
浏览文件 @
c280266a
...
...
@@ -91,6 +91,8 @@ static struct usb_device_id id_table [] = {
{
USB_DEVICE
(
WS002IN_VENDOR_ID
,
WS002IN_PRODUCT_ID
)
},
{
USB_DEVICE
(
COREGA_VENDOR_ID
,
COREGA_PRODUCT_ID
)
},
{
USB_DEVICE
(
YCCABLE_VENDOR_ID
,
YCCABLE_PRODUCT_ID
)
},
{
USB_DEVICE
(
SUPERIAL_VENDOR_ID
,
SUPERIAL_PRODUCT_ID
)
},
{
USB_DEVICE
(
HP_VENDOR_ID
,
HP_LD220_PRODUCT_ID
)
},
{
}
/* Terminating entry */
};
...
...
drivers/usb/serial/pl2303.h
浏览文件 @
c280266a
...
...
@@ -110,3 +110,11 @@
/* Y.C. Cable U.S.A., Inc - USB to RS-232 */
#define YCCABLE_VENDOR_ID 0x05ad
#define YCCABLE_PRODUCT_ID 0x0fba
/* "Superial" USB - Serial */
#define SUPERIAL_VENDOR_ID 0x5372
#define SUPERIAL_PRODUCT_ID 0x2303
/* Hewlett-Packard LD220-HP POS Pole Display */
#define HP_VENDOR_ID 0x03f0
#define HP_LD220_PRODUCT_ID 0x3524
drivers/usb/serial/ti_usb_3410_5052.c
浏览文件 @
c280266a
...
...
@@ -16,56 +16,6 @@
* For questions or problems with this driver, contact Texas Instruments
* technical support, or Al Borchers <alborchers@steinerpoint.com>, or
* Peter Berger <pberger@brimson.com>.
*
* This driver needs this hotplug script in /etc/hotplug/usb/ti_usb_3410_5052
* or in /etc/hotplug.d/usb/ti_usb_3410_5052.hotplug to set the device
* configuration.
*
* #!/bin/bash
*
* BOOT_CONFIG=1
* ACTIVE_CONFIG=2
*
* if [[ "$ACTION" != "add" ]]
* then
* exit
* fi
*
* CONFIG_PATH=/sys${DEVPATH%/?*}/bConfigurationValue
*
* if [[ 0`cat $CONFIG_PATH` -ne $BOOT_CONFIG ]]
* then
* exit
* fi
*
* PRODUCT=${PRODUCT%/?*} # delete version
* VENDOR_ID=`printf "%d" 0x${PRODUCT%/?*}`
* PRODUCT_ID=`printf "%d" 0x${PRODUCT#*?/}`
*
* PARAM_PATH=/sys/module/ti_usb_3410_5052/parameters
*
* function scan() {
* s=$1
* shift
* for i
* do
* if [[ $s -eq $i ]]
* then
* return 0
* fi
* done
* return 1
* }
*
* IFS=$IFS,
*
* if (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_3410` &&
* scan $PRODUCT_ID 13328 `cat $PARAM_PATH/product_3410`) ||
* (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_5052` &&
* scan $PRODUCT_ID 20562 20818 20570 20575 `cat $PARAM_PATH/product_5052`)
* then
* echo $ACTIVE_CONFIG > $CONFIG_PATH
* fi
*/
#include <linux/kernel.h>
...
...
@@ -457,9 +407,10 @@ static int ti_startup(struct usb_serial *serial)
goto
free_tdev
;
}
/* the second configuration must be set
(in sysfs by hotplug script)
*/
/* the second configuration must be set */
if
(
dev
->
actconfig
->
desc
.
bConfigurationValue
==
TI_BOOT_CONFIG
)
{
status
=
-
ENODEV
;
status
=
usb_driver_set_configuration
(
dev
,
TI_ACTIVE_CONFIG
);
status
=
status
?
status
:
-
ENODEV
;
goto
free_tdev
;
}
...
...
drivers/usb/storage/unusual_devs.h
浏览文件 @
c280266a
...
...
@@ -167,8 +167,22 @@ UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
/* Reported by Ozan Sener <themgzzy@gmail.com> */
UNUSUAL_DEV
(
0x0421
,
0x0060
,
0x0551
,
0x0551
,
"Nokia"
,
"3500c"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
/* Reported by CSECSY Laszlo <boobaa@frugalware.org> */
UNUSUAL_DEV
(
0x0421
,
0x0063
,
0x0001
,
0x0601
,
"Nokia"
,
"Nokia 3109c"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
US_FL_FIX_CAPACITY
),
/* Patch for Nokia 5310 capacity */
UNUSUAL_DEV
(
0x0421
,
0x006a
,
0x0000
,
0x0
59
1
,
UNUSUAL_DEV
(
0x0421
,
0x006a
,
0x0000
,
0x0
70
1
,
"Nokia"
,
"5310"
,
US_SC_DEVICE
,
US_PR_DEVICE
,
NULL
,
...
...
fs/cifs/cifssmb.c
浏览文件 @
c280266a
...
...
@@ -3983,7 +3983,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
node
->
flags
=
le16_to_cpu
(
pSMBr
->
DFSFlags
);
if
(
is_unicode
)
{
__le16
*
tmp
=
kmalloc
(
strlen
(
searchName
)
*
2
,
GFP_KERNEL
);
__le16
*
tmp
=
kmalloc
(
strlen
(
searchName
)
*
2
+
2
,
GFP_KERNEL
);
cifsConvertToUCS
((
__le16
*
)
tmp
,
searchName
,
PATH_MAX
,
nls_codepage
,
remap
);
node
->
path_consumed
=
hostlen_fromUCS
(
tmp
,
...
...
fs/ocfs2/ocfs2_fs.h
浏览文件 @
c280266a
...
...
@@ -86,7 +86,8 @@
#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
#define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB
#define OCFS2_FEATURE_COMPAT_SUPP (OCFS2_FEATURE_COMPAT_BACKUP_SB \
| OCFS2_FEATURE_COMPAT_JBD2_SB)
#define OCFS2_FEATURE_INCOMPAT_SUPP (OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT \
| OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \
| OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
...
...
@@ -152,6 +153,11 @@
*/
#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
/*
* The filesystem will correctly handle journal feature bits.
*/
#define OCFS2_FEATURE_COMPAT_JBD2_SB 0x0002
/*
* Unwritten extents support.
*/
...
...
fs/ocfs2/xattr.c
浏览文件 @
c280266a
...
...
@@ -2645,9 +2645,9 @@ static int ocfs2_xattr_update_xattr_search(struct inode *inode,
return
ret
;
}
i
=
xs
->
here
-
old_xh
->
xh_entries
;
xs
->
here
=
&
xs
->
header
->
xh_entries
[
i
];
}
i
=
xs
->
here
-
old_xh
->
xh_entries
;
xs
->
here
=
&
xs
->
header
->
xh_entries
[
i
];
}
return
ret
;
...
...
include/linux/netdevice.h
浏览文件 @
c280266a
...
...
@@ -319,6 +319,7 @@ enum
{
NAPI_STATE_SCHED
,
/* Poll is scheduled */
NAPI_STATE_DISABLE
,
/* Disable pending */
NAPI_STATE_NPSVC
,
/* Netpoll - don't dequeue from poll_list */
};
extern
void
__napi_schedule
(
struct
napi_struct
*
n
);
...
...
@@ -1497,6 +1498,12 @@ static inline void netif_rx_complete(struct net_device *dev,
{
unsigned
long
flags
;
/*
* don't let napi dequeue from the cpu poll list
* just in case its running on a different cpu
*/
if
(
unlikely
(
test_bit
(
NAPI_STATE_NPSVC
,
&
napi
->
state
)))
return
;
local_irq_save
(
flags
);
__netif_rx_complete
(
dev
,
napi
);
local_irq_restore
(
flags
);
...
...
include/linux/smp.h
浏览文件 @
c280266a
...
...
@@ -146,6 +146,8 @@ static inline void smp_send_reschedule(int cpu) { }
})
#define smp_call_function_mask(mask, func, info, wait) \
(up_smp_call_function(func, info))
#define smp_call_function_many(mask, func, info, wait) \
(up_smp_call_function(func, info))
static
inline
void
init_call_single_data
(
void
)
{
}
...
...
include/linux/usb/ch9.h
浏览文件 @
c280266a
...
...
@@ -158,8 +158,12 @@ struct usb_ctrlrequest {
* (rarely) accepted by SET_DESCRIPTOR.
*
* Note that all multi-byte values here are encoded in little endian
* byte order "on the wire". But when exposed through Linux-USB APIs,
* they've been converted to cpu byte order.
* byte order "on the wire". Within the kernel and when exposed
* through the Linux-USB APIs, they are not converted to cpu byte
* order; it is the responsibility of the client code to do this.
* The single exception is when device and configuration descriptors (but
* not other descriptors) are read from usbfs (i.e. /proc/bus/usb/BBB/DDD);
* in this case the fields are converted to host endianness by the kernel.
*/
/*
...
...
kernel/cgroup.c
浏览文件 @
c280266a
...
...
@@ -702,7 +702,7 @@ static int rebind_subsystems(struct cgroupfs_root *root,
* any child cgroups exist. This is theoretically supportable
* but involves complex error handling, so it's being left until
* later */
if
(
!
list_empty
(
&
cgrp
->
children
)
)
if
(
root
->
number_of_cgroups
>
1
)
return
-
EBUSY
;
/* Process each subsystem */
...
...
lib/dynamic_printk.c
浏览文件 @
c280266a
...
...
@@ -135,7 +135,7 @@ int unregister_dynamic_debug_module(char *mod_name)
nr_entries
--
;
out:
up
(
&
debug_list_mutex
);
return
0
;
return
ret
;
}
EXPORT_SYMBOL_GPL
(
unregister_dynamic_debug_module
);
...
...
@@ -289,7 +289,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
dynamic_enabled
=
DYNAMIC_ENABLED_SOME
;
err
=
0
;
printk
(
KERN_DEBUG
"debugging enabled for module %s"
,
"debugging enabled for module %s
\n
"
,
elem
->
name
);
}
else
if
(
!
value
&&
(
elem
->
enable
==
1
))
{
elem
->
enable
=
0
;
...
...
@@ -309,7 +309,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
err
=
0
;
printk
(
KERN_DEBUG
"debugging disabled for module "
"%s"
,
elem
->
name
);
"%s
\n
"
,
elem
->
name
);
}
}
}
...
...
mm/migrate.c
浏览文件 @
c280266a
...
...
@@ -998,7 +998,7 @@ static void do_pages_stat_array(struct mm_struct *mm, unsigned long nr_pages,
unsigned
long
addr
=
(
unsigned
long
)(
*
pages
);
struct
vm_area_struct
*
vma
;
struct
page
*
page
;
int
err
;
int
err
=
-
EFAULT
;
vma
=
find_vma
(
mm
,
addr
);
if
(
!
vma
)
...
...
mm/slob.c
浏览文件 @
c280266a
...
...
@@ -535,7 +535,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
struct
kmem_cache
*
c
;
c
=
slob_alloc
(
sizeof
(
struct
kmem_cache
),
flags
,
ARCH_KMALLOC_MINALIGN
,
-
1
);
GFP_KERNEL
,
ARCH_KMALLOC_MINALIGN
,
-
1
);
if
(
c
)
{
c
->
name
=
name
;
...
...
net/core/netpoll.c
浏览文件 @
c280266a
...
...
@@ -133,9 +133,11 @@ static int poll_one_napi(struct netpoll_info *npinfo,
npinfo
->
rx_flags
|=
NETPOLL_RX_DROP
;
atomic_inc
(
&
trapped
);
set_bit
(
NAPI_STATE_NPSVC
,
&
napi
->
state
);
work
=
napi
->
poll
(
napi
,
budget
);
clear_bit
(
NAPI_STATE_NPSVC
,
&
napi
->
state
);
atomic_dec
(
&
trapped
);
npinfo
->
rx_flags
&=
~
NETPOLL_RX_DROP
;
...
...
net/ipv4/netfilter/nf_nat_rule.c
浏览文件 @
c280266a
...
...
@@ -61,7 +61,7 @@ static struct
static
struct
xt_table
nat_table
=
{
.
name
=
"nat"
,
.
valid_hooks
=
NAT_VALID_HOOKS
,
.
lock
=
__RW_LOCK_UNLOCKED
(
__
nat_table
.
lock
),
.
lock
=
__RW_LOCK_UNLOCKED
(
nat_table
.
lock
),
.
me
=
THIS_MODULE
,
.
af
=
AF_INET
,
};
...
...
net/ipv4/tcp_vegas.c
浏览文件 @
c280266a
...
...
@@ -40,18 +40,14 @@
#include "tcp_vegas.h"
/* Default values of the Vegas variables, in fixed-point representation
* with V_PARAM_SHIFT bits to the right of the binary point.
*/
#define V_PARAM_SHIFT 1
static
int
alpha
=
2
<<
V_PARAM_SHIFT
;
static
int
beta
=
4
<<
V_PARAM_SHIFT
;
static
int
gamma
=
1
<<
V_PARAM_SHIFT
;
static
int
alpha
=
2
;
static
int
beta
=
4
;
static
int
gamma
=
1
;
module_param
(
alpha
,
int
,
0644
);
MODULE_PARM_DESC
(
alpha
,
"lower bound of packets in network
(scale by 2)
"
);
MODULE_PARM_DESC
(
alpha
,
"lower bound of packets in network"
);
module_param
(
beta
,
int
,
0644
);
MODULE_PARM_DESC
(
beta
,
"upper bound of packets in network
(scale by 2)
"
);
MODULE_PARM_DESC
(
beta
,
"upper bound of packets in network"
);
module_param
(
gamma
,
int
,
0644
);
MODULE_PARM_DESC
(
gamma
,
"limit on increase (scale by 2)"
);
...
...
@@ -172,49 +168,13 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
return
;
}
/* The key players are v_beg_snd_una and v_beg_snd_nxt.
*
* These are so named because they represent the approximate values
* of snd_una and snd_nxt at the beginning of the current RTT. More
* precisely, they represent the amount of data sent during the RTT.
* At the end of the RTT, when we receive an ACK for v_beg_snd_nxt,
* we will calculate that (v_beg_snd_nxt - v_beg_snd_una) outstanding
* bytes of data have been ACKed during the course of the RTT, giving
* an "actual" rate of:
*
* (v_beg_snd_nxt - v_beg_snd_una) / (rtt duration)
*
* Unfortunately, v_beg_snd_una is not exactly equal to snd_una,
* because delayed ACKs can cover more than one segment, so they
* don't line up nicely with the boundaries of RTTs.
*
* Another unfortunate fact of life is that delayed ACKs delay the
* advance of the left edge of our send window, so that the number
* of bytes we send in an RTT is often less than our cwnd will allow.
* So we keep track of our cwnd separately, in v_beg_snd_cwnd.
*/
if
(
after
(
ack
,
vegas
->
beg_snd_nxt
))
{
/* Do the Vegas once-per-RTT cwnd adjustment. */
u32
old_wnd
,
old_snd_cwnd
;
/* Here old_wnd is essentially the window of data that was
* sent during the previous RTT, and has all
* been acknowledged in the course of the RTT that ended
* with the ACK we just received. Likewise, old_snd_cwnd
* is the cwnd during the previous RTT.
*/
old_wnd
=
(
vegas
->
beg_snd_nxt
-
vegas
->
beg_snd_una
)
/
tp
->
mss_cache
;
old_snd_cwnd
=
vegas
->
beg_snd_cwnd
;
/* Save the extent of the current window so we can use this
* at the end of the next RTT.
*/
vegas
->
beg_snd_una
=
vegas
->
beg_snd_nxt
;
vegas
->
beg_snd_nxt
=
tp
->
snd_nxt
;
vegas
->
beg_snd_cwnd
=
tp
->
snd_cwnd
;
/* We do the Vegas calculations only if we got enough RTT
* samples that we can be reasonably sure that we got
...
...
@@ -252,22 +212,14 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
*
* This is:
* (actual rate in segments) * baseRTT
* We keep it as a fixed point number with
* V_PARAM_SHIFT bits to the right of the binary point.
*/
target_cwnd
=
((
u64
)
old_wnd
*
vegas
->
baseRTT
);
target_cwnd
<<=
V_PARAM_SHIFT
;
do_div
(
target_cwnd
,
rtt
);
target_cwnd
=
tp
->
snd_cwnd
*
vegas
->
baseRTT
/
rtt
;
/* Calculate the difference between the window we had,
* and the window we would like to have. This quantity
* is the "Diff" from the Arizona Vegas papers.
*
* Again, this is a fixed point number with
* V_PARAM_SHIFT bits to the right of the binary
* point.
*/
diff
=
(
old_wnd
<<
V_PARAM_SHIFT
)
-
target_cwnd
;
diff
=
tp
->
snd_cwnd
*
(
rtt
-
vegas
->
baseRTT
)
/
vegas
->
baseRTT
;
if
(
diff
>
gamma
&&
tp
->
snd_ssthresh
>
2
)
{
/* Going too fast. Time to slow down
...
...
@@ -282,16 +234,13 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
* truncation robs us of full link
* utilization.
*/
tp
->
snd_cwnd
=
min
(
tp
->
snd_cwnd
,
((
u32
)
target_cwnd
>>
V_PARAM_SHIFT
)
+
1
);
tp
->
snd_cwnd
=
min
(
tp
->
snd_cwnd
,
(
u32
)
target_cwnd
+
1
);
}
else
if
(
tp
->
snd_cwnd
<=
tp
->
snd_ssthresh
)
{
/* Slow start. */
tcp_slow_start
(
tp
);
}
else
{
/* Congestion avoidance. */
u32
next_snd_cwnd
;
/* Figure out where we would like cwnd
* to be.
...
...
@@ -300,26 +249,17 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
/* The old window was too fast, so
* we slow down.
*/
next_snd_cwnd
=
old_snd_cwnd
-
1
;
tp
->
snd_cwnd
--
;
}
else
if
(
diff
<
alpha
)
{
/* We don't have enough extra packets
* in the network, so speed up.
*/
next_snd_cwnd
=
old_snd_cwnd
+
1
;
tp
->
snd_cwnd
++
;
}
else
{
/* Sending just as fast as we
* should be.
*/
next_snd_cwnd
=
old_snd_cwnd
;
}
/* Adjust cwnd upward or downward, toward the
* desired value.
*/
if
(
next_snd_cwnd
>
tp
->
snd_cwnd
)
tp
->
snd_cwnd
++
;
else
if
(
next_snd_cwnd
<
tp
->
snd_cwnd
)
tp
->
snd_cwnd
--
;
}
if
(
tp
->
snd_cwnd
<
2
)
...
...
net/ipv6/ndisc.c
浏览文件 @
c280266a
...
...
@@ -912,8 +912,13 @@ static void ndisc_recv_na(struct sk_buff *skb)
is invalid, but ndisc specs say nothing
about it. It could be misconfiguration, or
an smart proxy agent tries to help us :-)
We should not print the error if NA has been
received from loopback - it is just our own
unsolicited advertisement.
*/
ND_PRINTK1
(
KERN_WARNING
if
(
skb
->
pkt_type
!=
PACKET_LOOPBACK
)
ND_PRINTK1
(
KERN_WARNING
"ICMPv6 NA: someone advertises our address on %s!
\n
"
,
ifp
->
idev
->
dev
->
name
);
in6_ifa_put
(
ifp
);
...
...
net/netlabel/netlabel_unlabeled.c
浏览文件 @
c280266a
...
...
@@ -562,7 +562,6 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
const
struct
in_addr
*
mask
,
struct
netlbl_audit
*
audit_info
)
{
int
ret_val
=
0
;
struct
netlbl_af4list
*
list_entry
;
struct
netlbl_unlhsh_addr4
*
entry
;
struct
audit_buffer
*
audit_buf
;
...
...
@@ -577,7 +576,7 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
if
(
list_entry
!=
NULL
)
entry
=
netlbl_unlhsh_addr4_entry
(
list_entry
);
else
ret_val
=
-
ENOENT
;
entry
=
NULL
;
audit_buf
=
netlbl_audit_start_common
(
AUDIT_MAC_UNLBL_STCDEL
,
audit_info
);
...
...
@@ -588,19 +587,21 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
addr
->
s_addr
,
mask
->
s_addr
);
if
(
dev
!=
NULL
)
dev_put
(
dev
);
if
(
entry
&&
security_secid_to_secctx
(
entry
->
secid
,
&
secctx
,
&
secctx_len
)
==
0
)
{
if
(
entry
!=
NULL
&&
security_secid_to_secctx
(
entry
->
secid
,
&
secctx
,
&
secctx_len
)
==
0
)
{
audit_log_format
(
audit_buf
,
" sec_obj=%s"
,
secctx
);
security_release_secctx
(
secctx
,
secctx_len
);
}
audit_log_format
(
audit_buf
,
" res=%u"
,
ret_val
==
0
?
1
:
0
);
audit_log_format
(
audit_buf
,
" res=%u"
,
entry
!=
NULL
?
1
:
0
);
audit_log_end
(
audit_buf
);
}
if
(
ret_val
==
0
)
call_rcu
(
&
entry
->
rcu
,
netlbl_unlhsh_free_addr4
);
return
ret_val
;
if
(
entry
==
NULL
)
return
-
ENOENT
;
call_rcu
(
&
entry
->
rcu
,
netlbl_unlhsh_free_addr4
);
return
0
;
}
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
...
...
@@ -624,7 +625,6 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
const
struct
in6_addr
*
mask
,
struct
netlbl_audit
*
audit_info
)
{
int
ret_val
=
0
;
struct
netlbl_af6list
*
list_entry
;
struct
netlbl_unlhsh_addr6
*
entry
;
struct
audit_buffer
*
audit_buf
;
...
...
@@ -638,7 +638,7 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
if
(
list_entry
!=
NULL
)
entry
=
netlbl_unlhsh_addr6_entry
(
list_entry
);
else
ret_val
=
-
ENOENT
;
entry
=
NULL
;
audit_buf
=
netlbl_audit_start_common
(
AUDIT_MAC_UNLBL_STCDEL
,
audit_info
);
...
...
@@ -649,19 +649,21 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
addr
,
mask
);
if
(
dev
!=
NULL
)
dev_put
(
dev
);
if
(
entry
&&
security_secid_to_secctx
(
entry
->
secid
,
&
secctx
,
&
secctx_len
)
==
0
)
{
if
(
entry
!=
NULL
&&
security_secid_to_secctx
(
entry
->
secid
,
&
secctx
,
&
secctx_len
)
==
0
)
{
audit_log_format
(
audit_buf
,
" sec_obj=%s"
,
secctx
);
security_release_secctx
(
secctx
,
secctx_len
);
}
audit_log_format
(
audit_buf
,
" res=%u"
,
ret_val
==
0
?
1
:
0
);
audit_log_format
(
audit_buf
,
" res=%u"
,
entry
!=
NULL
?
1
:
0
);
audit_log_end
(
audit_buf
);
}
if
(
ret_val
==
0
)
call_rcu
(
&
entry
->
rcu
,
netlbl_unlhsh_free_addr6
);
return
ret_val
;
if
(
entry
==
NULL
)
return
-
ENOENT
;
call_rcu
(
&
entry
->
rcu
,
netlbl_unlhsh_free_addr6
);
return
0
;
}
#endif
/* IPv6 */
...
...
net/phonet/pep-gprs.c
浏览文件 @
c280266a
...
...
@@ -155,12 +155,13 @@ static void gprs_data_ready(struct sock *sk, int len)
static
void
gprs_write_space
(
struct
sock
*
sk
)
{
struct
gprs_dev
*
dev
=
sk
->
sk_user_data
;
struct
net_device
*
net
=
dev
->
net
;
unsigned
credits
=
pep_writeable
(
sk
);
spin_lock_bh
(
&
dev
->
tx_lock
);
dev
->
tx_max
=
credits
;
if
(
credits
>
skb_queue_len
(
&
dev
->
tx_queue
))
netif_wake_queue
(
dev
->
net
);
if
(
credits
>
skb_queue_len
(
&
dev
->
tx_queue
)
&&
netif_running
(
net
)
)
netif_wake_queue
(
net
);
spin_unlock_bh
(
&
dev
->
tx_lock
);
}
...
...
@@ -168,6 +169,23 @@ static void gprs_write_space(struct sock *sk)
* Network device callbacks
*/
static
int
gprs_open
(
struct
net_device
*
dev
)
{
struct
gprs_dev
*
gp
=
netdev_priv
(
dev
);
gprs_write_space
(
gp
->
sk
);
return
0
;
}
static
int
gprs_close
(
struct
net_device
*
dev
)
{
struct
gprs_dev
*
gp
=
netdev_priv
(
dev
);
netif_stop_queue
(
dev
);
flush_work
(
&
gp
->
tx_work
);
return
0
;
}
static
int
gprs_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
net
)
{
struct
gprs_dev
*
dev
=
netdev_priv
(
net
);
...
...
@@ -254,6 +272,8 @@ static void gprs_setup(struct net_device *net)
net
->
tx_queue_len
=
10
;
net
->
destructor
=
free_netdev
;
net
->
open
=
gprs_open
;
net
->
stop
=
gprs_close
;
net
->
hard_start_xmit
=
gprs_xmit
;
/* mandatory */
net
->
change_mtu
=
gprs_set_mtu
;
net
->
get_stats
=
gprs_get_stats
;
...
...
@@ -318,7 +338,6 @@ int gprs_attach(struct sock *sk)
dev
->
sk
=
sk
;
printk
(
KERN_DEBUG
"%s: attached
\n
"
,
net
->
name
);
gprs_write_space
(
sk
);
/* kick off TX */
return
net
->
ifindex
;
out_rel:
...
...
@@ -341,7 +360,5 @@ void gprs_detach(struct sock *sk)
printk
(
KERN_DEBUG
"%s: detached
\n
"
,
net
->
name
);
unregister_netdev
(
net
);
flush_scheduled_work
();
sock_put
(
sk
);
skb_queue_purge
(
&
dev
->
tx_queue
);
}
net/sched/sch_netem.c
浏览文件 @
c280266a
...
...
@@ -46,9 +46,6 @@
layering other disciplines. It does not need to do bandwidth
control either since that can be handled by using token
bucket or other rate control.
The simulator is limited by the Linux timer resolution
and will create packet bursts on the HZ boundary (1ms).
*/
struct
netem_sched_data
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录