Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
2b1c4354
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2b1c4354
编写于
3月 20, 2009
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/virtio_net.c
上级
5e140dfc
170ebf85
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
108 addition
and
43 deletion
+108
-43
Documentation/filesystems/proc.txt
Documentation/filesystems/proc.txt
+7
-0
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/gigaset/bas-gigaset.c
+13
-3
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/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/tulip/tulip_core.c
drivers/net/tulip/tulip_core.c
+29
-16
drivers/net/virtio_net.c
drivers/net/virtio_net.c
+1
-0
net/core/dev.c
net/core/dev.c
+1
-1
net/ipv4/ip_fragment.c
net/ipv4/ip_fragment.c
+2
-1
net/ipv6/reassembly.c
net/ipv6/reassembly.c
+3
-4
net/ipv6/sit.c
net/ipv6/sit.c
+1
-1
net/sctp/endpointola.c
net/sctp/endpointola.c
+2
-1
未找到文件。
Documentation/filesystems/proc.txt
浏览文件 @
2b1c4354
...
...
@@ -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
------------------
...
...
drivers/isdn/gigaset/bas-gigaset.c
浏览文件 @
2b1c4354
...
...
@@ -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/bnx2.c
浏览文件 @
2b1c4354
...
...
@@ -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))
...
...
@@ -5855,9 +5855,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
);
...
...
@@ -5866,8 +5863,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
浏览文件 @
2b1c4354
...
...
@@ -3545,11 +3545,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/sh_eth.c
浏览文件 @
2b1c4354
...
...
@@ -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
浏览文件 @
2b1c4354
...
...
@@ -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
浏览文件 @
2b1c4354
...
...
@@ -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/tulip/tulip_core.c
浏览文件 @
2b1c4354
...
...
@@ -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/virtio_net.c
浏览文件 @
2b1c4354
...
...
@@ -953,6 +953,7 @@ static int virtnet_probe(struct virtio_device *vdev)
vi
->
status
=
VIRTIO_NET_S_LINK_UP
;
virtnet_update_status
(
vi
);
netif_carrier_on
(
dev
);
pr_debug
(
"virtnet: registered device %s
\n
"
,
dev
->
name
);
return
0
;
...
...
net/core/dev.c
浏览文件 @
2b1c4354
...
...
@@ -2712,7 +2712,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
浏览文件 @
2b1c4354
...
...
@@ -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/reassembly.c
浏览文件 @
2b1c4354
...
...
@@ -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
浏览文件 @
2b1c4354
...
...
@@ -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/sctp/endpointola.c
浏览文件 @
2b1c4354
...
...
@@ -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
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录