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 @@
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/timer.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
...
@@ -776,8 +777,7 @@ int bluecard_open(bluecard_info_t *info)
...
@@ -776,8 +777,7 @@ int bluecard_open(bluecard_info_t *info)
outb
(
0x80
,
iobase
+
0x30
);
outb
(
0x80
,
iobase
+
0x30
);
/* Wait some time */
/* Wait some time */
set_current_state
(
TASK_INTERRUPTIBLE
);
msleep
(
10
);
schedule_timeout
(
HZ
/
100
);
/* Turn FPGA on */
/* Turn FPGA on */
outb
(
0x00
,
iobase
+
0x30
);
outb
(
0x00
,
iobase
+
0x30
);
...
@@ -823,8 +823,7 @@ int bluecard_open(bluecard_info_t *info)
...
@@ -823,8 +823,7 @@ int bluecard_open(bluecard_info_t *info)
outb
((
0x0f
<<
RTS_LEVEL_SHIFT_BITS
)
|
1
,
iobase
+
REG_RX_CONTROL
);
outb
((
0x0f
<<
RTS_LEVEL_SHIFT_BITS
)
|
1
,
iobase
+
REG_RX_CONTROL
);
/* Timeout before it is safe to send the first HCI packet */
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
msleep
(
1250
);
schedule_timeout
((
HZ
*
5
)
/
4
);
// or set it to 3/2
/* Register HCI device */
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
if
(
hci_register_dev
(
hdev
)
<
0
)
{
...
...
drivers/bluetooth/bt3c_cs.c
View file @
74ba310d
...
@@ -25,12 +25,11 @@
...
@@ -25,12 +25,11 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/kmod.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
...
@@ -639,8 +638,7 @@ int bt3c_open(bt3c_info_t *info)
...
@@ -639,8 +638,7 @@ int bt3c_open(bt3c_info_t *info)
}
}
/* Timeout before it is safe to send the first HCI packet */
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
msleep
(
1000
);
schedule_timeout
(
HZ
);
/* Register HCI device */
/* Register HCI device */
err
=
hci_register_dev
(
hdev
);
err
=
hci_register_dev
(
hdev
);
...
...
drivers/bluetooth/btuart_cs.c
View file @
74ba310d
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
...
@@ -545,8 +546,7 @@ int btuart_open(btuart_info_t *info)
...
@@ -545,8 +546,7 @@ int btuart_open(btuart_info_t *info)
btuart_change_speed
(
info
,
DEFAULT_BAUD_RATE
);
btuart_change_speed
(
info
,
DEFAULT_BAUD_RATE
);
/* Timeout before it is safe to send the first HCI packet */
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
msleep
(
1000
);
schedule_timeout
(
HZ
);
/* Register HCI device */
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
if
(
hci_register_dev
(
hdev
)
<
0
)
{
...
...
drivers/bluetooth/dtl1_cs.c
View file @
74ba310d
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
...
@@ -524,8 +525,7 @@ int dtl1_open(dtl1_info_t *info)
...
@@ -524,8 +525,7 @@ int dtl1_open(dtl1_info_t *info)
spin_unlock_irqrestore
(
&
(
info
->
lock
),
flags
);
spin_unlock_irqrestore
(
&
(
info
->
lock
),
flags
);
/* Timeout before it is safe to send the first HCI packet */
/* Timeout before it is safe to send the first HCI packet */
set_current_state
(
TASK_INTERRUPTIBLE
);
msleep
(
2000
);
schedule_timeout
(
HZ
*
2
);
/* Register HCI device */
/* Register HCI device */
if
(
hci_register_dev
(
hdev
)
<
0
)
{
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)
...
@@ -633,7 +633,8 @@ static void bcsp_timed_event(unsigned long arg)
struct
sk_buff
*
skb
;
struct
sk_buff
*
skb
;
unsigned
long
flags
;
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
);
spin_lock_irqsave
(
&
bcsp
->
unack
.
lock
,
flags
);
while
((
skb
=
__skb_dequeue_tail
(
&
bcsp
->
unack
))
!=
NULL
)
{
while
((
skb
=
__skb_dequeue_tail
(
&
bcsp
->
unack
))
!=
NULL
)
{
...
...
drivers/net/ethertap.c
View file @
74ba310d
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
#include <linux/config.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/jiffies.h>
#include <linux/slab.h>
#include <linux/slab.h>
...
@@ -45,7 +45,7 @@ static void set_multicast_list(struct net_device *dev);
...
@@ -45,7 +45,7 @@ static void set_multicast_list(struct net_device *dev);
static
int
ethertap_debug
;
static
int
ethertap_debug
;
static
int
max_taps
=
1
;
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"
);
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 */
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)
...
@@ -2024,8 +2024,7 @@ static void gem_stop_phy(struct gem *gp)
/* Let the chip settle down a bit, it seems that helps
/* Let the chip settle down a bit, it seems that helps
* for sleep mode on some models
* for sleep mode on some models
*/
*/
set_current_state
(
TASK_UNINTERRUPTIBLE
);
msleep
(
10
);
schedule_timeout
(
HZ
/
100
);
/* Make sure we aren't polling PHY status change. We
/* Make sure we aren't polling PHY status change. We
* don't currently use that feature though
* don't currently use that feature though
...
@@ -2043,8 +2042,7 @@ static void gem_stop_phy(struct gem *gp)
...
@@ -2043,8 +2042,7 @@ static void gem_stop_phy(struct gem *gp)
* dont wait a bit here, looks like the chip takes
* dont wait a bit here, looks like the chip takes
* some time to really shut down
* some time to really shut down
*/
*/
set_current_state
(
TASK_UNINTERRUPTIBLE
);
msleep
(
10
);
schedule_timeout
(
HZ
/
100
);
}
}
writel
(
0
,
gp
->
regs
+
MAC_TXCFG
);
writel
(
0
,
gp
->
regs
+
MAC_TXCFG
);
...
...
include/linux/icmpv6.h
View file @
74ba310d
...
@@ -86,17 +86,15 @@ struct icmp6hdr {
...
@@ -86,17 +86,15 @@ struct icmp6hdr {
#define ICMPV6_MGM_REPORT 131
#define ICMPV6_MGM_REPORT 131
#define ICMPV6_MGM_REDUCTION 132
#define ICMPV6_MGM_REDUCTION 132
/* definitions for MLDv2 */
#define ICMPV6_NI_QUERY 139
#define ICMPV6_NI_REPLY 140
#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_MLD2_REPORT 143
#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
* Codes for Destination Unreachable
...
@@ -139,6 +137,18 @@ struct icmp6_filter {
...
@@ -139,6 +137,18 @@ struct icmp6_filter {
__u32
data
[
8
];
__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__
#ifdef __KERNEL__
#include <linux/netdevice.h>
#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);
...
@@ -746,10 +746,6 @@ extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change);
extern
struct
semaphore
rtnl_sem
;
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() down(&rtnl_sem)
#define rtnl_shlock_nowait() down_trylock(&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)
...
@@ -160,8 +160,8 @@ static inline void in6_ifa_put(struct inet6_ifaddr *ifp)
inet6_ifa_finish_destroy
(
ifp
);
inet6_ifa_finish_destroy
(
ifp
);
}
}
#define __in6_ifa_put(i
dev) atomic_dec(&(idev
)->refcnt)
#define __in6_ifa_put(i
fp) atomic_dec(&(ifp
)->refcnt)
#define in6_ifa_hold(i
dev) atomic_inc(&(idev
)->refcnt)
#define in6_ifa_hold(i
fp) atomic_inc(&(ifp
)->refcnt)
extern
void
addrconf_forwarding_on
(
void
);
extern
void
addrconf_forwarding_on
(
void
);
...
...
include/net/pkt_sched.h
View file @
74ba310d
...
@@ -105,43 +105,15 @@ struct qdisc_rate_table
...
@@ -105,43 +105,15 @@ struct qdisc_rate_table
int
refcnt
;
int
refcnt
;
};
};
static
inline
void
sch_tree_lock
(
struct
Qdisc
*
q
)
extern
void
qdisc_lock_tree
(
struct
net_device
*
dev
);
{
extern
void
qdisc_unlock_tree
(
struct
net_device
*
dev
);
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
);
}
#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
#define cls_set_class(tp, clp, cl) tcf_set_class(tp, clp, cl)
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
;
}
static
inline
unsigned
long
static
inline
unsigned
long
__cls_set_class
(
unsigned
long
*
clp
,
unsigned
long
cl
)
__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);
...
@@ -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
);
extern
int
tcf_act_police
(
struct
sk_buff
**
skb
,
struct
tc_action
*
a
);
#endif
#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
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
int
qdisc_copy_stats
(
struct
sk_buff
*
skb
,
struct
tc_stats
*
st
,
spinlock_t
*
lock
);
extern
void
tcf_police_destroy
(
struct
tcf_police
*
p
);
extern
void
tcf_police_destroy
(
struct
tcf_police
*
p
);
...
@@ -458,13 +432,6 @@ void qdisc_put_rtab(struct qdisc_rate_table *tab);
...
@@ -458,13 +432,6 @@ void qdisc_put_rtab(struct qdisc_rate_table *tab);
extern
int
qdisc_restart
(
struct
net_device
*
dev
);
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
/* Calculate maximal size of packet seen by hard_start_xmit
routine of this device.
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);
...
@@ -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
int
lec_close
(
struct
net_device
*
dev
);
static
struct
net_device_stats
*
lec_get_stats
(
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
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
);
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
);
struct
lec_arp_table
*
to_remove
);
/* LANE2 functions */
/* LANE2 functions */
static
void
lane2_associate_ind
(
struct
net_device
*
dev
,
u8
*
mac_address
,
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)
...
@@ -1468,7 +1468,7 @@ lec_arp_add(struct lec_priv *priv, struct lec_arp_table *to_add)
/*
/*
* Remove entry from lec_arp_table
* Remove entry from lec_arp_table
*/
*/
static
in
line
in
t
static
int
lec_arp_remove
(
struct
lec_priv
*
priv
,
lec_arp_remove
(
struct
lec_priv
*
priv
,
struct
lec_arp_table
*
to_remove
)
struct
lec_arp_table
*
to_remove
)
{
{
...
@@ -1755,7 +1755,7 @@ lec_arp_destroy(struct lec_priv *priv)
...
@@ -1755,7 +1755,7 @@ lec_arp_destroy(struct lec_priv *priv)
/*
/*
* Find entry by mac_address
* Find entry by mac_address
*/
*/
static
inline
struct
lec_arp_table
*
static
struct
lec_arp_table
*
lec_arp_find
(
struct
lec_priv
*
priv
,
lec_arp_find
(
struct
lec_priv
*
priv
,
unsigned
char
*
mac_addr
)
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)
...
@@ -299,7 +299,7 @@ void br_topology_change_detection(struct net_bridge *br)
int
isroot
=
br_is_root_bridge
(
br
);
int
isroot
=
br_is_root_bridge
(
br
);
pr_info
(
"%s: topology change detected, %s
\n
"
,
br
->
dev
->
name
,
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
)
{
if
(
isroot
)
{
br
->
topology_change
=
1
;
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)
...
@@ -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
* dev_queue_xmit - transmit a buffer
* @skb: buffer to transmit
* @skb: buffer to transmit
...
@@ -3034,7 +3041,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
...
@@ -3034,7 +3041,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
while
(
atomic_read
(
&
dev
->
refcnt
)
!=
0
)
{
while
(
atomic_read
(
&
dev
->
refcnt
)
!=
0
)
{
if
(
time_after
(
jiffies
,
rebroadcast_time
+
1
*
HZ
))
{
if
(
time_after
(
jiffies
,
rebroadcast_time
+
1
*
HZ
))
{
rtnl_shlock
();
rtnl_shlock
();
rtnl_exlock
();
/* Rebroadcast unregister notification */
/* Rebroadcast unregister notification */
notifier_call_chain
(
&
netdev_chain
,
notifier_call_chain
(
&
netdev_chain
,
...
@@ -3051,7 +3057,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
...
@@ -3051,7 +3057,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
linkwatch_run_queue
();
linkwatch_run_queue
();
}
}
rtnl_exunlock
();
rtnl_shunlock
();
rtnl_shunlock
();
rebroadcast_time
=
jiffies
;
rebroadcast_time
=
jiffies
;
...
...
net/core/link_watch.c
View file @
74ba310d
...
@@ -93,9 +93,7 @@ static void linkwatch_event(void *dummy)
...
@@ -93,9 +93,7 @@ static void linkwatch_event(void *dummy)
clear_bit
(
LW_RUNNING
,
&
linkwatch_flags
);
clear_bit
(
LW_RUNNING
,
&
linkwatch_flags
);
rtnl_shlock
();
rtnl_shlock
();
rtnl_exlock
();
linkwatch_run_queue
();
linkwatch_run_queue
();
rtnl_exunlock
();
rtnl_shunlock
();
rtnl_shunlock
();
}
}
...
...
net/core/pktgen.c
View file @
74ba310d
...
@@ -56,6 +56,7 @@
...
@@ -56,6 +56,7 @@
*/
*/
#include <linux/module.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/types.h>
...
@@ -1409,7 +1410,7 @@ module_exit(cleanup);
...
@@ -1409,7 +1410,7 @@ module_exit(cleanup);
MODULE_AUTHOR
(
"Robert Olsson <robert.olsson@its.uu.se"
);
MODULE_AUTHOR
(
"Robert Olsson <robert.olsson@its.uu.se"
);
MODULE_DESCRIPTION
(
"Packet Generator tool"
);
MODULE_DESCRIPTION
(
"Packet Generator tool"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_PARM
(
count_d
,
"i"
);
module_param
(
count_d
,
int
,
0
);
MODULE_PARM
(
ipg_d
,
"i"
);
module_param
(
ipg_d
,
int
,
0
);
MODULE_PARM
(
cpu_speed
,
"i"
);
module_param
(
cpu_speed
,
int
,
0
);
MODULE_PARM
(
clone_skb_d
,
"i"
);
module_param
(
clone_skb_d
,
int
,
0
);
net/core/rtnetlink.c
View file @
74ba310d
...
@@ -56,12 +56,10 @@ DECLARE_MUTEX(rtnl_sem);
...
@@ -56,12 +56,10 @@ DECLARE_MUTEX(rtnl_sem);
void
rtnl_lock
(
void
)
void
rtnl_lock
(
void
)
{
{
rtnl_shlock
();
rtnl_shlock
();
rtnl_exlock
();
}
}
void
rtnl_unlock
(
void
)
void
rtnl_unlock
(
void
)
{
{
rtnl_exunlock
();
rtnl_shunlock
();
rtnl_shunlock
();
netdev_run_todo
();
netdev_run_todo
();
...
@@ -337,7 +335,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
...
@@ -337,7 +335,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
struct
rtnetlink_link
*
link_tab
;
struct
rtnetlink_link
*
link_tab
;
struct
rtattr
*
rta
[
RTATTR_MAX
];
struct
rtattr
*
rta
[
RTATTR_MAX
];
int
exclusive
=
0
;
int
sz_idx
,
kind
;
int
sz_idx
,
kind
;
int
min_len
;
int
min_len
;
int
family
;
int
family
;
...
@@ -404,14 +401,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
...
@@ -404,14 +401,6 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
return
-
1
;
return
-
1
;
}
}
if
(
kind
!=
2
)
{
if
(
rtnl_exlock_nowait
())
{
*
errp
=
0
;
return
-
1
;
}
exclusive
=
1
;
}
memset
(
&
rta
,
0
,
sizeof
(
rta
));
memset
(
&
rta
,
0
,
sizeof
(
rta
));
min_len
=
rtm_min
[
sz_idx
];
min_len
=
rtm_min
[
sz_idx
];
...
@@ -439,14 +428,10 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
...
@@ -439,14 +428,10 @@ rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *errp)
goto
err_inval
;
goto
err_inval
;
err
=
link
->
doit
(
skb
,
nlh
,
(
void
*
)
&
rta
);
err
=
link
->
doit
(
skb
,
nlh
,
(
void
*
)
&
rta
);
if
(
exclusive
)
rtnl_exunlock
();
*
errp
=
err
;
*
errp
=
err
;
return
err
;
return
err
;
err_inval:
err_inval:
if
(
exclusive
)
rtnl_exunlock
();
*
errp
=
-
EINVAL
;
*
errp
=
-
EINVAL
;
return
-
1
;
return
-
1
;
}
}
...
...
net/ipv6/af_inet6.c
View file @
74ba310d
...
@@ -560,8 +560,6 @@ static struct inet_protosw rawv6_protosw = {
...
@@ -560,8 +560,6 @@ static struct inet_protosw rawv6_protosw = {
.
flags
=
INET_PROTOSW_REUSE
,
.
flags
=
INET_PROTOSW_REUSE
,
};
};
#define INETSW6_ARRAY_LEN (sizeof(inetsw6_array) / sizeof(struct inet_protosw))
void
void
inet6_register_protosw
(
struct
inet_protosw
*
p
)
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
...
@@ -246,9 +246,7 @@ int ah6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_bu
unsigned
char
*
tmp_hdr
=
NULL
;
unsigned
char
*
tmp_hdr
=
NULL
;
u16
hdr_len
;
u16
hdr_len
;
u16
ah_hlen
;
u16
ah_hlen
;
u16
nh_offset
=
0
;
int
nexthdr
;
u8
nexthdr
=
0
;
u8
*
prevhdr
;
if
(
!
pskb_may_pull
(
skb
,
sizeof
(
struct
ip_auth_hdr
)))
if
(
!
pskb_may_pull
(
skb
,
sizeof
(
struct
ip_auth_hdr
)))
goto
out
;
goto
out
;
...
@@ -301,8 +299,6 @@ int ah6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_bu
...
@@ -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
);
skb
->
nh
.
raw
=
skb_pull
(
skb
,
ah_hlen
);
memcpy
(
skb
->
nh
.
raw
,
tmp_hdr
,
hdr_len
);
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
->
nh
.
ipv6h
->
payload_len
=
htons
(
skb
->
len
-
sizeof
(
struct
ipv6hdr
));
skb_pull
(
skb
,
hdr_len
);
skb_pull
(
skb
,
hdr_len
);
skb
->
h
.
raw
=
skb
->
data
;
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
...
@@ -258,7 +258,6 @@ int esp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_b
u8
nexthdr
[
2
];
u8
nexthdr
[
2
];
struct
scatterlist
*
sg
=
&
esp
->
sgbuf
[
0
];
struct
scatterlist
*
sg
=
&
esp
->
sgbuf
[
0
];
u8
padlen
;
u8
padlen
;
u8
*
prevhdr
;
if
(
unlikely
(
nfrags
>
ESP_NUM_FAST_SG
))
{
if
(
unlikely
(
nfrags
>
ESP_NUM_FAST_SG
))
{
sg
=
kmalloc
(
sizeof
(
struct
scatterlist
)
*
nfrags
,
GFP_ATOMIC
);
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
...
@@ -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
;
skb
->
nh
.
raw
+=
sizeof
(
struct
ipv6_esp_hdr
)
+
esp
->
conf
.
ivlen
;
memcpy
(
skb
->
nh
.
raw
,
tmp_hdr
,
hdr_len
);
memcpy
(
skb
->
nh
.
raw
,
tmp_hdr
,
hdr_len
);
skb
->
nh
.
ipv6h
->
payload_len
=
htons
(
skb
->
len
-
sizeof
(
struct
ipv6hdr
));
skb
->
nh
.
ipv6h
->
payload_len
=
htons
(
skb
->
len
-
sizeof
(
struct
ipv6hdr
));
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
ret
=
nexthdr
[
1
];
ret
=
*
prevhdr
=
nexthdr
[
1
];
}
}
out:
out:
...
...
net/ipv6/icmp.c
View file @
74ba310d
...
@@ -646,7 +646,13 @@ static int icmpv6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
...
@@ -646,7 +646,13 @@ static int icmpv6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
break
;
break
;
case
ICMPV6_MGM_REDUCTION
:
case
ICMPV6_MGM_REDUCTION
:
case
ICMPV6_NI_QUERY
:
case
ICMPV6_NI_REPLY
:
case
ICMPV6_MLD2_REPORT
:
case
ICMPV6_MLD2_REPORT
:
case
ICMPV6_DHAAD_REQUEST
:
case
ICMPV6_DHAAD_REPLY
:
case
ICMPV6_MOBILE_PREFIX_SOL
:
case
ICMPV6_MOBILE_PREFIX_ADV
:
break
;
break
;
default:
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
...
@@ -49,7 +49,6 @@ static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, s
{
{
int
err
=
0
;
int
err
=
0
;
u8
nexthdr
=
0
;
u8
nexthdr
=
0
;
u8
*
prevhdr
;
int
hdr_len
=
skb
->
h
.
raw
-
skb
->
nh
.
raw
;
int
hdr_len
=
skb
->
h
.
raw
-
skb
->
nh
.
raw
;
unsigned
char
*
tmp_hdr
=
NULL
;
unsigned
char
*
tmp_hdr
=
NULL
;
struct
ipv6hdr
*
iph
;
struct
ipv6hdr
*
iph
;
...
@@ -106,8 +105,6 @@ static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, s
...
@@ -106,8 +105,6 @@ static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, s
iph
=
skb
->
nh
.
ipv6h
;
iph
=
skb
->
nh
.
ipv6h
;
iph
->
payload_len
=
htons
(
skb
->
len
);
iph
->
payload_len
=
htons
(
skb
->
len
);
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
*
prevhdr
=
nexthdr
;
out:
out:
if
(
tmp_hdr
)
if
(
tmp_hdr
)
kfree
(
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)
...
@@ -692,7 +692,7 @@ static int ipv6_get_mtu(struct net_device *dev)
return
mtu
;
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
);
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)
...
@@ -34,12 +34,11 @@ int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
struct
xfrm_state
*
x
;
struct
xfrm_state
*
x
;
int
xfrm_nr
=
0
;
int
xfrm_nr
=
0
;
int
decaps
=
0
;
int
decaps
=
0
;
int
nexthdr
=
0
;
int
nexthdr
;
u
8
*
prevhdr
=
NULL
;
u
nsigned
int
nhoff
;
ip6_find_1stfragopt
(
skb
,
&
prevhdr
);
nhoff
=
*
nhoffp
;
nexthdr
=
*
prevhdr
;
nexthdr
=
skb
->
nh
.
raw
[
nhoff
];
*
nhoffp
=
prevhdr
-
skb
->
nh
.
raw
;
if
((
err
=
xfrm_parse_spi
(
skb
,
nexthdr
,
&
spi
,
&
seq
))
!=
0
)
if
((
err
=
xfrm_parse_spi
(
skb
,
nexthdr
,
&
spi
,
&
seq
))
!=
0
)
goto
drop
;
goto
drop
;
...
@@ -67,6 +66,8 @@ int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
...
@@ -67,6 +66,8 @@ int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp)
if
(
nexthdr
<=
0
)
if
(
nexthdr
<=
0
)
goto
drop_unlock
;
goto
drop_unlock
;
skb
->
nh
.
raw
[
nhoff
]
=
nexthdr
;
if
(
x
->
props
.
replay_window
)
if
(
x
->
props
.
replay_window
)
xfrm_replay_advance
(
x
,
seq
);
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)
...
@@ -236,12 +236,12 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
kfree
(
tp
);
kfree
(
tp
);
goto
errout
;
goto
errout
;
}
}
write_lock
(
&
qdisc_tree_lock
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc_lock_tree
(
dev
);
tp
->
next
=
*
back
;
tp
->
next
=
*
back
;
*
back
=
tp
;
*
back
=
tp
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
qdisc_unlock_tree
(
dev
);
write_unlock
(
&
qdisc_tree_lock
);
}
else
if
(
tca
[
TCA_KIND
-
1
]
&&
rtattr_strcmp
(
tca
[
TCA_KIND
-
1
],
tp
->
ops
->
kind
))
}
else
if
(
tca
[
TCA_KIND
-
1
]
&&
rtattr_strcmp
(
tca
[
TCA_KIND
-
1
],
tp
->
ops
->
kind
))
goto
errout
;
goto
errout
;
...
@@ -249,11 +249,10 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
...
@@ -249,11 +249,10 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
if
(
fh
==
0
)
{
if
(
fh
==
0
)
{
if
(
n
->
nlmsg_type
==
RTM_DELTFILTER
&&
t
->
tcm_handle
==
0
)
{
if
(
n
->
nlmsg_type
==
RTM_DELTFILTER
&&
t
->
tcm_handle
==
0
)
{
write_lock
(
&
qdisc_tree_lock
);
qdisc_lock_tree
(
dev
);
spin_lock_bh
(
&
dev
->
queue_lock
);
*
back
=
tp
->
next
;
*
back
=
tp
->
next
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
qdisc_unlock_tree
(
dev
);
write_unlock
(
&
qdisc_tree_lock
);
tfilter_notify
(
skb
,
n
,
tp
,
fh_s
,
RTM_DELTFILTER
);
tfilter_notify
(
skb
,
n
,
tp
,
fh_s
,
RTM_DELTFILTER
);
tcf_destroy
(
tp
);
tcf_destroy
(
tp
);
err
=
0
;
err
=
0
;
...
@@ -294,6 +293,19 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
...
@@ -294,6 +293,19 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
return
err
;
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
static
int
tcf_fill_node
(
struct
sk_buff
*
skb
,
struct
tcf_proto
*
tp
,
unsigned
long
fh
,
tcf_fill_node
(
struct
sk_buff
*
skb
,
struct
tcf_proto
*
tp
,
unsigned
long
fh
,
u32
pid
,
u32
seq
,
unsigned
flags
,
int
event
)
u32
pid
,
u32
seq
,
unsigned
flags
,
int
event
)
...
@@ -459,3 +471,4 @@ subsys_initcall(tc_filter_init);
...
@@ -459,3 +471,4 @@ subsys_initcall(tc_filter_init);
EXPORT_SYMBOL
(
register_tcf_proto_ops
);
EXPORT_SYMBOL
(
register_tcf_proto_ops
);
EXPORT_SYMBOL
(
unregister_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)
...
@@ -306,8 +306,7 @@ dev_graft_qdisc(struct net_device *dev, struct Qdisc *qdisc)
if
(
dev
->
flags
&
IFF_UP
)
if
(
dev
->
flags
&
IFF_UP
)
dev_deactivate
(
dev
);
dev_deactivate
(
dev
);
write_lock
(
&
qdisc_tree_lock
);
qdisc_lock_tree
(
dev
);
spin_lock_bh
(
&
dev
->
queue_lock
);
if
(
qdisc
&&
qdisc
->
flags
&
TCQ_F_INGRES
)
{
if
(
qdisc
&&
qdisc
->
flags
&
TCQ_F_INGRES
)
{
oqdisc
=
dev
->
qdisc_ingress
;
oqdisc
=
dev
->
qdisc_ingress
;
/* Prune old scheduler */
/* Prune old scheduler */
...
@@ -334,8 +333,7 @@ dev_graft_qdisc(struct net_device *dev, struct Qdisc *qdisc)
...
@@ -334,8 +333,7 @@ dev_graft_qdisc(struct net_device *dev, struct Qdisc *qdisc)
dev
->
qdisc
=
&
noop_qdisc
;
dev
->
qdisc
=
&
noop_qdisc
;
}
}
spin_unlock_bh
(
&
dev
->
queue_lock
);
qdisc_unlock_tree
(
dev
);
write_unlock
(
&
qdisc_tree_lock
);
if
(
dev
->
flags
&
IFF_UP
)
if
(
dev
->
flags
&
IFF_UP
)
dev_activate
(
dev
);
dev_activate
(
dev
);
...
@@ -454,10 +452,11 @@ qdisc_create(struct net_device *dev, u32 handle, struct rtattr **tca, int *errp)
...
@@ -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 */
* before we set a netdevice's qdisc pointer to sch */
smp_wmb
();
smp_wmb
();
if
(
!
ops
->
init
||
(
err
=
ops
->
init
(
sch
,
tca
[
TCA_OPTIONS
-
1
]))
==
0
)
{
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
;
sch
->
next
=
dev
->
qdisc_list
;
dev
->
qdisc_list
=
sch
;
dev
->
qdisc_list
=
sch
;
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
#ifdef CONFIG_NET_ESTIMATOR
#ifdef CONFIG_NET_ESTIMATOR
if
(
tca
[
TCA_RATE
-
1
])
if
(
tca
[
TCA_RATE
-
1
])
qdisc_new_estimator
(
&
sch
->
stats
,
sch
->
stats_lock
,
qdisc_new_estimator
(
&
sch
->
stats
,
sch
->
stats_lock
,
...
...
net/sched/sch_generic.c
View file @
74ba310d
...
@@ -54,6 +54,18 @@
...
@@ -54,6 +54,18 @@
*/
*/
rwlock_t
qdisc_tree_lock
=
RW_LOCK_UNLOCKED
;
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
dev->queue_lock serializes queue accesses for this device
AND dev->qdisc pointer itself.
AND dev->qdisc pointer itself.
...
@@ -513,13 +525,11 @@ void dev_deactivate(struct net_device *dev)
...
@@ -513,13 +525,11 @@ void dev_deactivate(struct net_device *dev)
void
dev_init_scheduler
(
struct
net_device
*
dev
)
void
dev_init_scheduler
(
struct
net_device
*
dev
)
{
{
write_lock
(
&
qdisc_tree_lock
);
qdisc_lock_tree
(
dev
);
spin_lock_bh
(
&
dev
->
queue_lock
);
dev
->
qdisc
=
&
noop_qdisc
;
dev
->
qdisc
=
&
noop_qdisc
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
dev
->
qdisc_list
=
NULL
;
dev
->
qdisc_list
=
NULL
;
write_unlock
(
&
qdisc_tree_lock
);
qdisc_unlock_tree
(
dev
);
dev_watchdog_init
(
dev
);
dev_watchdog_init
(
dev
);
}
}
...
@@ -528,8 +538,7 @@ void dev_shutdown(struct net_device *dev)
...
@@ -528,8 +538,7 @@ void dev_shutdown(struct net_device *dev)
{
{
struct
Qdisc
*
qdisc
;
struct
Qdisc
*
qdisc
;
write_lock
(
&
qdisc_tree_lock
);
qdisc_lock_tree
(
dev
);
spin_lock_bh
(
&
dev
->
queue_lock
);
qdisc
=
dev
->
qdisc_sleeping
;
qdisc
=
dev
->
qdisc_sleeping
;
dev
->
qdisc
=
&
noop_qdisc
;
dev
->
qdisc
=
&
noop_qdisc
;
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
dev
->
qdisc_sleeping
=
&
noop_qdisc
;
...
@@ -543,8 +552,7 @@ void dev_shutdown(struct net_device *dev)
...
@@ -543,8 +552,7 @@ void dev_shutdown(struct net_device *dev)
BUG_TRAP
(
dev
->
qdisc_list
==
NULL
);
BUG_TRAP
(
dev
->
qdisc_list
==
NULL
);
BUG_TRAP
(
!
timer_pending
(
&
dev
->
watchdog_timer
));
BUG_TRAP
(
!
timer_pending
(
&
dev
->
watchdog_timer
));
dev
->
qdisc_list
=
NULL
;
dev
->
qdisc_list
=
NULL
;
spin_unlock_bh
(
&
dev
->
queue_lock
);
qdisc_unlock_tree
(
dev
);
write_unlock
(
&
qdisc_tree_lock
);
}
}
EXPORT_SYMBOL
(
__netdev_watchdog_up
);
EXPORT_SYMBOL
(
__netdev_watchdog_up
);
...
@@ -554,4 +562,5 @@ EXPORT_SYMBOL(qdisc_create_dflt);
...
@@ -554,4 +562,5 @@ EXPORT_SYMBOL(qdisc_create_dflt);
EXPORT_SYMBOL
(
qdisc_destroy
);
EXPORT_SYMBOL
(
qdisc_destroy
);
EXPORT_SYMBOL
(
qdisc_reset
);
EXPORT_SYMBOL
(
qdisc_reset
);
EXPORT_SYMBOL
(
qdisc_restart
);
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)
...
@@ -267,6 +267,8 @@ static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
if
(
err
)
if
(
err
)
return
err
;
return
err
;
xfrm_probe_algs
();
x
=
xfrm_state_construct
(
p
,
(
struct
rtattr
**
)
xfrma
,
&
err
);
x
=
xfrm_state_construct
(
p
,
(
struct
rtattr
**
)
xfrma
,
&
err
);
if
(
!
x
)
if
(
!
x
)
return
err
;
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