Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
74ba310d
Commit
74ba310d
authored
Jul 28, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
da09d2f1
e953c5c1
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
123 additions
and
146 deletions
+123
-146
drivers/bluetooth/bluecard_cs.c
drivers/bluetooth/bluecard_cs.c
+3
-4
drivers/bluetooth/bt3c_cs.c
drivers/bluetooth/bt3c_cs.c
+2
-4
drivers/bluetooth/btuart_cs.c
drivers/bluetooth/btuart_cs.c
+2
-2
drivers/bluetooth/dtl1_cs.c
drivers/bluetooth/dtl1_cs.c
+2
-2
drivers/bluetooth/hci_bcsp.c
drivers/bluetooth/hci_bcsp.c
+2
-1
drivers/net/ethertap.c
drivers/net/ethertap.c
+2
-2
drivers/net/sungem.c
drivers/net/sungem.c
+2
-4
include/linux/icmpv6.h
include/linux/icmpv6.h
+19
-9
include/linux/rtnetlink.h
include/linux/rtnetlink.h
+0
-4
include/net/addrconf.h
include/net/addrconf.h
+2
-2
include/net/pkt_sched.h
include/net/pkt_sched.h
+9
-42
net/atm/lec.c
net/atm/lec.c
+4
-4
net/bridge/br_stp.c
net/bridge/br_stp.c
+1
-1
net/core/dev.c
net/core/dev.c
+7
-2
net/core/link_watch.c
net/core/link_watch.c
+0
-2
net/core/pktgen.c
net/core/pktgen.c
+5
-4
net/core/rtnetlink.c
net/core/rtnetlink.c
+0
-15
net/ipv6/af_inet6.c
net/ipv6/af_inet6.c
+0
-2
net/ipv6/ah6.c
net/ipv6/ah6.c
+1
-5
net/ipv6/esp6.c
net/ipv6/esp6.c
+1
-3
net/ipv6/icmp.c
net/ipv6/icmp.c
+6
-0
net/ipv6/ipcomp6.c
net/ipv6/ipcomp6.c
+0
-3
net/ipv6/route.c
net/ipv6/route.c
+1
-1
net/ipv6/xfrm6_input.c
net/ipv6/xfrm6_input.c
+6
-5
net/sched/cls_api.c
net/sched/cls_api.c
+21
-8
net/sched/sch_api.c
net/sched/sch_api.c
+5
-6
net/sched/sch_generic.c
net/sched/sch_generic.c
+18
-9
net/xfrm/xfrm_user.c
net/xfrm/xfrm_user.c
+2
-0
No files found.
drivers/bluetooth/bluecard_cs.c
View file @
74ba310d
...
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
...
...
@@ -776,8 +777,7 @@ int bluecard_open(bluecard_info_t *info)
outb
(
0x80
,
iobase
+
0x30
);
/* Wait some time */
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
/
100
);
msleep
(
10
);
/* Turn FPGA on */
outb
(
0x00
,
iobase
+
0x30
);
...
...
@@ -823,8 +823,7 @@ int bluecard_open(bluecard_info_t *info)
outb
((
0x0f
<<
RTS_LEVEL_SHIFT_BITS
)
|
1
,
iobase
+
REG_RX_CONTROL
);
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
((
HZ
*
5
)
/
4
);
// or set it to 3/2
msleep
(
1250
);
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
...
...
drivers/bluetooth/bt3c_cs.c
View file @
74ba310d
...
...
@@ -25,12 +25,11 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kmod.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
...
...
@@ -639,8 +638,7 @@ int bt3c_open(bt3c_info_t *info)
}
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
);
msleep
(
1000
);
/* Register HCI device */
err
=
hci_register_dev
(
hdev
);
...
...
drivers/bluetooth/btuart_cs.c
View file @
74ba310d
...
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
...
...
@@ -545,8 +546,7 @@ int btuart_open(btuart_info_t *info)
btuart_change_speed
(
info
,
DEFAULT_BAUD_RATE
);
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
);
msleep
(
1000
);
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
...
...
drivers/bluetooth/dtl1_cs.c
View file @
74ba310d
...
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
...
...
@@ -524,8 +525,7 @@ int dtl1_open(dtl1_info_t *info)
spin_unlock_irqrestore
(
&
(
info
->
lock
),
flags
);
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
*
2
);
msleep
(
2000
);
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
...
...
drivers/bluetooth/hci_bcsp.c
View file @
74ba310d
...
...
@@ -633,7 +633,8 @@ static void bcsp_timed_event(unsigned long arg)
struct
sk_buff
*
skb
;
unsigned
long
flags
;
BT_ERR
(
"Timeout, retransmitting %u pkts"
,
bcsp
->
unack
.
qlen
);
BT_DBG
(
"hu %p retransmitting %u pkts"
,
hu
,
bcsp
->
unack
.
qlen
);
spin_lock_irqsave
(
&
bcsp
->
unack
.
lock
,
flags
);
while
((
skb
=
__skb_dequeue_tail
(
&
bcsp
->
unack
))
!=
NULL
)
{
...
...
drivers/net/ethertap.c
View file @
74ba310d
...
...
@@ -13,7 +13,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/slab.h>
...
...
@@ -45,7 +45,7 @@ static void set_multicast_list(struct net_device *dev);
static
int
ethertap_debug
;
static
int
max_taps
=
1
;
MODULE_PARM
(
max_taps
,
"i"
);
module_param
(
max_taps
,
int
,
0
);
MODULE_PARM_DESC
(
max_taps
,
"Max number of ethernet tap devices"
);
static
struct
net_device
**
tap_map
;
/* Returns the tap device for a given netlink */
...
...
drivers/net/sungem.c
View file @
74ba310d
...
...
@@ -2024,8 +2024,7 @@ static void gem_stop_phy(struct gem *gp)
/* Let the chip settle down a bit, it seems that helps
* for sleep mode on some models
*/
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
HZ
/
100
);
msleep
(
10
);
/* Make sure we aren't polling PHY status change. We
* don't currently use that feature though
...
...
@@ -2043,8 +2042,7 @@ static void gem_stop_phy(struct gem *gp)
* dont wait a bit here, looks like the chip takes
* some time to really shut down
*/
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
HZ
/
100
);
msleep
(
10
);
}
writel
(
0
,
gp
->
regs
+
MAC_TXCFG
);
...
...
include/linux/icmpv6.h
View file @
74ba310d
...
...
@@ -86,17 +86,15 @@ struct icmp6hdr {
#define ICMPV6_MGM_REPORT 131
#define ICMPV6_MGM_REDUCTION 132
/* definitions for MLDv2 */
#define MLD2_MODE_IS_INCLUDE 1
#define MLD2_MODE_IS_EXCLUDE 2
#define MLD2_CHANGE_TO_INCLUDE 3
#define MLD2_CHANGE_TO_EXCLUDE 4
#define MLD2_ALLOW_NEW_SOURCES 5
#define MLD2_BLOCK_OLD_SOURCES 6
#define ICMPV6_NI_QUERY 139
#define ICMPV6_NI_REPLY 140
#define ICMPV6_MLD2_REPORT 143
#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
#define ICMPV6_DHAAD_REQUEST 144
#define ICMPV6_DHAAD_REPLY 145
#define ICMPV6_MOBILE_PREFIX_SOL 146
#define ICMPV6_MOBILE_PREFIX_ADV 147
/*
* Codes for Destination Unreachable
...
...
@@ -139,6 +137,18 @@ struct icmp6_filter {
__u32
data
[
8
];
};
/*
* Definitions for MLDv2
*/
#define MLD2_MODE_IS_INCLUDE 1
#define MLD2_MODE_IS_EXCLUDE 2
#define MLD2_CHANGE_TO_INCLUDE 3
#define MLD2_CHANGE_TO_EXCLUDE 4
#define MLD2_ALLOW_NEW_SOURCES 5
#define MLD2_BLOCK_OLD_SOURCES 6
#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
#ifdef __KERNEL__
#include <linux/netdevice.h>
...
...
include/linux/rtnetlink.h
View file @
74ba310d
...
...
@@ -746,10 +746,6 @@ extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change);
extern
struct
semaphore
rtnl_sem
;
#define rtnl_exlock() do { } while(0)
#define rtnl_exunlock() do { } while(0)
#define rtnl_exlock_nowait() (0)
#define rtnl_shlock() down(&rtnl_sem)
#define rtnl_shlock_nowait() down_trylock(&rtnl_sem)
...
...
include/net/addrconf.h
View file @
74ba310d
...
...
@@ -160,8 +160,8 @@ static inline void in6_ifa_put(struct inet6_ifaddr *ifp)
inet6_ifa_finish_destroy
(
ifp
);
}
#define __in6_ifa_put(i
dev) atomic_dec(&(idev
)->refcnt)
#define in6_ifa_hold(i
dev) atomic_inc(&(idev
)->refcnt)
#define __in6_ifa_put(i
fp) atomic_dec(&(ifp
)->refcnt)
#define in6_ifa_hold(i
fp) atomic_inc(&(ifp
)->refcnt)
extern
void
addrconf_forwarding_on
(
void
);
...
...
include/net/pkt_sched.h
View file @
74ba310d
...
...
@@ -105,43 +105,15 @@ struct qdisc_rate_table
int
refcnt
;
};
static
inline
void
sch_tree_lock
(
struct
Qdisc
*
q
)
{
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
q
->
dev
->
queue_lock
);
}
static
inline
void
sch_tree_unlock
(
struct
Qdisc
*
q
)
{
spin_unlock_bh
(
&
q
->
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
}
static
inline
void
tcf_tree_lock
(
struct
tcf_proto
*
tp
)
{
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
tp
->
q
->
dev
->
queue_lock
);
}
static
inline
void
tcf_tree_unlock
(
struct
tcf_proto
*
tp
)
{
spin_unlock_bh
(
&
tp
->
q
->
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
}
extern
void
qdisc_lock_tree
(
struct
net_device
*
dev
);
extern
void
qdisc_unlock_tree
(
struct
net_device
*
dev
);
#define sch_tree_lock(q) qdisc_lock_tree((q)->dev)
#define sch_tree_unlock(q) qdisc_unlock_tree((q)->dev)
#define tcf_tree_lock(tp) qdisc_lock_tree((tp)->q->dev)
#define tcf_tree_unlock(tp) qdisc_unlock_tree((tp)->q->dev)
static
inline
unsigned
long
cls_set_class
(
struct
tcf_proto
*
tp
,
unsigned
long
*
clp
,
unsigned
long
cl
)
{
unsigned
long
old_cl
;
tcf_tree_lock
(
tp
);
old_cl
=
*
clp
;
*
clp
=
cl
;
tcf_tree_unlock
(
tp
);
return
old_cl
;
}
#define cls_set_class(tp, clp, cl) tcf_set_class(tp, clp, cl)
static
inline
unsigned
long
__cls_set_class
(
unsigned
long
*
clp
,
unsigned
long
cl
)
{
...
...
@@ -407,6 +379,8 @@ extern int tcf_act_police_dump(struct sk_buff *, struct tc_action *, int, int);
extern
int
tcf_act_police
(
struct
sk_buff
**
skb
,
struct
tc_action
*
a
);
#endif
extern
unsigned
long
tcf_set_class
(
struct
tcf_proto
*
tp
,
unsigned
long
*
clp
,
unsigned
long
cl
);
extern
int
tcf_police
(
struct
sk_buff
*
skb
,
struct
tcf_police
*
p
);
extern
int
qdisc_copy_stats
(
struct
sk_buff
*
skb
,
struct
tc_stats
*
st
,
spinlock_t
*
lock
);
extern
void
tcf_police_destroy
(
struct
tcf_police
*
p
);
...
...
@@ -458,13 +432,6 @@ void qdisc_put_rtab(struct qdisc_rate_table *tab);
extern
int
qdisc_restart
(
struct
net_device
*
dev
);
static
inline
void
qdisc_run
(
struct
net_device
*
dev
)
{
while
(
!
netif_queue_stopped
(
dev
)
&&
qdisc_restart
(
dev
)
<
0
)
/* NOTHING */
;
}
/* Calculate maximal size of packet seen by hard_start_xmit
routine of this device.
*/
...
...
net/atm/lec.c
View file @
74ba310d
...
...
@@ -71,9 +71,9 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev);
static
int
lec_close
(
struct
net_device
*
dev
);
static
struct
net_device_stats
*
lec_get_stats
(
struct
net_device
*
dev
);
static
void
lec_init
(
struct
net_device
*
dev
);
static
inline
struct
lec_arp_table
*
lec_arp_find
(
struct
lec_priv
*
priv
,
static
struct
lec_arp_table
*
lec_arp_find
(
struct
lec_priv
*
priv
,
unsigned
char
*
mac_addr
);
static
in
line
in
t
lec_arp_remove
(
struct
lec_priv
*
priv
,
static
int
lec_arp_remove
(
struct
lec_priv
*
priv
,
struct
lec_arp_table
*
to_remove
);
/* LANE2 functions */
static
void
lane2_associate_ind
(
struct
net_device
*
dev
,
u8
*
mac_address
,
...
...
@@ -1468,7 +1468,7 @@ lec_arp_add(struct lec_priv *priv, struct lec_arp_table *to_add)
/*
* Remove entry from lec_arp_table
*/
static
in
line
in
t
static
int
lec_arp_remove
(
struct
lec_priv
*
priv
,
struct
lec_arp_table
*
to_remove
)
{
...
...
@@ -1755,7 +1755,7 @@ lec_arp_destroy(struct lec_priv *priv)
/*
* Find entry by mac_address
*/
static
inline
struct
lec_arp_table
*
static
struct
lec_arp_table
*
lec_arp_find
(
struct
lec_priv
*
priv
,
unsigned
char
*
mac_addr
)
{
...
...
net/bridge/br_stp.c
View file @
74ba310d
...
...
@@ -299,7 +299,7 @@ void br_topology_change_detection(struct net_bridge *br)
int
isroot
=
br_is_root_bridge
(
br
);
pr_info
(
"%s: topology change detected, %s
\n
"
,
br
->
dev
->
name
,
isroot
?
"propgating"
:
"sending tcn bpdu"
);
isroot
?
"prop
a
gating"
:
"sending tcn bpdu"
);
if
(
isroot
)
{
br
->
topology_change
=
1
;
...
...
net/core/dev.c
View file @
74ba310d
...
...
@@ -1320,6 +1320,13 @@ int __skb_linearize(struct sk_buff *skb, int gfp_mask)
} \
}
static
inline
void
qdisc_run
(
struct
net_device
*
dev
)
{
while
(
!
netif_queue_stopped
(
dev
)
&&
qdisc_restart
(
dev
)
<
0
)
/* NOTHING */
;
}
/**
* dev_queue_xmit - transmit a buffer
* @skb: buffer to transmit
...
...
@@ -3034,7 +3041,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
while
(
atomic_read
(
&
dev
->
refcnt
)
!=
0
)
{
if
(
time_after
(
jiffies
,
rebroadcast_time
+
1
*
HZ
))
{
rtnl_shlock
();
rtnl_exlock
();
/* Rebroadcast unregister notification */
notifier_call_chain
(
&
netdev_chain
,
...
...
@@ -3051,7 +3057,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
linkwatch_run_queue
();
}
rtnl_exunlock
();
rtnl_shunlock
();
rebroadcast_time
=
jiffies
;
...
...
net/core/link_watch.c
View file @
74ba310d
...
...
@@ -93,9 +93,7 @@ static void linkwatch_event(void *dummy)
clear_bit
(
LW_RUNNING
,
&
linkwatch_flags
);
rtnl_shlock
();
rtnl_exlock
();
linkwatch_run_queue
();
rtnl_exunlock
();
rtnl_shunlock
();
}
...
...
net/core/pktgen.c
View file @
74ba310d
...
...
@@ -56,6 +56,7 @@
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
...
...
@@ -1409,7 +1410,7 @@ module_exit(cleanup);
MODULE_AUTHOR
(
"Robert Olsson <robert.olsson@its.uu.se"
);
MODULE_DESCRIPTION
(
"Packet Generator tool"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_PARM
(
count_d
,
"i"
);
MODULE_PARM
(
ipg_d
,
"i"
);
MODULE_PARM
(
cpu_speed
,
"i"
);
MODULE_PARM
(
clone_skb_d
,
"i"
);
module_param
(
count_d
,
int
,
0
);
module_param
(
ipg_d
,
int
,
0
);
module_param
(
cpu_speed
,
int
,
0
);
module_param
(
clone_skb_d
,
int
,
0
);
net/core/rtnetlink.c
View file @
74ba310d
...
...
@@ -56,12 +56,10 @@ DECLARE_MUTEX(rtnl_sem);
void
rtnl_lock
(
void
)
{
rtnl_shlock
();
rtnl_exlock
();
}
void
rtnl_unlock
(
void
)
{
rtnl_exunlock
();
rtnl_shunlock
();
netdev_run_todo
();
...
...
@@ -337,7 +335,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
struct
rtnetlink_link
*
link_tab
;
struct
rtattr
*
rta
[
RTATTR_MAX
];
int
exclusive
=
0
;
int
sz_idx
,
kind
;
int
min_len
;
int
family
;
...
...
@@ -404,14 +401,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
return
-
1
;
}
if
(
kind
!=
2
)
{
if
(
rtnl_exlock_nowait
())
{
*
errp
=
0
;
return
-
1
;
}
exclusive
=
1
;
}
memset
(
&
rta
,
0
,
sizeof
(
rta
));
min_len
=
rtm_min
[
sz_idx
];
...
...
@@ -439,14 +428,10 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
goto
err_inval
;
err
=
link
->
doit
(
skb
,
nlh
,
(
void
*
)
&
rta
);
if
(
exclusive
)
rtnl_exunlock
();
*
errp
=
err
;
return
err
;
err_inval:
if
(
exclusive
)
rtnl_exunlock
();
*
errp
=
-
EINVAL
;
return
-
1
;
}
...
...
net/ipv6/af_inet6.c
View file @
74ba310d
...
...
@@ -560,8 +560,6 @@ static struct inet_protosw rawv6_protosw = {
.
flags
=
INET_PROTOSW_REUSE
,
};
#define INETSW6_ARRAY_LEN (sizeof(inetsw6_array) / sizeof(struct inet_protosw))
void
inet6_register_protosw
(
struct
inet_protosw
*
p
)
{
...
...
net/ipv6/ah6.c
View file @
74ba310d
...
...
@@ -246,9 +246,7 @@ int ah6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_bu
unsigned
char
*
tmp_hdr
=
NULL
;
u16
hdr_len
;
u16
ah_hlen
;
u16
nh_offset
=
0
;
u8
nexthdr
=
0
;
u8
*
prevhdr
;
int
nexthdr
;
if
(
!
pskb_may_pull
(
skb
,
sizeof
(
struct
ip_auth_hdr
)))
goto
out
;
...
...
@@ -301,8 +299,6 @@ int ah6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_bu
skb
->
nh
.
raw
=
skb_pull
(
skb
,
ah_hlen
);
memcpy
(
skb
->
nh
.
raw
,
tmp_hdr
,
hdr_len
);
prevhdr
=
(
u8
*
)(
skb
->
nh
.
raw
+
nh_offset
);
*
prevhdr
=
nexthdr
;
skb
->
nh
.
ipv6h
->
payload_len
=
htons
(
skb
->
len
-
sizeof
(
struct
ipv6hdr
));
skb_pull
(
skb
,
hdr_len
);
skb
->
h
.
raw
=
skb
->
data
;
...
...
net/ipv6/esp6.c
View file @
74ba310d
...
...
@@ -258,7 +258,6 @@ int esp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_b
u8
nexthdr
[
2
];
struct
scatterlist
*
sg
=
&
esp
->
sgbuf
[
0
];
u8
padlen
;
u8
*
prevhdr
;
if
(
unlikely
(
nfrags
>
ESP_NUM_FAST_SG
))
{
sg
=
kmalloc
(
sizeof
(
struct
scatterlist
)
*
nfrags
,
GFP_ATOMIC
);
...
...
@@ -289,8 +288,7 @@ int esp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_b
skb
->
nh
.
raw
+=
sizeof
(
struct
ipv6_esp_hdr
)
+
esp
->
conf
.
ivlen
;
memcpy
(
skb
->
nh
.
raw
,
tmp_hdr
,
hdr_len
);
skb
->
nh
.
ipv6h
->
payload_len
=
htons
(
skb
->
len
-
sizeof
(
struct
ipv6hdr
));
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
ret
=
*
prevhdr
=
nexthdr
[
1
];
ret
=
nexthdr
[
1
];
}
out:
...
...
net/ipv6/icmp.c
View file @
74ba310d
...
...
@@ -646,7 +646,13 @@ static int icmpv6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
break
;
case
ICMPV6_MGM_REDUCTION
:
case
ICMPV6_NI_QUERY
:
case
ICMPV6_NI_REPLY
:
case
ICMPV6_MLD2_REPORT
:
case
ICMPV6_DHAAD_REQUEST
:
case
ICMPV6_DHAAD_REPLY
:
case
ICMPV6_MOBILE_PREFIX_SOL
:
case
ICMPV6_MOBILE_PREFIX_ADV
:
break
;
default:
...
...
net/ipv6/ipcomp6.c
View file @
74ba310d
...
...
@@ -49,7 +49,6 @@ static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, s
{
int
err
=
0
;
u8
nexthdr
=
0
;
u8
*
prevhdr
;
int
hdr_len
=
skb
->
h
.
raw
-
skb
->
nh
.
raw
;
unsigned
char
*
tmp_hdr
=
NULL
;
struct
ipv6hdr
*
iph
;
...
...
@@ -106,8 +105,6 @@ static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, s
iph
=
skb
->
nh
.
ipv6h
;
iph
->
payload_len
=
htons
(
skb
->
len
);
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
*
prevhdr
=
nexthdr
;
out:
if
(
tmp_hdr
)
kfree
(
tmp_hdr
);
...
...
net/ipv6/route.c
View file @
74ba310d
...
...
@@ -692,7 +692,7 @@ static int ipv6_get_mtu(struct net_device *dev)
return
mtu
;
}
static
inline
unsigned
int
ipv6_advmss
(
unsigned
int
mtu
)
static
unsigned
int
ipv6_advmss
(
unsigned
int
mtu
)
{
mtu
-=
sizeof
(
struct
ipv6hdr
)
+
sizeof
(
struct
tcphdr
);
...
...
net/ipv6/xfrm6_input.c
View file @
74ba310d
...
...
@@ -34,12 +34,11 @@ int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
struct
xfrm_state
*
x
;
int
xfrm_nr
=
0
;
int
decaps
=
0
;
int
nexthdr
=
0
;
u
8
*
prevhdr
=
NULL
;
int
nexthdr
;
u
nsigned
int
nhoff
;
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
nexthdr
=
*
prevhdr
;
*
nhoffp
=
prevhdr
-
skb
->
nh
.
raw
;
nhoff
=
*
nhoffp
;
nexthdr
=
skb
->
nh
.
raw
[
nhoff
];
if
((
err
=
xfrm_parse_spi
(
skb
,
nexthdr
,
&
spi
,
&
seq
))
!=
0
)
goto
drop
;
...
...
@@ -67,6 +66,8 @@ int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
if
(
nexthdr
<=
0
)
goto
drop_unlock
;
skb
->
nh
.
raw
[
nhoff
]
=
nexthdr
;
if
(
x
->
props
.
replay_window
)
xfrm_replay_advance
(
x
,
seq
);
...
...
net/sched/cls_api.c
View file @
74ba310d
...
...
@@ -236,12 +236,12 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
kfree
(
tp
);
goto
errout
;
}
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
tp
->
next
=
*
back
;
*
back
=
tp
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
}
else
if
(
tca
[
TCA_KIND
-
1
]
&&
rtattr_strcmp
(
tca
[
TCA_KIND
-
1
],
tp
->
ops
->
kind
))
goto
errout
;
...
...
@@ -249,11 +249,10 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
if
(
fh
==
0
)
{
if
(
n
->
nlmsg_type
==
RTM_DELTFILTER
&&
t
->
tcm_handle
==
0
)
{
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
*
back
=
tp
->
next
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
tfilter_notify
(
skb
,
n
,
tp
,
fh_s
,
RTM_DELTFILTER
);
tcf_destroy
(
tp
);
err
=
0
;
...
...
@@ -294,6 +293,19 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
return
err
;
}
unsigned
long
tcf_set_class
(
struct
tcf_proto
*
tp
,
unsigned
long
*
clp
,
unsigned
long
cl
)
{
unsigned
long
old_cl
;
tcf_tree_lock
(
tp
);
old_cl
=
__cls_set_class
(
clp
,
cl
);
tcf_tree_unlock
(
tp
);
return
old_cl
;
}
static
int
tcf_fill_node
(
struct
sk_buff
*
skb
,
struct
tcf_proto
*
tp
,
unsigned
long
fh
,
u32
pid
,
u32
seq
,
unsigned
flags
,
int
event
)
...
...
@@ -459,3 +471,4 @@ subsys_initcall(tc_filter_init);
EXPORT_SYMBOL
(
register_tcf_proto_ops
);
EXPORT_SYMBOL
(
unregister_tcf_proto_ops
);
EXPORT_SYMBOL
(
tcf_set_class
);
net/sched/sch_api.c
View file @
74ba310d
...
...
@@ -306,8 +306,7 @@ dev_graft_qdisc(struct net_device *dev, struct Qdisc *qdisc)
if
(
dev
->
flags
&
IFF_UP
)
dev_deactivate
(
dev
);
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
if
(
qdisc
&&
qdisc
->
flags
&
TCQ_F_INGRES
)
{
oqdisc
=
dev
->
qdisc_ingress
;
/* Prune old scheduler */
...
...
@@ -334,8 +333,7 @@ dev_graft_qdisc(struct net_device *dev, struct Qdisc *qdisc)
dev
->
qdisc
=
&
noop_qdisc
;
}
spin_unlock_bh
(
&
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
if
(
dev
->
flags
&
IFF_UP
)
dev_activate
(
dev
);
...
...
@@ -454,10 +452,11 @@ qdisc_create(struct net_device *dev, u32 handle, struct rtattr **tca, int *errp)
* before we set a netdevice's qdisc pointer to sch */
smp_wmb
();
if
(
!
ops
->
init
||
(
err
=
ops
->
init
(
sch
,
tca
[
TCA_OPTIONS
-
1
]))
==
0
)
{
write_lock
(
&
qdisc_tree_lock
);
qdisc_lock_tree
(
dev
);
sch
->
next
=
dev
->
qdisc_list
;
dev
->
qdisc_list
=
sch
;
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
#ifdef CONFIG_NET_ESTIMATOR
if
(
tca
[
TCA_RATE
-
1
])
qdisc_new_estimator
(
&
sch
->
stats
,
sch
->
stats_lock
,
...
...
net/sched/sch_generic.c
View file @
74ba310d
...
...
@@ -54,6 +54,18 @@
*/
rwlock_t
qdisc_tree_lock
=
RW_LOCK_UNLOCKED
;
void
qdisc_lock_tree
(
struct
net_device
*
dev
)
{
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
}
void
qdisc_unlock_tree
(
struct
net_device
*
dev
)
{
spin_unlock_bh
(
&
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
}
/*
dev->queue_lock serializes queue accesses for this device
AND dev->qdisc pointer itself.
...
...
@@ -513,13 +525,11 @@ void dev_deactivate(struct net_device *dev)
void
dev_init_scheduler
(
struct
net_device
*
dev
)
{
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
dev
->
qdisc
=
&
noop_qdisc
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
dev
->
qdisc_list
=
NULL
;
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
dev_watchdog_init
(
dev
);
}
...
...
@@ -528,8 +538,7 @@ void dev_shutdown(struct net_device *dev)
{
struct
Qdisc
*
qdisc
;
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
qdisc
=
dev
->
qdisc_sleeping
;
dev
->
qdisc
=
&
noop_qdisc
;
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
...
...
@@ -543,8 +552,7 @@ void dev_shutdown(struct net_device *dev)
BUG_TRAP
(
dev
->
qdisc_list
==
NULL
);
BUG_TRAP
(
!
timer_pending
(
&
dev
->
watchdog_timer
));
dev
->
qdisc_list
=
NULL
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
}
EXPORT_SYMBOL
(
__netdev_watchdog_up
);
...
...
@@ -554,4 +562,5 @@ EXPORT_SYMBOL(qdisc_create_dflt);
EXPORT_SYMBOL
(
qdisc_destroy
);
EXPORT_SYMBOL
(
qdisc_reset
);
EXPORT_SYMBOL
(
qdisc_restart
);
EXPORT_SYMBOL
(
qdisc_tree_lock
);
EXPORT_SYMBOL
(
qdisc_lock_tree
);
EXPORT_SYMBOL
(
qdisc_unlock_tree
);
net/xfrm/xfrm_user.c
View file @
74ba310d
...
...
@@ -267,6 +267,8 @@ static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
if
(
err
)
return
err
;
xfrm_probe_algs
();
x
=
xfrm_state_construct
(
p
,
(
struct
rtattr
**
)
xfrma
,
&
err
);
if
(
!
x
)
return
err
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment