Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
b6d98422
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b6d98422
编写于
3月 25, 2009
作者:
I
Ingo Molnar
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'sched/cleanups'; commit 'v2.6.29' into sched/core
上级
67aa0f76
8e0ee43b
变更
49
隐藏空白更改
内联
并排
Showing
49 changed file
with
351 addition
and
150 deletion
+351
-150
Documentation/filesystems/ext2.txt
Documentation/filesystems/ext2.txt
+3
-2
Documentation/filesystems/proc.txt
Documentation/filesystems/proc.txt
+7
-0
Makefile
Makefile
+5
-2
arch/powerpc/kernel/head_32.S
arch/powerpc/kernel/head_32.S
+9
-0
arch/sparc/include/asm/pil.h
arch/sparc/include/asm/pil.h
+1
-0
arch/sparc/kernel/kgdb_64.c
arch/sparc/kernel/kgdb_64.c
+1
-1
arch/sparc/kernel/pci_common.c
arch/sparc/kernel/pci_common.c
+1
-1
arch/sparc/kernel/ttable.S
arch/sparc/kernel/ttable.S
+6
-1
arch/sparc/mm/ultra.S
arch/sparc/mm/ultra.S
+2
-22
drivers/dca/dca-sysfs.c
drivers/dca/dca-sysfs.c
+21
-0
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/gigaset/bas-gigaset.c
+13
-3
drivers/net/Kconfig
drivers/net/Kconfig
+1
-1
drivers/net/benet/be.h
drivers/net/benet/be.h
+1
-0
drivers/net/benet/be_main.c
drivers/net/benet/be_main.c
+34
-26
drivers/net/bnx2.c
drivers/net/bnx2.c
+6
-6
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_main.c
+20
-5
drivers/net/dm9000.c
drivers/net/dm9000.c
+4
-2
drivers/net/dnet.c
drivers/net/dnet.c
+3
-3
drivers/net/sh_eth.c
drivers/net/sh_eth.c
+17
-3
drivers/net/sh_eth.h
drivers/net/sh_eth.h
+2
-2
drivers/net/smsc911x.c
drivers/net/smsc911x.c
+4
-0
drivers/net/sungem.c
drivers/net/sungem.c
+4
-5
drivers/net/tulip/tulip_core.c
drivers/net/tulip/tulip_core.c
+29
-16
drivers/net/ucc_geth.c
drivers/net/ucc_geth.c
+10
-24
drivers/net/ucc_geth.h
drivers/net/ucc_geth.h
+1
-2
drivers/net/virtio_net.c
drivers/net/virtio_net.c
+3
-0
drivers/net/wireless/ath9k/ath9k.h
drivers/net/wireless/ath9k/ath9k.h
+2
-2
drivers/net/wireless/ath9k/core.h
drivers/net/wireless/ath9k/core.h
+33
-0
drivers/net/wireless/ath9k/hw.c
drivers/net/wireless/ath9k/hw.c
+21
-1
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/main.c
+1
-0
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_mac.c
+6
-2
drivers/sbus/char/openprom.c
drivers/sbus/char/openprom.c
+1
-0
include/linux/dca.h
include/linux/dca.h
+20
-0
include/net/netfilter/nf_conntrack_core.h
include/net/netfilter/nf_conntrack_core.h
+2
-1
kernel/signal.c
kernel/signal.c
+8
-0
net/core/dev.c
net/core/dev.c
+4
-3
net/ipv4/ip_fragment.c
net/ipv4/ip_fragment.c
+2
-1
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/netfilter/nf_conntrack_reasm.c
+4
-4
net/ipv6/reassembly.c
net/ipv6/reassembly.c
+3
-4
net/ipv6/sit.c
net/ipv6/sit.c
+1
-1
net/mac80211/tx.c
net/mac80211/tx.c
+2
-0
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_core.c
+1
-1
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c
+1
-0
net/netfilter/nf_conntrack_proto_tcp.c
net/netfilter/nf_conntrack_proto_tcp.c
+2
-2
net/sctp/endpointola.c
net/sctp/endpointola.c
+2
-1
net/wireless/Kconfig
net/wireless/Kconfig
+10
-0
net/wireless/lib80211_crypt_ccmp.c
net/wireless/lib80211_crypt_ccmp.c
+2
-0
net/wireless/lib80211_crypt_tkip.c
net/wireless/lib80211_crypt_tkip.c
+4
-0
net/wireless/nl80211.c
net/wireless/nl80211.c
+11
-0
未找到文件。
Documentation/filesystems/ext2.txt
浏览文件 @
b6d98422
...
...
@@ -376,7 +376,8 @@ Implementations for:
Windows 95/98/NT/2000 http://www.chrysocome.net/explore2fs
Windows 95 (*) http://www.yipton.net/content.html#FSDEXT2
DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
OS/2 (
*
) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
OS/2 (
+
) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
RISC OS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/
(*) no longer actively developed/supported (as of Mar 2009)
(*) no longer actively developed/supported (as of Apr 2001)
(+) no longer actively developed/supported (as of Mar 2009)
Documentation/filesystems/proc.txt
浏览文件 @
b6d98422
...
...
@@ -1478,6 +1478,13 @@ of problems on the network like duplicate address or bad checksums. Normally,
this should be enabled, but if the problem persists the messages can be
disabled.
netdev_budget
-------------
Maximum number of packets taken from all interfaces in one polling cycle (NAPI
poll). In one polling cycle interfaces which are registered to polling are
probed in a round-robin manner. The limit of packets in one such probe can be
set per-device via sysfs class/net/<device>/weight .
netdev_max_backlog
------------------
...
...
Makefile
浏览文件 @
b6d98422
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
29
EXTRAVERSION
=
-rc8
NAME
=
Erotic Pickled Herring
EXTRAVERSION
=
NAME
=
Temporary Tasmanian Devil
# *DOCUMENTATION*
# To see a list of typical targets execute "make help"
...
...
@@ -569,6 +569,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
# disable invalid "can't wrap" optimzations for signed / pointers
KBUILD_CFLAGS
+=
$(
call
cc-option,-fwrapv
)
# revert to pre-gcc-4.4 behaviour of .eh_frame
KBUILD_CFLAGS
+=
$(
call
cc-option,-fno-dwarf2-cfi-asm
)
# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
# But warn user when we do so
warn-assign
=
\
...
...
arch/powerpc/kernel/head_32.S
浏览文件 @
b6d98422
...
...
@@ -513,6 +513,9 @@ InstructionTLBMiss:
rlwimi
r3
,
r3
,
32
-
1
,
31
,
31
/*
_PAGE_USER
->
PP
lsb
*/
ori
r1
,
r1
,
0xe04
/*
clear
out
reserved
bits
*/
andc
r1
,
r3
,
r1
/*
PP
=
user
?
(
rw
&d
irty
?
2
:
3
)
:
0
*/
BEGIN_FTR_SECTION
rlwinm
r1
,
r1
,
0
,
~
_PAGE_COHERENT
/*
clear
M
(
coherence
not
required
)
*/
END_FTR_SECTION_IFCLR
(
CPU_FTR_NEED_COHERENT
)
mtspr
SPRN_RPA
,
r1
mfspr
r3
,
SPRN_IMISS
tlbli
r3
...
...
@@ -587,6 +590,9 @@ DataLoadTLBMiss:
rlwimi
r3
,
r3
,
32
-
1
,
31
,
31
/*
_PAGE_USER
->
PP
lsb
*/
ori
r1
,
r1
,
0xe04
/*
clear
out
reserved
bits
*/
andc
r1
,
r3
,
r1
/*
PP
=
user
?
(
rw
&d
irty
?
2
:
3
)
:
0
*/
BEGIN_FTR_SECTION
rlwinm
r1
,
r1
,
0
,
~
_PAGE_COHERENT
/*
clear
M
(
coherence
not
required
)
*/
END_FTR_SECTION_IFCLR
(
CPU_FTR_NEED_COHERENT
)
mtspr
SPRN_RPA
,
r1
mfspr
r3
,
SPRN_DMISS
tlbld
r3
...
...
@@ -655,6 +661,9 @@ DataStoreTLBMiss:
rlwimi
r3
,
r3
,
32
-
1
,
30
,
30
/*
_PAGE_USER
->
PP
msb
*/
li
r1
,
0xe05
/*
clear
out
reserved
bits
&
PP
lsb
*/
andc
r1
,
r3
,
r1
/*
PP
=
user
?
2
:
0
*/
BEGIN_FTR_SECTION
rlwinm
r1
,
r1
,
0
,
~
_PAGE_COHERENT
/*
clear
M
(
coherence
not
required
)
*/
END_FTR_SECTION_IFCLR
(
CPU_FTR_NEED_COHERENT
)
mtspr
SPRN_RPA
,
r1
mfspr
r3
,
SPRN_DMISS
tlbld
r3
...
...
arch/sparc/include/asm/pil.h
浏览文件 @
b6d98422
...
...
@@ -24,6 +24,7 @@
#define PIL_DEVICE_IRQ 5
#define PIL_SMP_CALL_FUNC_SNGL 6
#define PIL_DEFERRED_PCR_WORK 7
#define PIL_KGDB_CAPTURE 8
#define PIL_NORMAL_MAX 14
#define PIL_NMI 15
...
...
arch/sparc/kernel/kgdb_64.c
浏览文件 @
b6d98422
...
...
@@ -108,7 +108,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
}
#ifdef CONFIG_SMP
void
smp_kgdb_capture_client
(
struct
pt_regs
*
regs
)
void
smp_kgdb_capture_client
(
int
irq
,
struct
pt_regs
*
regs
)
{
unsigned
long
flags
;
...
...
arch/sparc/kernel/pci_common.c
浏览文件 @
b6d98422
...
...
@@ -368,7 +368,7 @@ static void pci_register_iommu_region(struct pci_pbm_info *pbm)
const
u32
*
vdma
=
of_get_property
(
pbm
->
op
->
node
,
"virtual-dma"
,
NULL
);
if
(
vdma
)
{
struct
resource
*
rp
=
k
m
alloc
(
sizeof
(
*
rp
),
GFP_KERNEL
);
struct
resource
*
rp
=
k
z
alloc
(
sizeof
(
*
rp
),
GFP_KERNEL
);
if
(
!
rp
)
{
prom_printf
(
"Cannot allocate IOMMU resource.
\n
"
);
...
...
arch/sparc/kernel/ttable.S
浏览文件 @
b6d98422
...
...
@@ -64,7 +64,12 @@ tl0_irq6: TRAP_IRQ(smp_call_function_single_client, 6)
tl0_irq6
:
BTRAP
(0
x46
)
#endif
tl0_irq7
:
TRAP_IRQ
(
deferred_pcr_work_irq
,
7
)
tl0_irq8
:
BTRAP
(0
x48
)
BTRAP
(
0x49
)
#ifdef CONFIG_KGDB
tl0_irq8
:
TRAP_IRQ
(
smp_kgdb_capture_client
,
8
)
#else
tl0_irq8
:
BTRAP
(0
x48
)
#endif
tl0_irq9
:
BTRAP
(0
x49
)
tl0_irq10
:
BTRAP
(0
x4a
)
BTRAP
(
0x4b
)
BTRAP
(
0x4c
)
BTRAP
(
0x4d
)
tl0_irq14
:
TRAP_IRQ
(
timer_interrupt
,
14
)
tl0_irq15
:
TRAP_NMI_IRQ
(
perfctr_irq
,
15
)
...
...
arch/sparc/mm/ultra.S
浏览文件 @
b6d98422
...
...
@@ -679,28 +679,8 @@ xcall_new_mmu_context_version:
#ifdef CONFIG_KGDB
.
globl
xcall_kgdb_capture
xcall_kgdb_capture
:
661
:
rdpr
%
pstate
,
%
g2
wrpr
%
g2
,
PSTATE_IG
|
PSTATE_AG
,
%
pstate
.
section
.
sun4v_2insn_patch
,
"ax"
.
word
661
b
nop
nop
.
previous
rdpr
%
pil
,
%
g2
wrpr
%
g0
,
PIL_NORMAL_MAX
,
%
pil
sethi
%
hi
(
109
f
),
%
g7
ba
,
pt
%
xcc
,
etrap_irq
109
:
or
%
g7
,
%
lo
(
109
b
),
%
g7
#ifdef CONFIG_TRACE_IRQFLAGS
call
trace_hardirqs_off
nop
#endif
call
smp_kgdb_capture_client
add
%
sp
,
PTREGS_OFF
,
%
o0
/
*
Has
to
be
a
non
-
v9
branch
due
to
the
large
distance
.
*/
ba
rtrap_xcall
ldx
[%
sp
+
PTREGS_OFF
+
PT_V9_TSTATE
],
%
l1
wr
%
g0
,
(
1
<<
PIL_KGDB_CAPTURE
),
%
set_softint
retry
#endif
#endif /* CONFIG_SMP */
...
...
drivers/dca/dca-sysfs.c
浏览文件 @
b6d98422
/*
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or 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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* The full GNU General Public License is included in this distribution in the
* file called COPYING.
*/
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <linux/device.h>
...
...
drivers/isdn/gigaset/bas-gigaset.c
浏览文件 @
b6d98422
...
...
@@ -46,6 +46,9 @@ MODULE_PARM_DESC(cidmode, "Call-ID mode");
/* length limit according to Siemens 3070usb-protokoll.doc ch. 2.1 */
#define IF_WRITEBUF 264
/* interrupt pipe message size according to ibid. ch. 2.2 */
#define IP_MSGSIZE 3
/* Values for the Gigaset 307x */
#define USB_GIGA_VENDOR_ID 0x0681
#define USB_3070_PRODUCT_ID 0x0001
...
...
@@ -110,7 +113,7 @@ struct bas_cardstate {
unsigned
char
*
rcvbuf
;
/* AT reply receive buffer */
struct
urb
*
urb_int_in
;
/* URB for interrupt pipe */
unsigned
char
int_in_buf
[
3
]
;
unsigned
char
*
int_in_buf
;
spinlock_t
lock
;
/* locks all following */
int
basstate
;
/* bitmap (BS_*) */
...
...
@@ -657,7 +660,7 @@ static void read_int_callback(struct urb *urb)
}
/* drop incomplete packets even if the missing bytes wouldn't matter */
if
(
unlikely
(
urb
->
actual_length
<
3
))
{
if
(
unlikely
(
urb
->
actual_length
<
IP_MSGSIZE
))
{
dev_warn
(
cs
->
dev
,
"incomplete interrupt packet (%d bytes)
\n
"
,
urb
->
actual_length
);
goto
resubmit
;
...
...
@@ -2127,6 +2130,7 @@ static void gigaset_reinitbcshw(struct bc_state *bcs)
static
void
gigaset_freecshw
(
struct
cardstate
*
cs
)
{
/* timers, URBs and rcvbuf are disposed of in disconnect */
kfree
(
cs
->
hw
.
bas
->
int_in_buf
);
kfree
(
cs
->
hw
.
bas
);
cs
->
hw
.
bas
=
NULL
;
}
...
...
@@ -2140,6 +2144,12 @@ static int gigaset_initcshw(struct cardstate *cs)
pr_err
(
"out of memory
\n
"
);
return
0
;
}
ucs
->
int_in_buf
=
kmalloc
(
IP_MSGSIZE
,
GFP_KERNEL
);
if
(
!
ucs
->
int_in_buf
)
{
kfree
(
ucs
);
pr_err
(
"out of memory
\n
"
);
return
0
;
}
ucs
->
urb_cmd_in
=
NULL
;
ucs
->
urb_cmd_out
=
NULL
;
...
...
@@ -2292,7 +2302,7 @@ static int gigaset_probe(struct usb_interface *interface,
usb_fill_int_urb
(
ucs
->
urb_int_in
,
udev
,
usb_rcvintpipe
(
udev
,
(
endpoint
->
bEndpointAddress
)
&
0x0f
),
ucs
->
int_in_buf
,
3
,
read_int_callback
,
cs
,
ucs
->
int_in_buf
,
IP_MSGSIZE
,
read_int_callback
,
cs
,
endpoint
->
bInterval
);
if
((
rc
=
usb_submit_urb
(
ucs
->
urb_int_in
,
GFP_KERNEL
))
!=
0
)
{
dev_err
(
cs
->
dev
,
"could not submit interrupt URB: %s
\n
"
,
...
...
drivers/net/Kconfig
浏览文件 @
b6d98422
...
...
@@ -1042,7 +1042,7 @@ config NI65
config DNET
tristate "Dave ethernet support (DNET)"
depends on NET_ETHERNET
depends on NET_ETHERNET
&& HAS_IOMEM
select PHYLIB
help
The Dave ethernet interface (DNET) is found on Qong Board FPGA.
...
...
drivers/net/benet/be.h
浏览文件 @
b6d98422
...
...
@@ -194,6 +194,7 @@ struct be_adapter {
struct
be_eq_obj
rx_eq
;
struct
be_rx_obj
rx_obj
;
u32
big_page_size
;
/* Compounded page size shared by rx wrbs */
bool
rx_post_starved
;
/* Zero rx frags have been posted to BE */
struct
vlan_group
*
vlan_grp
;
u16
num_vlans
;
...
...
drivers/net/benet/be_main.c
浏览文件 @
b6d98422
...
...
@@ -273,26 +273,6 @@ static void be_rx_eqd_update(struct be_adapter *adapter)
rx_eq
->
cur_eqd
=
eqd
;
}
static
void
be_worker
(
struct
work_struct
*
work
)
{
struct
be_adapter
*
adapter
=
container_of
(
work
,
struct
be_adapter
,
work
.
work
);
int
status
;
/* Check link */
be_link_status_update
(
adapter
);
/* Get Stats */
status
=
be_cmd_get_stats
(
&
adapter
->
ctrl
,
&
adapter
->
stats
.
cmd
);
if
(
!
status
)
netdev_stats_update
(
adapter
);
/* Set EQ delay */
be_rx_eqd_update
(
adapter
);
schedule_delayed_work
(
&
adapter
->
work
,
msecs_to_jiffies
(
1000
));
}
static
struct
net_device_stats
*
be_get_stats
(
struct
net_device
*
dev
)
{
struct
be_adapter
*
adapter
=
netdev_priv
(
dev
);
...
...
@@ -493,7 +473,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
* program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured,
* set the BE in promiscuous VLAN mode.
*/
static
void
be_vid
s
_config
(
struct
net_device
*
netdev
)
static
void
be_vid_config
(
struct
net_device
*
netdev
)
{
struct
be_adapter
*
adapter
=
netdev_priv
(
netdev
);
u16
vtag
[
BE_NUM_VLANS_SUPPORTED
];
...
...
@@ -536,7 +516,7 @@ static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
adapter
->
num_vlans
++
;
adapter
->
vlan_tag
[
vid
]
=
1
;
be_vid
s
_config
(
netdev
);
be_vid_config
(
netdev
);
}
static
void
be_vlan_rem_vid
(
struct
net_device
*
netdev
,
u16
vid
)
...
...
@@ -547,7 +527,7 @@ static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
adapter
->
vlan_tag
[
vid
]
=
0
;
vlan_group_set_device
(
adapter
->
vlan_grp
,
vid
,
NULL
);
be_vid
s
_config
(
netdev
);
be_vid_config
(
netdev
);
}
static
void
be_set_multicast_filter
(
struct
net_device
*
netdev
)
...
...
@@ -900,8 +880,11 @@ static void be_post_rx_frags(struct be_adapter *adapter)
page_info
->
last_page_user
=
true
;
if
(
posted
)
{
be_rxq_notify
(
&
adapter
->
ctrl
,
rxq
->
id
,
posted
);
atomic_add
(
posted
,
&
rxq
->
used
);
be_rxq_notify
(
&
adapter
->
ctrl
,
rxq
->
id
,
posted
);
}
else
if
(
atomic_read
(
&
rxq
->
used
)
==
0
)
{
/* Let be_worker replenish when memory is available */
adapter
->
rx_post_starved
=
true
;
}
return
;
...
...
@@ -1305,6 +1288,31 @@ int be_poll_tx(struct napi_struct *napi, int budget)
return
1
;
}
static
void
be_worker
(
struct
work_struct
*
work
)
{
struct
be_adapter
*
adapter
=
container_of
(
work
,
struct
be_adapter
,
work
.
work
);
int
status
;
/* Check link */
be_link_status_update
(
adapter
);
/* Get Stats */
status
=
be_cmd_get_stats
(
&
adapter
->
ctrl
,
&
adapter
->
stats
.
cmd
);
if
(
!
status
)
netdev_stats_update
(
adapter
);
/* Set EQ delay */
be_rx_eqd_update
(
adapter
);
if
(
adapter
->
rx_post_starved
)
{
adapter
->
rx_post_starved
=
false
;
be_post_rx_frags
(
adapter
);
}
schedule_delayed_work
(
&
adapter
->
work
,
msecs_to_jiffies
(
1000
));
}
static
void
be_msix_enable
(
struct
be_adapter
*
adapter
)
{
int
i
,
status
;
...
...
@@ -1422,6 +1430,8 @@ static int be_open(struct net_device *netdev)
if
(
status
!=
0
)
goto
do_none
;
be_vid_config
(
netdev
);
status
=
be_cmd_set_flow_control
(
ctrl
,
true
,
true
);
if
(
status
!=
0
)
goto
if_destroy
;
...
...
@@ -1856,8 +1866,6 @@ static int be_resume(struct pci_dev *pdev)
pci_set_power_state
(
pdev
,
0
);
pci_restore_state
(
pdev
);
be_vids_config
(
netdev
);
if
(
netif_running
(
netdev
))
{
rtnl_lock
();
be_open
(
netdev
);
...
...
drivers/net/bnx2.c
浏览文件 @
b6d98422
...
...
@@ -57,8 +57,8 @@
#define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "1.9.
2
"
#define DRV_MODULE_RELDATE "
Feb 11
, 2009"
#define DRV_MODULE_VERSION "1.9.
3
"
#define DRV_MODULE_RELDATE "
March 17
, 2009"
#define RUN_AT(x) (jiffies + (x))
...
...
@@ -5843,9 +5843,6 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
for
(
i
=
0
;
i
<
BNX2_MAX_MSIX_VEC
;
i
++
)
{
msix_ent
[
i
].
entry
=
i
;
msix_ent
[
i
].
vector
=
0
;
snprintf
(
bp
->
irq_tbl
[
i
].
name
,
len
,
"%s-%d"
,
dev
->
name
,
i
);
bp
->
irq_tbl
[
i
].
handler
=
bnx2_msi_1shot
;
}
rc
=
pci_enable_msix
(
bp
->
pdev
,
msix_ent
,
BNX2_MAX_MSIX_VEC
);
...
...
@@ -5854,8 +5851,11 @@ bnx2_enable_msix(struct bnx2 *bp, int msix_vecs)
bp
->
irq_nvecs
=
msix_vecs
;
bp
->
flags
|=
BNX2_FLAG_USING_MSIX
|
BNX2_FLAG_ONE_SHOT_MSI
;
for
(
i
=
0
;
i
<
BNX2_MAX_MSIX_VEC
;
i
++
)
for
(
i
=
0
;
i
<
BNX2_MAX_MSIX_VEC
;
i
++
)
{
bp
->
irq_tbl
[
i
].
vector
=
msix_ent
[
i
].
vector
;
snprintf
(
bp
->
irq_tbl
[
i
].
name
,
len
,
"%s-%d"
,
dev
->
name
,
i
);
bp
->
irq_tbl
[
i
].
handler
=
bnx2_msi_1shot
;
}
}
static
void
...
...
drivers/net/bonding/bond_main.c
浏览文件 @
b6d98422
...
...
@@ -3537,11 +3537,26 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
}
break
;
case
NETDEV_CHANGE
:
/*
* TODO: is this what we get if somebody
* sets up a hierarchical bond, then rmmod's
* one of the slave bonding devices?
*/
if
(
bond
->
params
.
mode
==
BOND_MODE_8023AD
||
bond_is_lb
(
bond
))
{
struct
slave
*
slave
;
slave
=
bond_get_slave_by_dev
(
bond
,
slave_dev
);
if
(
slave
)
{
u16
old_speed
=
slave
->
speed
;
u16
old_duplex
=
slave
->
duplex
;
bond_update_speed_duplex
(
slave
);
if
(
bond_is_lb
(
bond
))
break
;
if
(
old_speed
!=
slave
->
speed
)
bond_3ad_adapter_speed_changed
(
slave
);
if
(
old_duplex
!=
slave
->
duplex
)
bond_3ad_adapter_duplex_changed
(
slave
);
}
}
break
;
case
NETDEV_DOWN
:
/*
...
...
drivers/net/dm9000.c
浏览文件 @
b6d98422
...
...
@@ -930,13 +930,15 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
struct
net_device
*
dev
=
dev_id
;
board_info_t
*
db
=
netdev_priv
(
dev
);
int
int_status
;
unsigned
long
flags
;
u8
reg_save
;
dm9000_dbg
(
db
,
3
,
"entering %s
\n
"
,
__func__
);
/* A real interrupt coming */
spin_lock
(
&
db
->
lock
);
/* holders of db->lock must always block IRQs */
spin_lock_irqsave
(
&
db
->
lock
,
flags
);
/* Save previous register address */
reg_save
=
readb
(
db
->
io_addr
);
...
...
@@ -972,7 +974,7 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
/* Restore previous register address */
writeb
(
reg_save
,
db
->
io_addr
);
spin_unlock
(
&
db
->
lock
);
spin_unlock
_irqrestore
(
&
db
->
lock
,
flags
);
return
IRQ_HANDLED
;
}
...
...
drivers/net/dnet.c
浏览文件 @
b6d98422
...
...
@@ -280,11 +280,11 @@ static int dnet_mii_probe(struct net_device *dev)
/* attach the mac to the phy */
if
(
bp
->
capabilities
&
DNET_HAS_RMII
)
{
phydev
=
phy_connect
(
dev
,
phydev
->
dev
.
bus_id
,
phydev
=
phy_connect
(
dev
,
dev_name
(
&
phydev
->
dev
)
,
&
dnet_handle_link_change
,
0
,
PHY_INTERFACE_MODE_RMII
);
}
else
{
phydev
=
phy_connect
(
dev
,
phydev
->
dev
.
bus_id
,
phydev
=
phy_connect
(
dev
,
dev_name
(
&
phydev
->
dev
)
,
&
dnet_handle_link_change
,
0
,
PHY_INTERFACE_MODE_MII
);
}
...
...
@@ -927,7 +927,7 @@ static int __devinit dnet_probe(struct platform_device *pdev)
phydev
=
bp
->
phy_dev
;
dev_info
(
&
pdev
->
dev
,
"attached PHY driver [%s] "
"(mii_bus:phy_addr=%s, irq=%d)
\n
"
,
phydev
->
drv
->
name
,
phydev
->
dev
.
bus_id
,
phydev
->
irq
);
phydev
->
drv
->
name
,
dev_name
(
&
phydev
->
dev
)
,
phydev
->
irq
);
return
0
;
...
...
drivers/net/sh_eth.c
浏览文件 @
b6d98422
...
...
@@ -687,6 +687,7 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev)
{
struct
net_device
*
ndev
=
netdev
;
struct
sh_eth_private
*
mdp
=
netdev_priv
(
ndev
);
irqreturn_t
ret
=
IRQ_NONE
;
u32
ioaddr
,
boguscnt
=
RX_RING_SIZE
;
u32
intr_status
=
0
;
...
...
@@ -696,7 +697,13 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev)
/* Get interrpt stat */
intr_status
=
ctrl_inl
(
ioaddr
+
EESR
);
/* Clear interrupt */
ctrl_outl
(
intr_status
,
ioaddr
+
EESR
);
if
(
intr_status
&
(
EESR_FRC
|
EESR_RMAF
|
EESR_RRF
|
EESR_RTLF
|
EESR_RTSF
|
EESR_PRE
|
EESR_CERF
|
TX_CHECK
|
EESR_ERR_CHECK
))
{
ctrl_outl
(
intr_status
,
ioaddr
+
EESR
);
ret
=
IRQ_HANDLED
;
}
else
goto
other_irq
;
if
(
intr_status
&
(
EESR_FRC
|
/* Frame recv*/
EESR_RMAF
|
/* Multi cast address recv*/
...
...
@@ -723,9 +730,10 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev)
ndev
->
name
,
intr_status
);
}
other_irq:
spin_unlock
(
&
mdp
->
lock
);
return
IRQ_HANDLED
;
return
ret
;
}
static
void
sh_eth_timer
(
unsigned
long
data
)
...
...
@@ -844,7 +852,13 @@ static int sh_eth_open(struct net_device *ndev)
int
ret
=
0
;
struct
sh_eth_private
*
mdp
=
netdev_priv
(
ndev
);
ret
=
request_irq
(
ndev
->
irq
,
&
sh_eth_interrupt
,
0
,
ndev
->
name
,
ndev
);
ret
=
request_irq
(
ndev
->
irq
,
&
sh_eth_interrupt
,
#if defined(CONFIG_CPU_SUBTYPE_SH7763) || defined(CONFIG_CPU_SUBTYPE_SH7764)
IRQF_SHARED
,
#else
0
,
#endif
ndev
->
name
,
ndev
);
if
(
ret
)
{
printk
(
KERN_ERR
"Can not assign IRQ number to %s
\n
"
,
CARDNAME
);
return
ret
;
...
...
drivers/net/sh_eth.h
浏览文件 @
b6d98422
...
...
@@ -43,8 +43,8 @@
#define SH7763_SKB_ALIGN 32
/* Chip Base Address */
# define SH_TSU_ADDR
0xFF
E01800
# define ARSTR
0xFFE01800
# define SH_TSU_ADDR
0xFE
E01800
# define ARSTR
SH_TSU_ADDR
/* Chip Registers */
/* E-DMAC */
...
...
drivers/net/smsc911x.c
浏览文件 @
b6d98422
...
...
@@ -1225,6 +1225,10 @@ static int smsc911x_open(struct net_device *dev)
dev_info
(
&
dev
->
dev
,
"SMSC911x/921x identified at %#08lx, IRQ: %d
\n
"
,
(
unsigned
long
)
pdata
->
ioaddr
,
dev
->
irq
);
/* Reset the last known duplex and carrier */
pdata
->
last_duplex
=
-
1
;
pdata
->
last_carrier
=
-
1
;
/* Bring the PHY up */
phy_start
(
pdata
->
phy_dev
);
...
...
drivers/net/sungem.c
浏览文件 @
b6d98422
...
...
@@ -2998,8 +2998,11 @@ static const struct net_device_ops gem_netdev_ops = {
.
ndo_do_ioctl
=
gem_ioctl
,
.
ndo_tx_timeout
=
gem_tx_timeout
,
.
ndo_change_mtu
=
gem_change_mtu
,
.
ndo_set_mac_address
=
eth_mac_addr
,
.
ndo_validate_addr
=
eth_validate_addr
,
.
ndo_set_mac_address
=
gem_set_mac_address
,
#ifdef CONFIG_NET_POLL_CONTROLLER
.
ndo_poll_controller
=
gem_poll_controller
,
#endif
};
static
int
__devinit
gem_init_one
(
struct
pci_dev
*
pdev
,
...
...
@@ -3161,10 +3164,6 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
dev
->
watchdog_timeo
=
5
*
HZ
;
dev
->
irq
=
pdev
->
irq
;
dev
->
dma
=
0
;
dev
->
set_mac_address
=
gem_set_mac_address
;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
gem_poll_controller
;
#endif
/* Set that now, in case PM kicks in now */
pci_set_drvdata
(
pdev
,
dev
);
...
...
drivers/net/tulip/tulip_core.c
浏览文件 @
b6d98422
...
...
@@ -255,6 +255,7 @@ const char tulip_media_cap[32] =
static
void
tulip_tx_timeout
(
struct
net_device
*
dev
);
static
void
tulip_init_ring
(
struct
net_device
*
dev
);
static
void
tulip_free_ring
(
struct
net_device
*
dev
);
static
int
tulip_start_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
);
static
int
tulip_open
(
struct
net_device
*
dev
);
static
int
tulip_close
(
struct
net_device
*
dev
);
...
...
@@ -502,16 +503,21 @@ tulip_open(struct net_device *dev)
{
int
retval
;
if
((
retval
=
request_irq
(
dev
->
irq
,
&
tulip_interrupt
,
IRQF_SHARED
,
dev
->
name
,
dev
)))
return
retval
;
tulip_init_ring
(
dev
);
retval
=
request_irq
(
dev
->
irq
,
&
tulip_interrupt
,
IRQF_SHARED
,
dev
->
name
,
dev
);
if
(
retval
)
goto
free_ring
;
tulip_up
(
dev
);
netif_start_queue
(
dev
);
return
0
;
free_ring:
tulip_free_ring
(
dev
);
return
retval
;
}
...
...
@@ -768,23 +774,11 @@ static void tulip_down (struct net_device *dev)
tulip_set_power_state
(
tp
,
0
,
1
);
}
static
int
tulip_close
(
struct
net_device
*
dev
)
static
void
tulip_free_ring
(
struct
net_device
*
dev
)
{
struct
tulip_private
*
tp
=
netdev_priv
(
dev
);
void
__iomem
*
ioaddr
=
tp
->
base_addr
;
int
i
;
netif_stop_queue
(
dev
);
tulip_down
(
dev
);
if
(
tulip_debug
>
1
)
printk
(
KERN_DEBUG
"%s: Shutting down ethercard, status was %2.2x.
\n
"
,
dev
->
name
,
ioread32
(
ioaddr
+
CSR5
));
free_irq
(
dev
->
irq
,
dev
);
/* Free all the skbuffs in the Rx queue. */
for
(
i
=
0
;
i
<
RX_RING_SIZE
;
i
++
)
{
struct
sk_buff
*
skb
=
tp
->
rx_buffers
[
i
].
skb
;
...
...
@@ -803,6 +797,7 @@ static int tulip_close (struct net_device *dev)
dev_kfree_skb
(
skb
);
}
}
for
(
i
=
0
;
i
<
TX_RING_SIZE
;
i
++
)
{
struct
sk_buff
*
skb
=
tp
->
tx_buffers
[
i
].
skb
;
...
...
@@ -814,6 +809,24 @@ static int tulip_close (struct net_device *dev)
tp
->
tx_buffers
[
i
].
skb
=
NULL
;
tp
->
tx_buffers
[
i
].
mapping
=
0
;
}
}
static
int
tulip_close
(
struct
net_device
*
dev
)
{
struct
tulip_private
*
tp
=
netdev_priv
(
dev
);
void
__iomem
*
ioaddr
=
tp
->
base_addr
;
netif_stop_queue
(
dev
);
tulip_down
(
dev
);
if
(
tulip_debug
>
1
)
printk
(
KERN_DEBUG
"%s: Shutting down ethercard, status was %2.2x.
\n
"
,
dev
->
name
,
ioread32
(
ioaddr
+
CSR5
));
free_irq
(
dev
->
irq
,
dev
);
tulip_free_ring
(
dev
);
return
0
;
}
...
...
drivers/net/ucc_geth.c
浏览文件 @
b6d98422
...
...
@@ -1536,32 +1536,15 @@ static void adjust_link(struct net_device *dev)
static
int
init_phy
(
struct
net_device
*
dev
)
{
struct
ucc_geth_private
*
priv
=
netdev_priv
(
dev
);
struct
device_node
*
np
=
priv
->
node
;
struct
device_node
*
phy
,
*
mdio
;
const
phandle
*
ph
;
char
bus_name
[
MII_BUS_ID_SIZE
];
const
unsigned
int
*
id
;
struct
ucc_geth_info
*
ug_info
=
priv
->
ug_info
;
struct
phy_device
*
phydev
;
char
phy_id
[
BUS_ID_SIZE
];
priv
->
oldlink
=
0
;
priv
->
oldspeed
=
0
;
priv
->
oldduplex
=
-
1
;
ph
=
of_get_property
(
np
,
"phy-handle"
,
NULL
);
phy
=
of_find_node_by_phandle
(
*
ph
);
mdio
=
of_get_parent
(
phy
);
id
=
of_get_property
(
phy
,
"reg"
,
NULL
);
of_node_put
(
phy
);
of_node_put
(
mdio
);
uec_mdio_bus_name
(
bus_name
,
mdio
);
snprintf
(
phy_id
,
sizeof
(
phy_id
),
"%s:%02x"
,
bus_name
,
*
id
);
phydev
=
phy_connect
(
dev
,
phy_id
,
&
adjust_link
,
0
,
priv
->
phy_interface
);
phydev
=
phy_connect
(
dev
,
ug_info
->
phy_bus_id
,
&
adjust_link
,
0
,
priv
->
phy_interface
);
if
(
IS_ERR
(
phydev
))
{
printk
(
"%s: Could not attach to PHY
\n
"
,
dev
->
name
);
...
...
@@ -3629,10 +3612,12 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
ug_info
->
uf_info
.
irq
=
irq_of_parse_and_map
(
np
,
0
);
fixed_link
=
of_get_property
(
np
,
"fixed-link"
,
NULL
);
if
(
fixed_link
)
{
snprintf
(
ug_info
->
mdio_bus
,
MII_BUS_ID_SIZE
,
"0"
);
ug_info
->
phy_address
=
fixed_link
[
0
]
;
snprintf
(
ug_info
->
phy_bus_id
,
sizeof
(
ug_info
->
phy_bus_id
),
PHY_ID_FMT
,
"0"
,
fixed_link
[
0
])
;
phy
=
NULL
;
}
else
{
char
bus_name
[
MII_BUS_ID_SIZE
];
ph
=
of_get_property
(
np
,
"phy-handle"
,
NULL
);
phy
=
of_find_node_by_phandle
(
*
ph
);
...
...
@@ -3643,7 +3628,6 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
prop
=
of_get_property
(
phy
,
"reg"
,
NULL
);
if
(
prop
==
NULL
)
return
-
1
;
ug_info
->
phy_address
=
*
prop
;
/* Set the bus id */
mdio
=
of_get_parent
(
phy
);
...
...
@@ -3657,7 +3641,9 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
if
(
err
)
return
-
1
;
snprintf
(
ug_info
->
mdio_bus
,
MII_BUS_ID_SIZE
,
"%x"
,
res
.
start
);
uec_mdio_bus_name
(
bus_name
,
mdio
);
snprintf
(
ug_info
->
phy_bus_id
,
sizeof
(
ug_info
->
phy_bus_id
),
"%s:%02x"
,
bus_name
,
*
prop
);
}
/* get the phy interface type, or default to MII */
...
...
drivers/net/ucc_geth.h
浏览文件 @
b6d98422
...
...
@@ -1091,8 +1091,7 @@ struct ucc_geth_info {
u32
eventRegMask
;
u16
pausePeriod
;
u16
extensionField
;
u8
phy_address
;
char
mdio_bus
[
MII_BUS_ID_SIZE
];
char
phy_bus_id
[
BUS_ID_SIZE
];
u8
weightfactor
[
NUM_TX_QUEUES
];
u8
interruptcoalescingmaxvalue
[
NUM_RX_QUEUES
];
u8
l2qt
[
UCC_GETH_VLAN_PRIORITY_MAX
];
...
...
drivers/net/virtio_net.c
浏览文件 @
b6d98422
...
...
@@ -612,6 +612,7 @@ static struct ethtool_ops virtnet_ethtool_ops = {
.
set_tx_csum
=
virtnet_set_tx_csum
,
.
set_sg
=
ethtool_op_set_sg
,
.
set_tso
=
ethtool_op_set_tso
,
.
get_link
=
ethtool_op_get_link
,
};
#define MIN_MTU 68
...
...
@@ -739,6 +740,8 @@ static int virtnet_probe(struct virtio_device *vdev)
goto
unregister
;
}
netif_carrier_on
(
dev
);
pr_debug
(
"virtnet: registered device %s
\n
"
,
dev
->
name
);
return
0
;
...
...
drivers/net/wireless/ath9k/ath9k.h
浏览文件 @
b6d98422
...
...
@@ -587,8 +587,8 @@ struct ath9k_country_entry {
u8
iso
[
3
];
};
#define REG_WRITE(_ah, _reg, _val)
iowrite32(_val, _ah->ah_sh + _reg
)
#define REG_READ(_ah, _reg)
ioread32(_ah->ah_sh + _reg
)
#define REG_WRITE(_ah, _reg, _val)
ath9k_iowrite32((_ah), (_reg), (_val)
)
#define REG_READ(_ah, _reg)
ath9k_ioread32((_ah), (_reg)
)
#define SM(_v, _f) (((_v) << _f##_S) & _f)
#define MS(_v, _f) (((_v) & _f) >> _f##_S)
...
...
drivers/net/wireless/ath9k/core.h
浏览文件 @
b6d98422
...
...
@@ -701,6 +701,7 @@ struct ath_softc {
struct
ath_hal
*
sc_ah
;
void
__iomem
*
mem
;
spinlock_t
sc_resetlock
;
spinlock_t
sc_serial_rw
;
struct
mutex
mutex
;
u8
sc_curbssid
[
ETH_ALEN
];
...
...
@@ -751,4 +752,36 @@ int ath_get_hal_qnum(u16 queue, struct ath_softc *sc);
int
ath_get_mac80211_qnum
(
u32
queue
,
struct
ath_softc
*
sc
);
int
ath_cabq_update
(
struct
ath_softc
*
);
/*
* Read and write, they both share the same lock. We do this to serialize
* reads and writes on Atheros 802.11n PCI devices only. This is required
* as the FIFO on these devices can only accept sanely 2 requests. After
* that the device goes bananas. Serializing the reads/writes prevents this
* from happening.
*/
static
inline
void
ath9k_iowrite32
(
struct
ath_hal
*
ah
,
u32
reg_offset
,
u32
val
)
{
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_ON
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
iowrite32
(
val
,
ah
->
ah_sc
->
mem
+
reg_offset
);
spin_unlock_irqrestore
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
}
else
iowrite32
(
val
,
ah
->
ah_sc
->
mem
+
reg_offset
);
}
static
inline
unsigned
int
ath9k_ioread32
(
struct
ath_hal
*
ah
,
u32
reg_offset
)
{
u32
val
;
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_ON
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
val
=
ioread32
(
ah
->
ah_sc
->
mem
+
reg_offset
);
spin_unlock_irqrestore
(
&
ah
->
ah_sc
->
sc_serial_rw
,
flags
);
}
else
val
=
ioread32
(
ah
->
ah_sc
->
mem
+
reg_offset
);
return
val
;
}
#endif
/* CORE_H */
drivers/net/wireless/ath9k/hw.c
浏览文件 @
b6d98422
...
...
@@ -437,6 +437,25 @@ static void ath9k_hw_set_defaults(struct ath_hal *ah)
}
ah
->
ah_config
.
intr_mitigation
=
1
;
/*
* We need this for PCI devices only (Cardbus, PCI, miniPCI)
* _and_ if on non-uniprocessor systems (Multiprocessor/HT).
* This means we use it for all AR5416 devices, and the few
* minor PCI AR9280 devices out there.
*
* Serialization is required because these devices do not handle
* well the case of two concurrent reads/writes due to the latency
* involved. During one read/write another read/write can be issued
* on another CPU while the previous read/write may still be working
* on our hardware, if we hit this case the hardware poops in a loop.
* We prevent this by serializing reads and writes.
*
* This issue is not present on PCI-Express devices or pre-AR5416
* devices (legacy, 802.11abg).
*/
if
(
num_possible_cpus
()
>
1
)
ah
->
ah_config
.
serialize_regmode
=
SER_REG_MODE_AUTO
;
}
static
struct
ath_hal_5416
*
ath9k_hw_newstate
(
u16
devid
,
...
...
@@ -668,7 +687,8 @@ static struct ath_hal *ath9k_hw_do_attach(u16 devid, struct ath_softc *sc,
}
if
(
ah
->
ah_config
.
serialize_regmode
==
SER_REG_MODE_AUTO
)
{
if
(
ah
->
ah_macVersion
==
AR_SREV_VERSION_5416_PCI
)
{
if
(
ah
->
ah_macVersion
==
AR_SREV_VERSION_5416_PCI
||
(
AR_SREV_9280
(
ah
)
&&
!
ah
->
ah_isPciExpress
))
{
ah
->
ah_config
.
serialize_regmode
=
SER_REG_MODE_ON
;
}
else
{
...
...
drivers/net/wireless/ath9k/main.c
浏览文件 @
b6d98422
...
...
@@ -1336,6 +1336,7 @@ static int ath_init(u16 devid, struct ath_softc *sc)
printk
(
KERN_ERR
"Unable to create debugfs files
\n
"
);
spin_lock_init
(
&
sc
->
sc_resetlock
);
spin_lock_init
(
&
sc
->
sc_serial_rw
);
mutex_init
(
&
sc
->
mutex
);
tasklet_init
(
&
sc
->
intr_tq
,
ath9k_tasklet
,
(
unsigned
long
)
sc
);
tasklet_init
(
&
sc
->
bcon_tasklet
,
ath9k_beacon_tasklet
,
...
...
drivers/net/wireless/zd1211rw/zd_mac.c
浏览文件 @
b6d98422
...
...
@@ -575,13 +575,17 @@ static int zd_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
r
=
fill_ctrlset
(
mac
,
skb
);
if
(
r
)
return
r
;
goto
fail
;
info
->
rate_driver_data
[
0
]
=
hw
;
r
=
zd_usb_tx
(
&
mac
->
chip
.
usb
,
skb
);
if
(
r
)
return
r
;
goto
fail
;
return
0
;
fail:
dev_kfree_skb
(
skb
);
return
0
;
}
...
...
drivers/sbus/char/openprom.c
浏览文件 @
b6d98422
...
...
@@ -51,6 +51,7 @@ MODULE_AUTHOR("Thomas K. Dyas (tdyas@noc.rutgers.edu) and Eddie C. Dost (ecd@sk
MODULE_DESCRIPTION
(
"OPENPROM Configuration Driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_VERSION
(
"1.0"
);
MODULE_ALIAS_MISCDEV
(
SUN_OPENPROM_MINOR
);
/* Private data kept by the driver for each descriptor. */
typedef
struct
openprom_private_data
...
...
include/linux/dca.h
浏览文件 @
b6d98422
/*
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or 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.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* The full GNU General Public License is included in this distribution in the
* file called COPYING.
*/
#ifndef DCA_H
#define DCA_H
/* DCA Provider API */
...
...
include/net/netfilter/nf_conntrack_core.h
浏览文件 @
b6d98422
...
...
@@ -62,7 +62,8 @@ static inline int nf_conntrack_confirm(struct sk_buff *skb)
if
(
ct
&&
ct
!=
&
nf_conntrack_untracked
)
{
if
(
!
nf_ct_is_confirmed
(
ct
)
&&
!
nf_ct_is_dying
(
ct
))
ret
=
__nf_conntrack_confirm
(
skb
);
nf_ct_deliver_cached_events
(
ct
);
if
(
likely
(
ret
==
NF_ACCEPT
))
nf_ct_deliver_cached_events
(
ct
);
}
return
ret
;
}
...
...
kernel/signal.c
浏览文件 @
b6d98422
...
...
@@ -1575,7 +1575,15 @@ static void ptrace_stop(int exit_code, int clear_code, siginfo_t *info)
read_lock
(
&
tasklist_lock
);
if
(
may_ptrace_stop
())
{
do_notify_parent_cldstop
(
current
,
CLD_TRAPPED
);
/*
* Don't want to allow preemption here, because
* sys_ptrace() needs this task to be inactive.
*
* XXX: implement read_unlock_no_resched().
*/
preempt_disable
();
read_unlock
(
&
tasklist_lock
);
preempt_enable_no_resched
();
schedule
();
}
else
{
/*
...
...
net/core/dev.c
浏览文件 @
b6d98422
...
...
@@ -2588,9 +2588,9 @@ static int process_backlog(struct napi_struct *napi, int quota)
local_irq_disable
();
skb
=
__skb_dequeue
(
&
queue
->
input_pkt_queue
);
if
(
!
skb
)
{
__napi_complete
(
napi
);
local_irq_enable
();
break
;
napi_complete
(
napi
);
goto
out
;
}
local_irq_enable
();
...
...
@@ -2599,6 +2599,7 @@ static int process_backlog(struct napi_struct *napi, int quota)
napi_gro_flush
(
napi
);
out:
return
work
;
}
...
...
@@ -2671,7 +2672,7 @@ void netif_napi_del(struct napi_struct *napi)
struct
sk_buff
*
skb
,
*
next
;
list_del_init
(
&
napi
->
dev_list
);
kfree
(
napi
->
skb
);
kfree
_skb
(
napi
->
skb
);
for
(
skb
=
napi
->
gro_list
;
skb
;
skb
=
next
)
{
next
=
skb
->
next
;
...
...
net/ipv4/ip_fragment.c
浏览文件 @
b6d98422
...
...
@@ -463,6 +463,7 @@ static int ip_frag_queue(struct ipq *qp, struct sk_buff *skb)
static
int
ip_frag_reasm
(
struct
ipq
*
qp
,
struct
sk_buff
*
prev
,
struct
net_device
*
dev
)
{
struct
net
*
net
=
container_of
(
qp
->
q
.
net
,
struct
net
,
ipv4
.
frags
);
struct
iphdr
*
iph
;
struct
sk_buff
*
fp
,
*
head
=
qp
->
q
.
fragments
;
int
len
;
...
...
@@ -548,7 +549,7 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
iph
=
ip_hdr
(
head
);
iph
->
frag_off
=
0
;
iph
->
tot_len
=
htons
(
len
);
IP_INC_STATS_BH
(
dev_net
(
dev
)
,
IPSTATS_MIB_REASMOKS
);
IP_INC_STATS_BH
(
net
,
IPSTATS_MIB_REASMOKS
);
qp
->
q
.
fragments
=
NULL
;
return
0
;
...
...
net/ipv6/netfilter/nf_conntrack_reasm.c
浏览文件 @
b6d98422
...
...
@@ -528,14 +528,14 @@ find_prev_fhdr(struct sk_buff *skb, u8 *prevhdrp, int *prevhoff, int *fhoff)
if
(
!
ipv6_ext_hdr
(
nexthdr
))
{
return
-
1
;
}
if
(
len
<
(
int
)
sizeof
(
struct
ipv6_opt_hdr
))
{
pr_debug
(
"too short
\n
"
);
return
-
1
;
}
if
(
nexthdr
==
NEXTHDR_NONE
)
{
pr_debug
(
"next header is none
\n
"
);
return
-
1
;
}
if
(
len
<
(
int
)
sizeof
(
struct
ipv6_opt_hdr
))
{
pr_debug
(
"too short
\n
"
);
return
-
1
;
}
if
(
skb_copy_bits
(
skb
,
start
,
&
hdr
,
sizeof
(
hdr
)))
BUG
();
if
(
nexthdr
==
NEXTHDR_AUTH
)
...
...
net/ipv6/reassembly.c
浏览文件 @
b6d98422
...
...
@@ -452,6 +452,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
static
int
ip6_frag_reasm
(
struct
frag_queue
*
fq
,
struct
sk_buff
*
prev
,
struct
net_device
*
dev
)
{
struct
net
*
net
=
container_of
(
fq
->
q
.
net
,
struct
net
,
ipv6
.
frags
);
struct
sk_buff
*
fp
,
*
head
=
fq
->
q
.
fragments
;
int
payload_len
;
unsigned
int
nhoff
;
...
...
@@ -551,8 +552,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
head
->
csum
);
rcu_read_lock
();
IP6_INC_STATS_BH
(
dev_net
(
dev
),
__in6_dev_get
(
dev
),
IPSTATS_MIB_REASMOKS
);
IP6_INC_STATS_BH
(
net
,
__in6_dev_get
(
dev
),
IPSTATS_MIB_REASMOKS
);
rcu_read_unlock
();
fq
->
q
.
fragments
=
NULL
;
return
1
;
...
...
@@ -566,8 +566,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
printk
(
KERN_DEBUG
"ip6_frag_reasm: no memory for reassembly
\n
"
);
out_fail:
rcu_read_lock
();
IP6_INC_STATS_BH
(
dev_net
(
dev
),
__in6_dev_get
(
dev
),
IPSTATS_MIB_REASMFAILS
);
IP6_INC_STATS_BH
(
net
,
__in6_dev_get
(
dev
),
IPSTATS_MIB_REASMFAILS
);
rcu_read_unlock
();
return
-
1
;
}
...
...
net/ipv6/sit.c
浏览文件 @
b6d98422
...
...
@@ -188,9 +188,9 @@ static struct ip_tunnel * ipip6_tunnel_locate(struct net *net,
}
nt
=
netdev_priv
(
dev
);
ipip6_tunnel_init
(
dev
);
nt
->
parms
=
*
parms
;
ipip6_tunnel_init
(
dev
);
if
(
parms
->
i_flags
&
SIT_ISATAP
)
dev
->
priv_flags
|=
IFF_ISATAP
;
...
...
net/mac80211/tx.c
浏览文件 @
b6d98422
...
...
@@ -752,6 +752,8 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx)
skb_copy_queue_mapping
(
frag
,
first
);
frag
->
do_not_encrypt
=
first
->
do_not_encrypt
;
frag
->
dev
=
first
->
dev
;
frag
->
iif
=
first
->
iif
;
pos
+=
copylen
;
left
-=
copylen
;
...
...
net/netfilter/nf_conntrack_core.c
浏览文件 @
b6d98422
...
...
@@ -726,7 +726,7 @@ nf_conntrack_in(struct net *net, u_int8_t pf, unsigned int hooknum,
NF_CT_ASSERT
(
skb
->
nfct
);
ret
=
l4proto
->
packet
(
ct
,
skb
,
dataoff
,
ctinfo
,
pf
,
hooknum
);
if
(
ret
<
0
)
{
if
(
ret
<
=
0
)
{
/* Invalid: inverse of the return code tells
* the netfilter core what to do */
pr_debug
(
"nf_conntrack_in: Can't track with proto module
\n
"
);
...
...
net/netfilter/nf_conntrack_netlink.c
浏览文件 @
b6d98422
...
...
@@ -1780,6 +1780,7 @@ ctnetlink_create_expect(struct nlattr *cda[], u_int8_t u3, u32 pid, int report)
goto
out
;
}
exp
->
class
=
0
;
exp
->
expectfn
=
NULL
;
exp
->
flags
=
0
;
exp
->
master
=
ct
;
...
...
net/netfilter/nf_conntrack_proto_tcp.c
浏览文件 @
b6d98422
...
...
@@ -859,7 +859,7 @@ static int tcp_packet(struct nf_conn *ct,
*/
if
(
nf_ct_kill
(
ct
))
return
-
NF_REPEAT
;
return
-
NF_DROP
;
return
NF_DROP
;
}
/* Fall through */
case
TCP_CONNTRACK_IGNORE
:
...
...
@@ -892,7 +892,7 @@ static int tcp_packet(struct nf_conn *ct,
nf_log_packet
(
pf
,
0
,
skb
,
NULL
,
NULL
,
NULL
,
"nf_ct_tcp: killing out of sync session "
);
nf_ct_kill
(
ct
);
return
-
NF_DROP
;
return
NF_DROP
;
}
ct
->
proto
.
tcp
.
last_index
=
index
;
ct
->
proto
.
tcp
.
last_dir
=
dir
;
...
...
net/sctp/endpointola.c
浏览文件 @
b6d98422
...
...
@@ -111,7 +111,8 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
if
(
sctp_addip_enable
)
{
auth_chunks
->
chunks
[
0
]
=
SCTP_CID_ASCONF
;
auth_chunks
->
chunks
[
1
]
=
SCTP_CID_ASCONF_ACK
;
auth_chunks
->
param_hdr
.
length
+=
htons
(
2
);
auth_chunks
->
param_hdr
.
length
=
htons
(
sizeof
(
sctp_paramhdr_t
)
+
2
);
}
}
...
...
net/wireless/Kconfig
浏览文件 @
b6d98422
...
...
@@ -102,3 +102,13 @@ config LIB80211_CRYPT_CCMP
config LIB80211_CRYPT_TKIP
tristate
config LIB80211_DEBUG
bool "lib80211 debugging messages"
depends on LIB80211
default n
---help---
You can enable this if you want verbose debugging messages
from lib80211.
If unsure, say N.
net/wireless/lib80211_crypt_ccmp.c
浏览文件 @
b6d98422
...
...
@@ -337,6 +337,7 @@ static int lib80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
pos
+=
8
;
if
(
ccmp_replay_check
(
pn
,
key
->
rx_pn
))
{
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"CCMP: replay detected: STA=%pM "
"previous PN %02x%02x%02x%02x%02x%02x "
...
...
@@ -346,6 +347,7 @@ static int lib80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
key
->
rx_pn
[
3
],
key
->
rx_pn
[
4
],
key
->
rx_pn
[
5
],
pn
[
0
],
pn
[
1
],
pn
[
2
],
pn
[
3
],
pn
[
4
],
pn
[
5
]);
}
#endif
key
->
dot11RSNAStatsCCMPReplays
++
;
return
-
4
;
}
...
...
net/wireless/lib80211_crypt_tkip.c
浏览文件 @
b6d98422
...
...
@@ -465,12 +465,14 @@ static int lib80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
pos
+=
8
;
if
(
tkip_replay_check
(
iv32
,
iv16
,
tkey
->
rx_iv32
,
tkey
->
rx_iv16
))
{
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"TKIP: replay detected: STA=%pM"
" previous TSC %08x%04x received TSC "
"%08x%04x
\n
"
,
hdr
->
addr2
,
tkey
->
rx_iv32
,
tkey
->
rx_iv16
,
iv32
,
iv16
);
}
#endif
tkey
->
dot11RSNAStatsTKIPReplays
++
;
return
-
4
;
}
...
...
@@ -505,10 +507,12 @@ static int lib80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
* it needs to be recalculated for the next packet. */
tkey
->
rx_phase1_done
=
0
;
}
#ifdef CONFIG_LIB80211_DEBUG
if
(
net_ratelimit
())
{
printk
(
KERN_DEBUG
"TKIP: ICV error detected: STA="
"%pM
\n
"
,
hdr
->
addr2
);
}
#endif
tkey
->
dot11RSNAStatsTKIPICVErrors
++
;
return
-
5
;
}
...
...
net/wireless/nl80211.c
浏览文件 @
b6d98422
...
...
@@ -1908,6 +1908,11 @@ static int nl80211_get_mesh_params(struct sk_buff *skb,
if
(
err
)
return
err
;
if
(
!
drv
->
ops
->
get_mesh_params
)
{
err
=
-
EOPNOTSUPP
;
goto
out
;
}
/* Get the mesh params */
rtnl_lock
();
err
=
drv
->
ops
->
get_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cur_params
);
...
...
@@ -2017,6 +2022,11 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
if
(
err
)
return
err
;
if
(
!
drv
->
ops
->
set_mesh_params
)
{
err
=
-
EOPNOTSUPP
;
goto
out
;
}
/* This makes sure that there aren't more than 32 mesh config
* parameters (otherwise our bitfield scheme would not work.) */
BUILD_BUG_ON
(
NL80211_MESHCONF_ATTR_MAX
>
32
);
...
...
@@ -2061,6 +2071,7 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
err
=
drv
->
ops
->
set_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cfg
,
mask
);
rtnl_unlock
();
out:
/* cleanup */
cfg80211_put_dev
(
drv
);
dev_put
(
dev
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录