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
c337ffb6
Commit
c337ffb6
authored
Mar 15, 2011
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
30df754d
84c0c693
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
70 additions
and
45 deletions
+70
-45
Documentation/networking/bonding.txt
Documentation/networking/bonding.txt
+17
-9
drivers/net/ariadne.c
drivers/net/ariadne.c
+0
-5
drivers/net/bnx2x/bnx2x_main.c
drivers/net/bnx2x/bnx2x_main.c
+1
-1
drivers/net/can/usb/esd_usb2.c
drivers/net/can/usb/esd_usb2.c
+3
-3
drivers/net/davinci_emac.c
drivers/net/davinci_emac.c
+1
-1
drivers/net/macvlan.c
drivers/net/macvlan.c
+3
-0
drivers/net/smsc911x.c
drivers/net/smsc911x.c
+2
-2
drivers/net/usb/cdc-phonet.c
drivers/net/usb/cdc-phonet.c
+3
-7
drivers/net/xen-netfront.c
drivers/net/xen-netfront.c
+2
-2
net/bridge/br_stp.c
net/bridge/br_stp.c
+2
-2
net/ipv4/tcp_cubic.c
net/ipv4/tcp_cubic.c
+34
-11
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+1
-1
net/unix/af_unix.c
net/unix/af_unix.c
+1
-1
No files found.
Documentation/networking/bonding.txt
View file @
c337ffb6
...
...
@@ -2558,18 +2558,15 @@ enslaved.
16. Resources and Links
=======================
The latest version of the bonding driver can be found in the latest
The latest version of the bonding driver can be found in the latest
version of the linux kernel, found on http://kernel.org
The latest version of this document can be found in either the latest
kernel source (named Documentation/networking/bonding.txt), or on the
bonding sourceforge site:
The latest version of this document can be found in the latest kernel
source (named Documentation/networking/bonding.txt).
http://www.sourceforge.net/projects/bonding
Discussions regarding the bonding driver take place primarily on the
bonding-devel mailing list, hosted at sourceforge.net. If you have
questions or problems, post them to the list. The list address is:
Discussions regarding the usage of the bonding driver take place on the
bonding-devel mailing list, hosted at sourceforge.net. If you have questions or
problems, post them to the list. The list address is:
bonding-devel@lists.sourceforge.net
...
...
@@ -2578,6 +2575,17 @@ be found at:
https://lists.sourceforge.net/lists/listinfo/bonding-devel
Discussions regarding the developpement of the bonding driver take place
on the main Linux network mailing list, hosted at vger.kernel.org. The list
address is:
netdev@vger.kernel.org
The administrative interface (to subscribe or unsubscribe) can
be found at:
http://vger.kernel.org/vger-lists.html#netdev
Donald Becker's Ethernet Drivers and diag programs may be found at :
- http://web.archive.org/web/*/http://www.scyld.com/network/
...
...
drivers/net/ariadne.c
View file @
c337ffb6
...
...
@@ -425,11 +425,6 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
int
csr0
,
boguscnt
;
int
handled
=
0
;
if
(
dev
==
NULL
)
{
printk
(
KERN_WARNING
"ariadne_interrupt(): irq for unknown device.
\n
"
);
return
IRQ_NONE
;
}
lance
->
RAP
=
CSR0
;
/* PCnet-ISA Controller Status */
if
(
!
(
lance
->
RDP
&
INTR
))
/* Check if any interrupt has been */
...
...
drivers/net/bnx2x/bnx2x_main.c
View file @
c337ffb6
...
...
@@ -4229,7 +4229,7 @@ void bnx2x_update_coalesce(struct bnx2x *bp)
for_each_eth_queue
(
bp
,
i
)
bnx2x_update_coalesce_sb
(
bp
,
bp
->
fp
[
i
].
fw_sb_id
,
bp
->
rx_ticks
,
bp
->
t
x_ticks
);
bp
->
tx_ticks
,
bp
->
r
x_ticks
);
}
static
void
bnx2x_init_sp_ring
(
struct
bnx2x
*
bp
)
...
...
drivers/net/can/usb/esd_usb2.c
View file @
c337ffb6
...
...
@@ -659,7 +659,7 @@ static int esd_usb2_start(struct esd_usb2_net_priv *priv)
static
void
unlink_all_urbs
(
struct
esd_usb2
*
dev
)
{
struct
esd_usb2_net_priv
*
priv
;
int
i
;
int
i
,
j
;
usb_kill_anchored_urbs
(
&
dev
->
rx_submitted
);
for
(
i
=
0
;
i
<
dev
->
net_count
;
i
++
)
{
...
...
@@ -668,8 +668,8 @@ static void unlink_all_urbs(struct esd_usb2 *dev)
usb_kill_anchored_urbs
(
&
priv
->
tx_submitted
);
atomic_set
(
&
priv
->
active_tx_jobs
,
0
);
for
(
i
=
0
;
i
<
MAX_TX_URBS
;
i
++
)
priv
->
tx_contexts
[
i
].
echo_index
=
MAX_TX_URBS
;
for
(
j
=
0
;
j
<
MAX_TX_URBS
;
j
++
)
priv
->
tx_contexts
[
j
].
echo_index
=
MAX_TX_URBS
;
}
}
}
...
...
drivers/net/davinci_emac.c
View file @
c337ffb6
...
...
@@ -1730,7 +1730,7 @@ static struct net_device_stats *emac_dev_getnetstats(struct net_device *ndev)
emac_read
(
EMAC_TXCARRIERSENSE
);
emac_write
(
EMAC_TXCARRIERSENSE
,
stats_clear_mask
);
ndev
->
stats
.
tx_fifo_errors
=
emac_read
(
EMAC_TXUNDERRUN
);
ndev
->
stats
.
tx_fifo_errors
+
=
emac_read
(
EMAC_TXUNDERRUN
);
emac_write
(
EMAC_TXUNDERRUN
,
stats_clear_mask
);
return
&
ndev
->
stats
;
...
...
drivers/net/macvlan.c
View file @
c337ffb6
...
...
@@ -219,9 +219,11 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
const
struct
macvlan_dev
*
vlan
=
netdev_priv
(
dev
);
const
struct
macvlan_port
*
port
=
vlan
->
port
;
const
struct
macvlan_dev
*
dest
;
__u8
ip_summed
=
skb
->
ip_summed
;
if
(
vlan
->
mode
==
MACVLAN_MODE_BRIDGE
)
{
const
struct
ethhdr
*
eth
=
(
void
*
)
skb
->
data
;
skb
->
ip_summed
=
CHECKSUM_UNNECESSARY
;
/* send to other bridge ports directly */
if
(
is_multicast_ether_addr
(
eth
->
h_dest
))
{
...
...
@@ -241,6 +243,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
}
xmit_world:
skb
->
ip_summed
=
ip_summed
;
skb_set_dev
(
skb
,
vlan
->
lowerdev
);
return
dev_queue_xmit
(
skb
);
}
...
...
drivers/net/smsc911x.c
View file @
c337ffb6
...
...
@@ -791,8 +791,8 @@ static int smsc911x_mii_probe(struct net_device *dev)
return
-
ENODEV
;
}
SMSC_TRACE
(
PROBE
,
"PHY
%d
: addr %d, phy_id 0x%08X"
,
phy
_addr
,
phy
dev
->
addr
,
phydev
->
phy_id
);
SMSC_TRACE
(
PROBE
,
"PHY: addr %d, phy_id 0x%08X"
,
phydev
->
addr
,
phydev
->
phy_id
);
ret
=
phy_connect_direct
(
dev
,
phydev
,
&
smsc911x_phy_adjust_link
,
0
,
...
...
drivers/net/usb/cdc-phonet.c
View file @
c337ffb6
...
...
@@ -328,13 +328,13 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
{
static
const
char
ifname
[]
=
"usbpn%d"
;
const
struct
usb_cdc_union_desc
*
union_header
=
NULL
;
const
struct
usb_cdc_header_desc
*
phonet_header
=
NULL
;
const
struct
usb_host_interface
*
data_desc
;
struct
usb_interface
*
data_intf
;
struct
usb_device
*
usbdev
=
interface_to_usbdev
(
intf
);
struct
net_device
*
dev
;
struct
usbpn_dev
*
pnd
;
u8
*
data
;
int
phonet
=
0
;
int
len
,
err
;
data
=
intf
->
altsetting
->
extra
;
...
...
@@ -355,10 +355,7 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
(
struct
usb_cdc_union_desc
*
)
data
;
break
;
case
0xAB
:
if
(
phonet_header
||
dlen
<
5
)
break
;
phonet_header
=
(
struct
usb_cdc_header_desc
*
)
data
;
phonet
=
1
;
break
;
}
}
...
...
@@ -366,7 +363,7 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
len
-=
dlen
;
}
if
(
!
union_header
||
!
phonet
_header
)
if
(
!
union_header
||
!
phonet
)
return
-
EINVAL
;
data_intf
=
usb_ifnum_to_if
(
usbdev
,
union_header
->
bSlaveInterface0
);
...
...
@@ -392,7 +389,6 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id)
pnd
=
netdev_priv
(
dev
);
SET_NETDEV_DEV
(
dev
,
&
intf
->
dev
);
netif_stop_queue
(
dev
);
pnd
->
dev
=
dev
;
pnd
->
usb
=
usb_get_dev
(
usbdev
);
...
...
drivers/net/xen-netfront.c
View file @
c337ffb6
...
...
@@ -122,7 +122,7 @@ struct netfront_info {
struct
mmu_update
rx_mmu
[
NET_RX_RING_SIZE
];
/* Statistics */
int
rx_gso_checksum_fixup
;
unsigned
long
rx_gso_checksum_fixup
;
};
struct
netfront_rx_info
{
...
...
@@ -1692,7 +1692,7 @@ static void xennet_get_ethtool_stats(struct net_device *dev,
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
xennet_stats
);
i
++
)
data
[
i
]
=
*
(
int
*
)(
np
+
xennet_stats
[
i
].
offset
);
data
[
i
]
=
*
(
unsigned
long
*
)(
np
+
xennet_stats
[
i
].
offset
);
}
static
void
xennet_get_strings
(
struct
net_device
*
dev
,
u32
stringset
,
u8
*
data
)
...
...
net/bridge/br_stp.c
View file @
c337ffb6
...
...
@@ -375,12 +375,12 @@ static void br_make_forwarding(struct net_bridge_port *p)
if
(
p
->
state
!=
BR_STATE_BLOCKING
)
return
;
if
(
br
->
forward_delay
==
0
)
{
if
(
br
->
stp_enabled
==
BR_NO_STP
||
br
->
forward_delay
==
0
)
{
p
->
state
=
BR_STATE_FORWARDING
;
br_topology_change_detection
(
br
);
del_timer
(
&
p
->
forward_delay_timer
);
}
else
if
(
p
->
br
->
stp_enabled
==
BR_KERNEL_STP
)
else
if
(
br
->
stp_enabled
==
BR_KERNEL_STP
)
p
->
state
=
BR_STATE_LISTENING
;
else
p
->
state
=
BR_STATE_LEARNING
;
...
...
net/ipv4/tcp_cubic.c
View file @
c337ffb6
...
...
@@ -39,7 +39,7 @@
/* Number of delay samples for detecting the increase of delay */
#define HYSTART_MIN_SAMPLES 8
#define HYSTART_DELAY_MIN (
2
U<<3)
#define HYSTART_DELAY_MIN (
4
U<<3)
#define HYSTART_DELAY_MAX (16U<<3)
#define HYSTART_DELAY_THRESH(x) clamp(x, HYSTART_DELAY_MIN, HYSTART_DELAY_MAX)
...
...
@@ -52,6 +52,7 @@ static int tcp_friendliness __read_mostly = 1;
static
int
hystart
__read_mostly
=
1
;
static
int
hystart_detect
__read_mostly
=
HYSTART_ACK_TRAIN
|
HYSTART_DELAY
;
static
int
hystart_low_window
__read_mostly
=
16
;
static
int
hystart_ack_delta
__read_mostly
=
2
;
static
u32
cube_rtt_scale
__read_mostly
;
static
u32
beta_scale
__read_mostly
;
...
...
@@ -75,6 +76,8 @@ MODULE_PARM_DESC(hystart_detect, "hyrbrid slow start detection mechanisms"
" 1: packet-train 2: delay 3: both packet-train and delay"
);
module_param
(
hystart_low_window
,
int
,
0644
);
MODULE_PARM_DESC
(
hystart_low_window
,
"lower bound cwnd for hybrid slow start"
);
module_param
(
hystart_ack_delta
,
int
,
0644
);
MODULE_PARM_DESC
(
hystart_ack_delta
,
"spacing between ack's indicating train (msecs)"
);
/* BIC TCP Parameters */
struct
bictcp
{
...
...
@@ -85,7 +88,7 @@ struct bictcp {
u32
last_time
;
/* time when updated last_cwnd */
u32
bic_origin_point
;
/* origin point of bic function */
u32
bic_K
;
/* time to origin point from the beginning of the current epoch */
u32
delay_min
;
/* min delay */
u32
delay_min
;
/* min delay
(msec << 3)
*/
u32
epoch_start
;
/* beginning of an epoch */
u32
ack_cnt
;
/* number of acks */
u32
tcp_cwnd
;
/* estimated tcp cwnd */
...
...
@@ -95,7 +98,7 @@ struct bictcp {
u8
found
;
/* the exit point is found? */
u32
round_start
;
/* beginning of each round */
u32
end_seq
;
/* end_seq of the round */
u32
last_
jiffies
;
/* last time when the ACK spacing is close */
u32
last_
ack
;
/* last time when the ACK spacing is close */
u32
curr_rtt
;
/* the minimum rtt of current round */
};
...
...
@@ -116,12 +119,21 @@ static inline void bictcp_reset(struct bictcp *ca)
ca
->
found
=
0
;
}
static
inline
u32
bictcp_clock
(
void
)
{
#if HZ < 1000
return
ktime_to_ms
(
ktime_get_real
());
#else
return
jiffies_to_msecs
(
jiffies
);
#endif
}
static
inline
void
bictcp_hystart_reset
(
struct
sock
*
sk
)
{
struct
tcp_sock
*
tp
=
tcp_sk
(
sk
);
struct
bictcp
*
ca
=
inet_csk_ca
(
sk
);
ca
->
round_start
=
ca
->
last_
jiffies
=
jiffies
;
ca
->
round_start
=
ca
->
last_
ack
=
bictcp_clock
()
;
ca
->
end_seq
=
tp
->
snd_nxt
;
ca
->
curr_rtt
=
0
;
ca
->
sample_cnt
=
0
;
...
...
@@ -236,8 +248,8 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
*/
/* change the unit from HZ to bictcp_HZ */
t
=
((
tcp_time_stamp
+
(
ca
->
delay_min
>>
3
)
-
ca
->
epoch_start
)
<<
BICTCP_HZ
)
/
HZ
;
t
=
((
tcp_time_stamp
+
msecs_to_jiffies
(
ca
->
delay_min
>>
3
)
-
ca
->
epoch_start
)
<<
BICTCP_HZ
)
/
HZ
;
if
(
t
<
ca
->
bic_K
)
/* t - K */
offs
=
ca
->
bic_K
-
t
;
...
...
@@ -258,6 +270,13 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
ca
->
cnt
=
100
*
cwnd
;
/* very small increment*/
}
/*
* The initial growth of cubic function may be too conservative
* when the available bandwidth is still unknown.
*/
if
(
ca
->
loss_cwnd
==
0
&&
ca
->
cnt
>
20
)
ca
->
cnt
=
20
;
/* increase cwnd 5% per RTT */
/* TCP Friendly */
if
(
tcp_friendliness
)
{
u32
scale
=
beta_scale
;
...
...
@@ -339,12 +358,12 @@ static void hystart_update(struct sock *sk, u32 delay)
struct
bictcp
*
ca
=
inet_csk_ca
(
sk
);
if
(
!
(
ca
->
found
&
hystart_detect
))
{
u32
curr_jiffies
=
jiffies
;
u32
now
=
bictcp_clock
()
;
/* first detection parameter - ack-train detection */
if
(
curr_jiffies
-
ca
->
last_jiffies
<=
msecs_to_jiffies
(
2
)
)
{
ca
->
last_
jiffies
=
curr_jiffies
;
if
(
curr_jiffies
-
ca
->
round_start
>=
ca
->
delay_min
>>
4
)
if
(
(
s32
)(
now
-
ca
->
last_ack
)
<=
hystart_ack_delta
)
{
ca
->
last_
ack
=
now
;
if
(
(
s32
)(
now
-
ca
->
round_start
)
>
ca
->
delay_min
>>
4
)
ca
->
found
|=
HYSTART_ACK_TRAIN
;
}
...
...
@@ -391,7 +410,7 @@ static void bictcp_acked(struct sock *sk, u32 cnt, s32 rtt_us)
if
((
s32
)(
tcp_time_stamp
-
ca
->
epoch_start
)
<
HZ
)
return
;
delay
=
usecs_to_jiffies
(
rtt_us
)
<<
3
;
delay
=
(
rtt_us
<<
3
)
/
USEC_PER_MSEC
;
if
(
delay
==
0
)
delay
=
1
;
...
...
@@ -447,6 +466,10 @@ static int __init cubictcp_register(void)
/* divide by bic_scale and by constant Srtt (100ms) */
do_div
(
cube_factor
,
bic_scale
*
10
);
/* hystart needs ms clock resolution */
if
(
hystart
&&
HZ
<
1000
)
cubictcp
.
flags
|=
TCP_CONG_RTT_STAMP
;
return
tcp_register_congestion_control
(
&
cubictcp
);
}
...
...
net/ipv4/tcp_input.c
View file @
c337ffb6
...
...
@@ -3350,7 +3350,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
net_invalid_timestamp
()))
rtt_us
=
ktime_us_delta
(
ktime_get_real
(),
last_ackt
);
else
if
(
ca_seq_rtt
>
0
)
else
if
(
ca_seq_rtt
>
=
0
)
rtt_us
=
jiffies_to_usecs
(
ca_seq_rtt
);
}
...
...
net/unix/af_unix.c
View file @
c337ffb6
...
...
@@ -1124,7 +1124,7 @@ static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr,
/* Latch our state.
It is tricky place. We need to grab
wri
te lock and cannot
It is tricky place. We need to grab
our sta
te lock and cannot
drop lock on peer. It is dangerous because deadlock is
possible. Connect to self case and simultaneous
attempt to connect are eliminated by checking socket
...
...
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