Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
d9993be6
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看板
提交
d9993be6
编写于
12月 20, 2010
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
上级
c4266263
aa3e2199
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
46 addition
and
31 deletion
+46
-31
drivers/net/typhoon.c
drivers/net/typhoon.c
+0
-1
drivers/net/usb/mcs7830.c
drivers/net/usb/mcs7830.c
+10
-2
include/net/ip6_route.h
include/net/ip6_route.h
+10
-0
include/net/sch_generic.h
include/net/sch_generic.h
+1
-5
net/ipv6/ip6_output.c
net/ipv6/ip6_output.c
+2
-10
net/ipv6/xfrm6_output.c
net/ipv6/xfrm6_output.c
+15
-1
net/sched/sch_sfq.c
net/sched/sch_sfq.c
+8
-12
未找到文件。
drivers/net/typhoon.c
浏览文件 @
d9993be6
...
...
@@ -1004,7 +1004,6 @@ typhoon_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
}
strcpy
(
info
->
driver
,
KBUILD_MODNAME
);
strcpy
(
info
->
version
,
UTS_RELEASE
);
strcpy
(
info
->
bus_info
,
pci_name
(
pci_dev
));
}
...
...
drivers/net/usb/mcs7830.c
浏览文件 @
d9993be6
/*
* MOSCHIP MCS7830 based USB 2.0 Ethernet Devices
* MOSCHIP MCS7830 based
(7730/7830/7832)
USB 2.0 Ethernet Devices
*
* based on usbnet.c, asix.c and the vendor provided mcs7830 driver
*
...
...
@@ -11,6 +11,9 @@
*
* Definitions gathered from MOSCHIP, Data Sheet_7830DA.pdf (thanks!).
*
* 2010-12-19: add 7832 USB PID ("functionality same as MCS7830"),
* per active notification by manufacturer
*
* TODO:
* - support HIF_REG_CONFIG_SLEEPMODE/HIF_REG_CONFIG_TXENABLE (via autopm?)
* - implement ethtool_ops get_pauseparam/set_pauseparam
...
...
@@ -60,6 +63,7 @@
#define MCS7830_MAX_MCAST 64
#define MCS7830_VENDOR_ID 0x9710
#define MCS7832_PRODUCT_ID 0x7832
#define MCS7830_PRODUCT_ID 0x7830
#define MCS7730_PRODUCT_ID 0x7730
...
...
@@ -626,7 +630,7 @@ static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
}
static
const
struct
driver_info
moschip_info
=
{
.
description
=
"MOSCHIP 7830/7730 usb-NET adapter"
,
.
description
=
"MOSCHIP 7830/7
832/7
730 usb-NET adapter"
,
.
bind
=
mcs7830_bind
,
.
rx_fixup
=
mcs7830_rx_fixup
,
.
flags
=
FLAG_ETHER
,
...
...
@@ -644,6 +648,10 @@ static const struct driver_info sitecom_info = {
};
static
const
struct
usb_device_id
products
[]
=
{
{
USB_DEVICE
(
MCS7830_VENDOR_ID
,
MCS7832_PRODUCT_ID
),
.
driver_info
=
(
unsigned
long
)
&
moschip_info
,
},
{
USB_DEVICE
(
MCS7830_VENDOR_ID
,
MCS7830_PRODUCT_ID
),
.
driver_info
=
(
unsigned
long
)
&
moschip_info
,
...
...
include/net/ip6_route.h
浏览文件 @
d9993be6
...
...
@@ -175,5 +175,15 @@ static inline int ipv6_unicast_destination(struct sk_buff *skb)
return
rt
->
rt6i_flags
&
RTF_LOCAL
;
}
int
ip6_fragment
(
struct
sk_buff
*
skb
,
int
(
*
output
)(
struct
sk_buff
*
));
static
inline
int
ip6_skb_dst_mtu
(
struct
sk_buff
*
skb
)
{
struct
ipv6_pinfo
*
np
=
skb
->
sk
?
inet6_sk
(
skb
->
sk
)
:
NULL
;
return
(
np
&&
np
->
pmtudisc
==
IPV6_PMTUDISC_PROBE
)
?
skb_dst
(
skb
)
->
dev
->
mtu
:
dst_mtu
(
skb_dst
(
skb
));
}
#endif
#endif
include/net/sch_generic.h
浏览文件 @
d9993be6
...
...
@@ -611,10 +611,6 @@ static inline struct sk_buff *skb_act_clone(struct sk_buff *skb, gfp_t gfp_mask,
{
struct
sk_buff
*
n
;
if
((
action
==
TC_ACT_STOLEN
||
action
==
TC_ACT_QUEUED
)
&&
!
skb_shared
(
skb
))
n
=
skb_get
(
skb
);
else
n
=
skb_clone
(
skb
,
gfp_mask
);
if
(
n
)
{
...
...
net/ipv6/ip6_output.c
浏览文件 @
d9993be6
...
...
@@ -56,7 +56,7 @@
#include <net/checksum.h>
#include <linux/mroute6.h>
static
int
ip6_fragment
(
struct
sk_buff
*
skb
,
int
(
*
output
)(
struct
sk_buff
*
));
int
ip6_fragment
(
struct
sk_buff
*
skb
,
int
(
*
output
)(
struct
sk_buff
*
));
int
__ip6_local_out
(
struct
sk_buff
*
skb
)
{
...
...
@@ -145,14 +145,6 @@ static int ip6_finish_output2(struct sk_buff *skb)
return
-
EINVAL
;
}
static
inline
int
ip6_skb_dst_mtu
(
struct
sk_buff
*
skb
)
{
struct
ipv6_pinfo
*
np
=
skb
->
sk
?
inet6_sk
(
skb
->
sk
)
:
NULL
;
return
(
np
&&
np
->
pmtudisc
==
IPV6_PMTUDISC_PROBE
)
?
skb_dst
(
skb
)
->
dev
->
mtu
:
dst_mtu
(
skb_dst
(
skb
));
}
static
int
ip6_finish_output
(
struct
sk_buff
*
skb
)
{
if
((
skb
->
len
>
ip6_skb_dst_mtu
(
skb
)
&&
!
skb_is_gso
(
skb
))
||
...
...
@@ -601,7 +593,7 @@ int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
return
offset
;
}
static
int
ip6_fragment
(
struct
sk_buff
*
skb
,
int
(
*
output
)(
struct
sk_buff
*
))
int
ip6_fragment
(
struct
sk_buff
*
skb
,
int
(
*
output
)(
struct
sk_buff
*
))
{
struct
sk_buff
*
frag
;
struct
rt6_info
*
rt
=
(
struct
rt6_info
*
)
skb_dst
(
skb
);
...
...
net/ipv6/xfrm6_output.c
浏览文件 @
d9993be6
...
...
@@ -17,6 +17,7 @@
#include <linux/netfilter_ipv6.h>
#include <net/dst.h>
#include <net/ipv6.h>
#include <net/ip6_route.h>
#include <net/xfrm.h>
int
xfrm6_find_1stfragopt
(
struct
xfrm_state
*
x
,
struct
sk_buff
*
skb
,
...
...
@@ -88,8 +89,21 @@ static int xfrm6_output_finish(struct sk_buff *skb)
return
xfrm_output
(
skb
);
}
static
int
__xfrm6_output
(
struct
sk_buff
*
skb
)
{
struct
dst_entry
*
dst
=
skb_dst
(
skb
);
struct
xfrm_state
*
x
=
dst
->
xfrm
;
if
((
x
&&
x
->
props
.
mode
==
XFRM_MODE_TUNNEL
)
&&
((
skb
->
len
>
ip6_skb_dst_mtu
(
skb
)
&&
!
skb_is_gso
(
skb
))
||
dst_allfrag
(
skb_dst
(
skb
))))
{
return
ip6_fragment
(
skb
,
xfrm6_output_finish
);
}
return
xfrm6_output_finish
(
skb
);
}
int
xfrm6_output
(
struct
sk_buff
*
skb
)
{
return
NF_HOOK
(
NFPROTO_IPV6
,
NF_INET_POST_ROUTING
,
skb
,
NULL
,
skb_dst
(
skb
)
->
dev
,
xfrm6_output_finish
);
skb_dst
(
skb
)
->
dev
,
__xfrm6_output
);
}
net/sched/sch_sfq.c
浏览文件 @
d9993be6
...
...
@@ -270,7 +270,6 @@ static unsigned int sfq_drop(struct Qdisc *sch)
/* It is difficult to believe, but ALL THE SLOTS HAVE LENGTH 1. */
d
=
q
->
next
[
q
->
tail
];
q
->
next
[
q
->
tail
]
=
q
->
next
[
d
];
q
->
allot
[
q
->
next
[
d
]]
+=
q
->
quantum
;
skb
=
q
->
qs
[
d
].
prev
;
len
=
qdisc_pkt_len
(
skb
);
__skb_unlink
(
skb
,
&
q
->
qs
[
d
]);
...
...
@@ -321,14 +320,13 @@ sfq_enqueue(struct sk_buff *skb, struct Qdisc *sch)
sfq_inc
(
q
,
x
);
if
(
q
->
qs
[
x
].
qlen
==
1
)
{
/* The flow is new */
if
(
q
->
tail
==
SFQ_DEPTH
)
{
/* It is the first flow */
q
->
tail
=
x
;
q
->
next
[
x
]
=
x
;
q
->
allot
[
x
]
=
q
->
quantum
;
}
else
{
q
->
next
[
x
]
=
q
->
next
[
q
->
tail
];
q
->
next
[
q
->
tail
]
=
x
;
q
->
tail
=
x
;
}
q
->
tail
=
x
;
q
->
allot
[
x
]
=
q
->
quantum
;
}
if
(
++
sch
->
q
.
qlen
<=
q
->
limit
)
{
sch
->
bstats
.
bytes
+=
qdisc_pkt_len
(
skb
);
...
...
@@ -359,13 +357,13 @@ sfq_dequeue(struct Qdisc *sch)
{
struct
sfq_sched_data
*
q
=
qdisc_priv
(
sch
);
struct
sk_buff
*
skb
;
sfq_index
a
,
old
_a
;
sfq_index
a
,
next
_a
;
/* No active slots */
if
(
q
->
tail
==
SFQ_DEPTH
)
return
NULL
;
a
=
old_a
=
q
->
next
[
q
->
tail
];
a
=
q
->
next
[
q
->
tail
];
/* Grab packet */
skb
=
__skb_dequeue
(
&
q
->
qs
[
a
]);
...
...
@@ -376,17 +374,15 @@ sfq_dequeue(struct Qdisc *sch)
/* Is the slot empty? */
if
(
q
->
qs
[
a
].
qlen
==
0
)
{
q
->
ht
[
q
->
hash
[
a
]]
=
SFQ_DEPTH
;
a
=
q
->
next
[
a
];
if
(
a
==
old
_a
)
{
next_
a
=
q
->
next
[
a
];
if
(
a
==
next
_a
)
{
q
->
tail
=
SFQ_DEPTH
;
return
skb
;
}
q
->
next
[
q
->
tail
]
=
a
;
q
->
allot
[
a
]
+=
q
->
quantum
;
q
->
next
[
q
->
tail
]
=
next_a
;
}
else
if
((
q
->
allot
[
a
]
-=
qdisc_pkt_len
(
skb
))
<=
0
)
{
q
->
tail
=
a
;
a
=
q
->
next
[
a
];
q
->
allot
[
a
]
+=
q
->
quantum
;
q
->
tail
=
a
;
}
return
skb
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录