Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
b6645c35
Commit
b6645c35
authored
Oct 10, 2008
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge current mainline tree into linux-omap tree
Merge branches 'master' and 'linus'
parents
5b99e69f
3fa8749e
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
140 additions
and
88 deletions
+140
-88
Documentation/cpu-freq/index.txt
Documentation/cpu-freq/index.txt
+4
-6
Documentation/hwmon/adt7473
Documentation/hwmon/adt7473
+5
-13
Documentation/hwmon/sysfs-interface
Documentation/hwmon/sysfs-interface
+12
-0
Makefile
Makefile
+1
-1
arch/mips/sibyte/swarm/platform.c
arch/mips/sibyte/swarm/platform.c
+4
-0
arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
+1
-1
arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
+1
-1
drivers/bluetooth/bpa10x.c
drivers/bluetooth/bpa10x.c
+0
-2
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+5
-3
drivers/hwmon/abituguru3.c
drivers/hwmon/abituguru3.c
+2
-1
drivers/hwmon/it87.c
drivers/hwmon/it87.c
+51
-19
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-blackbird.c
+0
-1
drivers/misc/eeepc-laptop.c
drivers/misc/eeepc-laptop.c
+13
-3
fs/splice.c
fs/splice.c
+3
-0
mm/slob.c
mm/slob.c
+5
-3
net/ax25/af_ax25.c
net/ax25/af_ax25.c
+3
-0
net/ax25/ax25_std_timer.c
net/ax25/ax25_std_timer.c
+5
-3
net/core/dev.c
net/core/dev.c
+16
-27
net/core/rtnetlink.c
net/core/rtnetlink.c
+1
-1
net/ipv4/tcp_hybla.c
net/ipv4/tcp_hybla.c
+5
-1
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+2
-1
net/netrom/af_netrom.c
net/netrom/af_netrom.c
+1
-1
No files found.
Documentation/cpu-freq/index.txt
View file @
b6645c35
...
...
@@ -35,11 +35,9 @@ Mailing List
------------
There is a CPU frequency changing CVS commit and general list where
you can report bugs, problems or submit patches. To post a message,
send an email to cpufreq@lists.linux.org.uk, to subscribe go to
http://lists.linux.org.uk/mailman/listinfo/cpufreq. Previous post to the
mailing list are available to subscribers at
http://lists.linux.org.uk/mailman/private/cpufreq/.
send an email to cpufreq@vger.kernel.org, to subscribe go to
http://vger.kernel.org/vger-lists.html#cpufreq and follow the
instructions there.
Links
-----
...
...
@@ -50,7 +48,7 @@ how to access the CVS repository:
* http://cvs.arm.linux.org.uk/
the CPUFreq Mailing list:
* http://
lists.linux.org.uk/mailman/listinfo/
cpufreq
* http://
vger.kernel.org/vger-lists.html#
cpufreq
Clock and voltage scaling for the SA-1100:
* http://www.lartmaker.nl/projects/scaling
Documentation/hwmon/adt7473
View file @
b6645c35
...
...
@@ -14,14 +14,14 @@ Description
This driver implements support for the Analog Devices ADT7473 chip family.
The
LM85
uses the 2-wire interface compatible with the SMBUS 2.0
The
ADT7473
uses the 2-wire interface compatible with the SMBUS 2.0
specification. Using an analog to digital converter it measures three (3)
temperatures and two (2) voltages. It has
three (3
) 16-bit counters for
temperatures and two (2) voltages. It has
four (4
) 16-bit counters for
measuring fan speed. There are three (3) PWM outputs that can be used
to control fan speed.
A sophisticated control system for the PWM outputs is designed into the
LM85
that allows fan speed to be adjusted automatically based on any of the
ADT7473
that allows fan speed to be adjusted automatically based on any of the
three temperature sensors. Each PWM output is individually adjustable and
programmable. Once configured, the ADT7473 will adjust the PWM outputs in
response to the measured temperatures without further host intervention.
...
...
@@ -46,14 +46,6 @@ from the raw value to get the temperature value.
The Analog Devices datasheet is very detailed and describes a procedure for
determining an optimal configuration for the automatic PWM control.
Hardware Configurations
-----------------------
The ADT7473 chips have an optional SMBALERT output that can be used to
signal the chipset in case a limit is exceeded or the temperature sensors
fail. Individual sensor interrupts can be masked so they won't trigger
SMBALERT. The SMBALERT output if configured replaces the PWM2 function.
Configuration Notes
-------------------
...
...
@@ -61,8 +53,8 @@ Besides standard interfaces driver adds the following:
* PWM Control
* pwm#_auto_point1_pwm and
pwm
#_auto_point1_temp and
* pwm#_auto_point2_pwm and
pwm
#_auto_point2_temp -
* pwm#_auto_point1_pwm and
temp
#_auto_point1_temp and
* pwm#_auto_point2_pwm and
temp
#_auto_point2_temp -
point1: Set the pwm speed at a lower temperature bound.
point2: Set the pwm speed at a higher temperature bound.
...
...
Documentation/hwmon/sysfs-interface
View file @
b6645c35
...
...
@@ -329,6 +329,10 @@ power[1-*]_average Average power use
Unit: microWatt
RO
power[1-*]_average_interval Power use averaging interval
Unit: milliseconds
RW
power[1-*]_average_highest Historical average maximum power use
Unit: microWatt
RO
...
...
@@ -353,6 +357,14 @@ power[1-*]_reset_history Reset input_highest, input_lowest,
average_highest and average_lowest.
WO
**********
* Energy *
**********
energy[1-*]_input Cumulative energy use
Unit: microJoule
RO
**********
* Alarms *
**********
...
...
Makefile
View file @
b6645c35
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
27
EXTRAVERSION
=
-rc9
EXTRAVERSION
=
NAME
=
Rotary Wombat
# *DOCUMENTATION*
...
...
arch/mips/sibyte/swarm/platform.c
View file @
b6645c35
...
...
@@ -9,6 +9,8 @@
#include <asm/sibyte/sb1250_genbus.h>
#include <asm/sibyte/sb1250_regs.h>
#if defined(CONFIG_SIBYTE_SWARM) || defined(CONFIG_SIBYTE_LITTLESUR)
#define DRV_NAME "pata-swarm"
#define SWARM_IDE_SHIFT 5
...
...
@@ -79,3 +81,5 @@ static int __init swarm_pata_init(void)
}
device_initcall
(
swarm_pata_init
);
#endif
/* defined(CONFIG_SIBYTE_SWARM) || defined(CONFIG_SIBYTE_LITTLESUR) */
arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
View file @
b6645c35
...
...
@@ -171,7 +171,7 @@ static unsigned int cpufreq_p4_get_frequency(struct cpuinfo_x86 *c)
}
if
(
c
->
x86
!=
0xF
)
{
printk
(
KERN_WARNING
PFX
"Unknown p4-clockmod-capable CPU. Please send an e-mail to <cpufreq@
lists.linux.org.uk
>
\n
"
);
printk
(
KERN_WARNING
PFX
"Unknown p4-clockmod-capable CPU. Please send an e-mail to <cpufreq@
vger.kernel.org
>
\n
"
);
return
0
;
}
...
...
arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
View file @
b6645c35
...
...
@@ -26,7 +26,7 @@
#include <asm/cpufeature.h>
#define PFX "speedstep-centrino: "
#define MAINTAINER "cpufreq@
lists.linux.org.uk
"
#define MAINTAINER "cpufreq@
vger.kernel.org
"
#define dprintk(msg...) \
cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "speedstep-centrino", msg)
...
...
drivers/bluetooth/bpa10x.c
View file @
b6645c35
...
...
@@ -256,7 +256,6 @@ static inline int bpa10x_submit_intr_urb(struct hci_dev *hdev)
BT_ERR
(
"%s urb %p submission failed (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
kfree
(
buf
);
}
usb_free_urb
(
urb
);
...
...
@@ -298,7 +297,6 @@ static inline int bpa10x_submit_bulk_urb(struct hci_dev *hdev)
BT_ERR
(
"%s urb %p submission failed (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
kfree
(
buf
);
}
usb_free_urb
(
urb
);
...
...
drivers/bluetooth/btusb.c
View file @
b6645c35
...
...
@@ -102,6 +102,7 @@ static struct usb_device_id blacklist_table[] = {
{
USB_DEVICE
(
0x0a5c
,
0x2101
),
.
driver_info
=
BTUSB_RESET
|
BTUSB_WRONG_SCO_MTU
},
/* Broadcom BCM2046 */
{
USB_DEVICE
(
0x0a5c
,
0x2146
),
.
driver_info
=
BTUSB_RESET
},
{
USB_DEVICE
(
0x0a5c
,
0x2151
),
.
driver_info
=
BTUSB_RESET
},
/* Apple MacBook Pro with Broadcom chip */
...
...
@@ -113,6 +114,7 @@ static struct usb_device_id blacklist_table[] = {
/* Targus ACB10US */
{
USB_DEVICE
(
0x0a5c
,
0x2100
),
.
driver_info
=
BTUSB_RESET
},
{
USB_DEVICE
(
0x0a5c
,
0x2154
),
.
driver_info
=
BTUSB_RESET
},
/* ANYCOM Bluetooth USB-200 and USB-250 */
{
USB_DEVICE
(
0x0a5c
,
0x2111
),
.
driver_info
=
BTUSB_RESET
},
...
...
@@ -150,6 +152,9 @@ static struct usb_device_id blacklist_table[] = {
{
USB_DEVICE
(
0x050d
,
0x0012
),
.
driver_info
=
BTUSB_RESET
|
BTUSB_WRONG_SCO_MTU
},
{
USB_DEVICE
(
0x050d
,
0x0013
),
.
driver_info
=
BTUSB_RESET
|
BTUSB_WRONG_SCO_MTU
},
/* Belkin F8T016 device */
{
USB_DEVICE
(
0x050d
,
0x016a
),
.
driver_info
=
BTUSB_RESET
},
/* Digianswer devices */
{
USB_DEVICE
(
0x08fd
,
0x0001
),
.
driver_info
=
BTUSB_DIGIANSWER
},
{
USB_DEVICE
(
0x08fd
,
0x0002
),
.
driver_info
=
BTUSB_IGNORE
},
...
...
@@ -271,7 +276,6 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev)
BT_ERR
(
"%s urb %p submission failed (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
kfree
(
buf
);
}
usb_free_urb
(
urb
);
...
...
@@ -354,7 +358,6 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev)
BT_ERR
(
"%s urb %p submission failed (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
kfree
(
buf
);
}
usb_free_urb
(
urb
);
...
...
@@ -475,7 +478,6 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev)
BT_ERR
(
"%s urb %p submission failed (%d)"
,
hdev
->
name
,
urb
,
-
err
);
usb_unanchor_urb
(
urb
);
kfree
(
buf
);
}
usb_free_urb
(
urb
);
...
...
drivers/hwmon/abituguru3.c
View file @
b6645c35
...
...
@@ -279,7 +279,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
{
"OTES1 Fan"
,
36
,
2
,
60
,
1
,
0
},
{
NULL
,
0
,
0
,
0
,
0
,
0
}
}
},
{
0x0011
,
NULL
/* Abit AT8 32X, need DMI string */
,
{
{
0x0011
,
"AT8 32X(ATI RD580-ULI M1575)"
,
{
{
"CPU Core"
,
0
,
0
,
10
,
1
,
0
},
{
"DDR"
,
1
,
0
,
20
,
1
,
0
},
{
"DDR VTT"
,
2
,
0
,
10
,
1
,
0
},
...
...
@@ -303,6 +303,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
{
"SYS Fan"
,
34
,
2
,
60
,
1
,
0
},
{
"AUX1 Fan"
,
35
,
2
,
60
,
1
,
0
},
{
"AUX2 Fan"
,
36
,
2
,
60
,
1
,
0
},
{
"AUX3 Fan"
,
37
,
2
,
60
,
1
,
0
},
{
NULL
,
0
,
0
,
0
,
0
,
0
}
}
},
{
0x0012
,
NULL
/* Abit AN8 32X, need DMI string */
,
{
...
...
drivers/hwmon/it87.c
View file @
b6645c35
...
...
@@ -46,6 +46,8 @@
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/sysfs.h>
#include <linux/string.h>
#include <linux/dmi.h>
#include <asm/io.h>
#define DRVNAME "it87"
...
...
@@ -236,6 +238,8 @@ struct it87_sio_data {
/* Values read from Super-I/O config space */
u8
revision
;
u8
vid_value
;
/* Values set based on DMI strings */
u8
skip_pwm
;
};
/* For each registered chip, we need to keep some data in memory.
...
...
@@ -964,6 +968,7 @@ static int __init it87_find(unsigned short *address,
{
int
err
=
-
ENODEV
;
u16
chip_type
;
const
char
*
board_vendor
,
*
board_name
;
superio_enter
();
chip_type
=
force_id
?
force_id
:
superio_inw
(
DEVID
);
...
...
@@ -1022,6 +1027,24 @@ static int __init it87_find(unsigned short *address,
pr_info
(
"it87: in7 is VCCH (+5V Stand-By)
\n
"
);
}
/* Disable specific features based on DMI strings */
board_vendor
=
dmi_get_system_info
(
DMI_BOARD_VENDOR
);
board_name
=
dmi_get_system_info
(
DMI_BOARD_NAME
);
if
(
board_vendor
&&
board_name
)
{
if
(
strcmp
(
board_vendor
,
"nVIDIA"
)
==
0
&&
strcmp
(
board_name
,
"FN68PT"
)
==
0
)
{
/* On the Shuttle SN68PT, FAN_CTL2 is apparently not
connected to a fan, but to something else. One user
has reported instant system power-off when changing
the PWM2 duty cycle, so we disable it.
I use the board name string as the trigger in case
the same board is ever used in other systems. */
pr_info
(
"it87: Disabling pwm2 due to "
"hardware constraints
\n
"
);
sio_data
->
skip_pwm
=
(
1
<<
1
);
}
}
exit:
superio_exit
();
return
err
;
...
...
@@ -1168,25 +1191,33 @@ static int __devinit it87_probe(struct platform_device *pdev)
}
if
(
enable_pwm_interface
)
{
if
((
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm1_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm2_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm3_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm1
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm2
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm3
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm1_freq
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm2_freq
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm3_freq
)))
goto
ERROR4
;
if
(
!
(
sio_data
->
skip_pwm
&
(
1
<<
0
)))
{
if
((
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm1_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm1
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm1_freq
)))
goto
ERROR4
;
}
if
(
!
(
sio_data
->
skip_pwm
&
(
1
<<
1
)))
{
if
((
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm2_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm2
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm2_freq
)))
goto
ERROR4
;
}
if
(
!
(
sio_data
->
skip_pwm
&
(
1
<<
2
)))
{
if
((
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm3_enable
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
sensor_dev_attr_pwm3
.
dev_attr
))
||
(
err
=
device_create_file
(
dev
,
&
dev_attr_pwm3_freq
)))
goto
ERROR4
;
}
}
if
(
data
->
type
==
it8712
||
data
->
type
==
it8716
...
...
@@ -1546,6 +1577,7 @@ static int __init sm_it87_init(void)
unsigned
short
isa_address
=
0
;
struct
it87_sio_data
sio_data
;
memset
(
&
sio_data
,
0
,
sizeof
(
struct
it87_sio_data
));
err
=
it87_find
(
&
isa_address
,
&
sio_data
);
if
(
err
)
return
err
;
...
...
drivers/media/video/cx88/cx88-blackbird.c
View file @
b6645c35
...
...
@@ -1070,7 +1070,6 @@ static int mpeg_open(struct inode *inode, struct file *file)
err
=
drv
->
request_acquire
(
drv
);
if
(
err
!=
0
)
{
dprintk
(
1
,
"%s: Unable to acquire hardware, %d
\n
"
,
__func__
,
err
);
unlock_kernel
();
return
err
;
}
}
...
...
drivers/misc/eeepc-laptop.c
View file @
b6645c35
...
...
@@ -450,12 +450,14 @@ static int eeepc_get_fan_pwm(void)
int
value
=
0
;
read_acpi_int
(
NULL
,
EEEPC_EC_FAN_PWM
,
&
value
);
value
=
value
*
255
/
100
;
return
(
value
);
}
static
void
eeepc_set_fan_pwm
(
int
value
)
{
value
=
SENSORS_LIMIT
(
value
,
0
,
100
);
value
=
SENSORS_LIMIT
(
value
,
0
,
255
);
value
=
value
*
100
/
255
;
ec_write
(
EEEPC_EC_SC02
,
value
);
}
...
...
@@ -520,15 +522,23 @@ static ssize_t show_sys_hwmon(int (*get)(void), char *buf)
static SENSOR_DEVICE_ATTR(_name, _mode, show_##_name, store_##_name, 0);
EEEPC_CREATE_SENSOR_ATTR
(
fan1_input
,
S_IRUGO
,
eeepc_get_fan_rpm
,
NULL
);
EEEPC_CREATE_SENSOR_ATTR
(
fan1_pwm
,
S_IRUGO
|
S_IWUSR
,
EEEPC_CREATE_SENSOR_ATTR
(
pwm1
,
S_IRUGO
|
S_IWUSR
,
eeepc_get_fan_pwm
,
eeepc_set_fan_pwm
);
EEEPC_CREATE_SENSOR_ATTR
(
pwm1_enable
,
S_IRUGO
|
S_IWUSR
,
eeepc_get_fan_ctrl
,
eeepc_set_fan_ctrl
);
static
ssize_t
show_name
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
return
sprintf
(
buf
,
"eeepc
\n
"
);
}
static
SENSOR_DEVICE_ATTR
(
name
,
S_IRUGO
,
show_name
,
NULL
,
0
);
static
struct
attribute
*
hwmon_attributes
[]
=
{
&
sensor_dev_attr_
fan1_pwm
.
dev_attr
.
attr
,
&
sensor_dev_attr_
pwm1
.
dev_attr
.
attr
,
&
sensor_dev_attr_fan1_input
.
dev_attr
.
attr
,
&
sensor_dev_attr_pwm1_enable
.
dev_attr
.
attr
,
&
sensor_dev_attr_name
.
dev_attr
.
attr
,
NULL
};
...
...
fs/splice.c
View file @
b6645c35
...
...
@@ -898,6 +898,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
if
(
unlikely
(
!
(
out
->
f_mode
&
FMODE_WRITE
)))
return
-
EBADF
;
if
(
unlikely
(
out
->
f_flags
&
O_APPEND
))
return
-
EINVAL
;
ret
=
rw_verify_area
(
WRITE
,
out
,
ppos
,
len
);
if
(
unlikely
(
ret
<
0
))
return
ret
;
...
...
mm/slob.c
View file @
b6645c35
...
...
@@ -514,9 +514,11 @@ size_t ksize(const void *block)
return
0
;
sp
=
(
struct
slob_page
*
)
virt_to_page
(
block
);
if
(
slob_page
(
sp
))
return
((
slob_t
*
)
block
-
1
)
->
units
+
SLOB_UNIT
;
else
if
(
slob_page
(
sp
))
{
int
align
=
max
(
ARCH_KMALLOC_MINALIGN
,
ARCH_SLAB_MINALIGN
);
unsigned
int
*
m
=
(
unsigned
int
*
)(
block
-
align
);
return
SLOB_UNITS
(
*
m
)
*
SLOB_UNIT
;
}
else
return
sp
->
page
.
private
;
}
...
...
net/ax25/af_ax25.c
View file @
b6645c35
...
...
@@ -317,6 +317,9 @@ void ax25_destroy_socket(ax25_cb *ax25)
/* Queue the unaccepted socket for death */
sock_orphan
(
skb
->
sk
);
/* 9A4GL: hack to release unaccepted sockets */
skb
->
sk
->
sk_state
=
TCP_LISTEN
;
ax25_start_heartbeat
(
sax25
);
sax25
->
state
=
AX25_STATE_0
;
}
...
...
net/ax25/ax25_std_timer.c
View file @
b6645c35
...
...
@@ -39,9 +39,11 @@ void ax25_std_heartbeat_expiry(ax25_cb *ax25)
switch
(
ax25
->
state
)
{
case
AX25_STATE_0
:
if
(
!
sk
||
sock_flag
(
sk
,
SOCK_DESTROY
)
||
sock_flag
(
sk
,
SOCK_DEAD
))
{
/* Magic here: If we listen() and a new link dies before it
is accepted() it isn't 'dead' so doesn't get removed. */
if
(
!
sk
||
sock_flag
(
sk
,
SOCK_DESTROY
)
||
(
sk
->
sk_state
==
TCP_LISTEN
&&
sock_flag
(
sk
,
SOCK_DEAD
)))
{
if
(
sk
)
{
sock_hold
(
sk
);
ax25_destroy_socket
(
ax25
);
...
...
net/core/dev.c
View file @
b6645c35
...
...
@@ -2918,6 +2918,12 @@ int netdev_set_master(struct net_device *slave, struct net_device *master)
return
0
;
}
static
void
dev_change_rx_flags
(
struct
net_device
*
dev
,
int
flags
)
{
if
(
dev
->
flags
&
IFF_UP
&&
dev
->
change_rx_flags
)
dev
->
change_rx_flags
(
dev
,
flags
);
}
static
int
__dev_set_promiscuity
(
struct
net_device
*
dev
,
int
inc
)
{
unsigned
short
old_flags
=
dev
->
flags
;
...
...
@@ -2955,8 +2961,7 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc)
current
->
uid
,
current
->
gid
,
audit_get_sessionid
(
current
));
if
(
dev
->
change_rx_flags
)
dev
->
change_rx_flags
(
dev
,
IFF_PROMISC
);
dev_change_rx_flags
(
dev
,
IFF_PROMISC
);
}
return
0
;
}
...
...
@@ -3022,8 +3027,7 @@ int dev_set_allmulti(struct net_device *dev, int inc)
}
}
if
(
dev
->
flags
^
old_flags
)
{
if
(
dev
->
change_rx_flags
)
dev
->
change_rx_flags
(
dev
,
IFF_ALLMULTI
);
dev_change_rx_flags
(
dev
,
IFF_ALLMULTI
);
dev_set_rx_mode
(
dev
);
}
return
0
;
...
...
@@ -3347,8 +3351,8 @@ int dev_change_flags(struct net_device *dev, unsigned flags)
* Load in the correct multicast list now the flags have changed.
*/
if
(
dev
->
change_rx_flags
&&
(
old_flags
^
flags
)
&
IFF_MULTICAST
)
dev
->
change_rx_flags
(
dev
,
IFF_MULTICAST
);
if
((
old_flags
^
flags
)
&
IFF_MULTICAST
)
dev
_
change_rx_flags
(
dev
,
IFF_MULTICAST
);
dev_set_rx_mode
(
dev
);
...
...
@@ -3808,14 +3812,11 @@ static int dev_new_index(struct net *net)
}
/* Delayed registration/unregisteration */
static
DEFINE_SPINLOCK
(
net_todo_list_lock
);
static
LIST_HEAD
(
net_todo_list
);
static
void
net_set_todo
(
struct
net_device
*
dev
)
{
spin_lock
(
&
net_todo_list_lock
);
list_add_tail
(
&
dev
->
todo_list
,
&
net_todo_list
);
spin_unlock
(
&
net_todo_list_lock
);
}
static
void
rollback_registered
(
struct
net_device
*
dev
)
...
...
@@ -4142,33 +4143,24 @@ static void netdev_wait_allrefs(struct net_device *dev)
* free_netdev(y1);
* free_netdev(y2);
*
* We are invoked by rtnl_unlock()
after it drops the semaphore
.
* We are invoked by rtnl_unlock().
* This allows us to deal with problems:
* 1) We can delete sysfs objects which invoke hotplug
* without deadlocking with linkwatch via keventd.
* 2) Since we run with the RTNL semaphore not held, we can sleep
* safely in order to wait for the netdev refcnt to drop to zero.
*
* We must not return until all unregister events added during
* the interval the lock was held have been completed.
*/
static
DEFINE_MUTEX
(
net_todo_run_mutex
);
void
netdev_run_todo
(
void
)
{
struct
list_head
list
;
/* Need to guard against multiple cpu's getting out of order. */
mutex_lock
(
&
net_todo_run_mutex
);
/* Not safe to do outside the semaphore. We must not return
* until all unregister events invoked by the local processor
* have been completed (either by this todo run, or one on
* another cpu).
*/
if
(
list_empty
(
&
net_todo_list
))
goto
out
;
/* Snapshot list, allow later requests */
spin_lock
(
&
net_todo_list_lock
);
list_replace_init
(
&
net_todo_list
,
&
list
);
spin_unlock
(
&
net_todo_list_lock
);
__rtnl_unlock
();
while
(
!
list_empty
(
&
list
))
{
struct
net_device
*
dev
...
...
@@ -4200,9 +4192,6 @@ void netdev_run_todo(void)
/* Free network device */
kobject_put
(
&
dev
->
dev
.
kobj
);
}
out:
mutex_unlock
(
&
net_todo_run_mutex
);
}
static
struct
net_device_stats
*
internal_stats
(
struct
net_device
*
dev
)
...
...
net/core/rtnetlink.c
View file @
b6645c35
...
...
@@ -73,7 +73,7 @@ void __rtnl_unlock(void)
void
rtnl_unlock
(
void
)
{
mutex_unlock
(
&
rtnl_mutex
);
/* This fellow will unlock it for us. */
netdev_run_todo
();
}
...
...
net/ipv4/tcp_hybla.c
View file @
b6645c35
...
...
@@ -150,7 +150,11 @@ static void hybla_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
ca
->
snd_cwnd_cents
-=
128
;
tp
->
snd_cwnd_cnt
=
0
;
}
/* check when cwnd has not been incremented for a while */
if
(
increment
==
0
&&
odd
==
0
&&
tp
->
snd_cwnd_cnt
>=
tp
->
snd_cwnd
)
{
tp
->
snd_cwnd
++
;
tp
->
snd_cwnd_cnt
=
0
;
}
/* clamp down slowstart cwnd to ssthresh value. */
if
(
is_slowstart
)
tp
->
snd_cwnd
=
min
(
tp
->
snd_cwnd
,
tp
->
snd_ssthresh
);
...
...
net/ipv4/tcp_input.c
View file @
b6645c35
...
...
@@ -4879,7 +4879,8 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
goto
no_ack
;
}
__tcp_ack_snd_check
(
sk
,
0
);
if
(
!
copied_early
||
tp
->
rcv_nxt
!=
tp
->
rcv_wup
)
__tcp_ack_snd_check
(
sk
,
0
);
no_ack:
#ifdef CONFIG_NET_DMA
if
(
copied_early
)
...
...
net/netrom/af_netrom.c
View file @
b6645c35
...
...
@@ -525,6 +525,7 @@ static int nr_release(struct socket *sock)
if
(
sk
==
NULL
)
return
0
;
sock_hold
(
sk
);
sock_orphan
(
sk
);
lock_sock
(
sk
);
nr
=
nr_sk
(
sk
);
...
...
@@ -548,7 +549,6 @@ static int nr_release(struct socket *sock)
sk
->
sk_state
=
TCP_CLOSE
;
sk
->
sk_shutdown
|=
SEND_SHUTDOWN
;
sk
->
sk_state_change
(
sk
);
sock_orphan
(
sk
);
sock_set_flag
(
sk
,
SOCK_DESTROY
);
break
;
...
...
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