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
nexedi
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