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
be98a001
Commit
be98a001
authored
Oct 05, 2004
by
Richard Russon
Browse files
Options
Browse Files
Download
Plain Diff
Merge flatcap.org:/home/flatcap/backup/bk/ntfs-2.6
into flatcap.org:/home/flatcap/backup/bk/ntfs-2.6-devel
parents
90b154ba
4b3df94c
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
360 additions
and
63 deletions
+360
-63
Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
+15
-0
Documentation/arm/Samsung-S3C24XX/GPIO.txt
Documentation/arm/Samsung-S3C24XX/GPIO.txt
+122
-0
Documentation/arm/Samsung-S3C24XX/Overview.txt
Documentation/arm/Samsung-S3C24XX/Overview.txt
+48
-2
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+6
-0
arch/arm/mach-s3c2410/gpio.c
arch/arm/mach-s3c2410/gpio.c
+38
-1
include/asm-arm/arch-rpc/uncompress.h
include/asm-arm/arch-rpc/uncompress.h
+2
-2
include/asm-arm/arch-s3c2410/hardware.h
include/asm-arm/arch-s3c2410/hardware.h
+16
-1
include/asm-arm/arch-s3c2410/regs-gpio.h
include/asm-arm/arch-s3c2410/regs-gpio.h
+12
-6
include/asm-arm/arch-s3c2410/regs-spi.h
include/asm-arm/arch-s3c2410/regs-spi.h
+56
-0
include/net/pkt_sched.h
include/net/pkt_sched.h
+1
-1
include/net/tcp.h
include/net/tcp.h
+1
-1
net/8021q/vlan.c
net/8021q/vlan.c
+1
-1
net/core/neighbour.c
net/core/neighbour.c
+3
-6
net/ipv4/af_inet.c
net/ipv4/af_inet.c
+0
-1
net/ipv4/ip_gre.c
net/ipv4/ip_gre.c
+6
-5
net/ipv4/ipip.c
net/ipv4/ipip.c
+6
-5
net/ipv4/tcp.c
net/ipv4/tcp.c
+0
-8
net/ipv4/tcp_diag.c
net/ipv4/tcp_diag.c
+0
-2
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+1
-1
net/ipv6/af_inet6.c
net/ipv6/af_inet6.c
+0
-1
net/ipv6/sit.c
net/ipv6/sit.c
+6
-4
net/sched/act_api.c
net/sched/act_api.c
+8
-2
net/sched/cls_api.c
net/sched/cls_api.c
+10
-6
net/sched/cls_fw.c
net/sched/cls_fw.c
+1
-1
net/sched/cls_u32.c
net/sched/cls_u32.c
+1
-6
No files found.
Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
View file @
be98a001
...
...
@@ -26,4 +26,19 @@ Support
and http://www.simtec.co.uk/products/EB2410ITX/resources.html
MTD
---
The NAND and NOR onboard are currently supported in the linux-mtd cvs,
and are awaiting merge in the mainline. see the linux-mtd project at
http://www.linux-mtd.infradead.org/ for more information.
IDE
---
Both onboard IDE ports are supported, however there is no support for
changing speed of devices, PIO Mode 4 capable drives should be used.
(c) 2004 Ben Dooks, Simtec Electronics
Documentation/arm/Samsung-S3C24XX/GPIO.txt
0 → 100644
View file @
be98a001
S3C2410 GPIO Control
====================
Introduction
------------
The s3c2410 kernel provides an interface to configure and
manipulate the state of the GPIO pins, and find out other
information about them.
There are a number of conditions attached to the configuration
of the s3c2410 GPIO system, please read the Samsung provided
data-sheet/users manual to find out the complete list.
Headers
-------
See include/asm-arm/arch-s3c2410/regs-gpio.h for the list
of GPIO pins, and the configuration values for them. This
is included by using #include <asm/arch/regs-gpio.h>
The GPIO management functions are defined in the hardware
header include/asm-arm/arch-s3c2410/hardware.h which can be
included by #include <asm/arch/hardware.h>
A useful ammount of documentation can be found in the hardware
header on how the GPIO functions (and others) work.
Whilst a number of these functions do make some checks on what
is passed to them, for speed of use, they may not always ensure
that the user supplied data to them is correct.
PIN Numbers
-----------
Each pin has an unique number associated with it in regs-gpio.h,
eg S3C2410_GPA0 or S3C2410_GPF1. These defines are used to tell
the GPIO functions which pin is to be used.
Configuring a pin
-----------------
The following function allows the configuration of a given pin to
be changed.
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
Eg:
s3c2410_gpio_cfgpin(S3C2410_GPA0, S3C2410_GPA0_ADDR0);
s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
which would turn GPA0 into the lowest Address line A0, and set
GPE8 to be connected to the SDIO/MMC controller's SDDAT1 line.
Reading the current configuration
---------------------------------
The current configuration of a pin can be read by using:
s3c2410_gpio_getcfg(unsigned int pin);
The return value will be from the same set of values which can be
passed to s3c2410_gpio_cfgpin().
Configuring a pull-up resistor
------------------------------
A large proportion of the GPIO pins on the S3C2410 can have weak
pull-up resistors enabled. This can be configured by the following
function:
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
Where the to value is zero to set the pull-up off, and 1 to enable
the specified pull-up. Any other values are currently undefined.
Getting the state of a PIN
--------------------------
The state of a pin can be read by using the function:
unsigned int s3c2410_gpio_getpin(unsigned int pin);
This will return either zero or non-zero. Do not count on this
function returning 1 if the pin is set.
Setting the state of a PIN
--------------------------
The value an pin is outputing can be modified by using the following:
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
Which sets the given pin to the value. Use 0 to write 0, and 1 to
set the output to 1.
Getting the IRQ number associated with a PIN
--------------------------------------------
The following function can map the given pin number to an IRQ
number to pass to the IRQ system.
int s3c2410_gpio_getirq(unsigned int pin);
Note, not all pins have an IRQ.
Authour
-------
Ben Dooks, 03 October 2004
(c) 2004 Ben Dooks, Simtec Electronics
Documentation/arm/Samsung-S3C24XX/Overview.txt
View file @
be98a001
...
...
@@ -18,6 +18,9 @@ Configuration
default by `make s3c2410_defconfig`. This configuration has support
for all the machines, and the commonly used features on them.
Certain machines may have their own default configurations as well,
please check the machine specific documentation.
Machines
--------
...
...
@@ -42,10 +45,53 @@ Machines
Handheld (IPAQ), available in several varieties
Contributors
------------
NAND
----
The current kernels do not have direct support for the NAND
controller, the latest linux-mtd CVS has support for this.
See http://www.linux-mtd.infradead.org/
Serial
------
The s3c2410 serial driver provides support for the internal
serial ports. These devices appear as /dev/ttySAC0 through 3.
To create device nodes for these, use the following commands
mknod ttySAC0 c 204 64
mknod ttySAC1 c 204 65
mknod ttySAC2 c 204 66
GPIO
----
The core contains support for manipulating the GPIO, see the
documentation in GPIO.txt in the same directory as this file.
Clock Management
----------------
The core provides the interface defined in the header file
include/asm-arm/hardware/clock.h, to allow control over the
various clock units
Port Contributors
-----------------
Ben Dooks
Vincent Sanders
Herbert Potzl
Arnaud Patard
Roc Wu
Document Author
---------------
Ben Dooks, (c) 2004 Simtec Electronics
arch/arm/boot/compressed/head.S
View file @
be98a001
...
...
@@ -349,6 +349,12 @@ LC0: .word LC0 @ r1
LC1
:
.
word
reloc_end
-
reloc_start
.
size
LC0
,
.
-
LC0
.
globl
params
params
:
ldr
r0
,
=
params_phys
mov
pc
,
lr
.
ltorg
.
align
/*
*
Turn
on
the
cache
.
We
need
to
setup
some
page
tables
so
that
we
*
can
have
both
the
I
and
D
caches
on
.
...
...
arch/arm/mach-s3c2410/gpio.c
View file @
be98a001
...
...
@@ -26,7 +26,8 @@
* 30-Sep-2004 BJD Fixed cfgpin() mask bug
* 01-Oct-2004 BJD Added getcfg() to get pin configuration
* 01-Oct-2004 BJD Fixed mask bug in pullup() call
* 01-Oct-2004 BJD Added getoirq() to turn pin into irqno
* 01-Oct-2004 BJD Added getirq() to turn pin into irqno
* 04-Oct-2004 BJD Added irq filter controls for GPIO
*/
...
...
@@ -155,3 +156,39 @@ int s3c2410_gpio_getirq(unsigned int pin)
return
(
pin
-
S3C2410_GPG0
)
+
IRQ_EINT8
;
}
int
s3c2410_gpio_irqfilter
(
unsigned
int
pin
,
unsigned
int
on
,
unsigned
int
config
)
{
unsigned
long
reg
=
S3C2410_EINFLT0
;
unsigned
long
flags
;
unsigned
long
val
;
if
(
pin
<
S3C2410_GPG8
||
pin
>
S3C2410_GPG15
)
return
-
1
;
config
&=
0xff
;
pin
-=
S3C2410_GPG8_EINT16
;
reg
+=
pin
&
~
3
;
local_irq_save
(
flags
);
/* update filter width and clock source */
val
=
__raw_readl
(
reg
);
val
&=
~
(
0xff
<<
((
pin
&
3
)
*
8
));
val
|=
config
<<
((
pin
&
3
)
*
8
);
__raw_writel
(
val
,
reg
);
/* update filter enable */
val
=
__raw_readl
(
S3C2410_EXTINT2
);
val
&=
~
(
1
<<
((
pin
*
4
)
+
3
));
val
|=
on
<<
((
pin
*
4
)
+
3
);
__raw_writel
(
val
,
S3C2410_EXTINT2
);
local_irq_restore
(
flags
);
return
0
;
}
include/asm-arm/arch-rpc/uncompress.h
View file @
be98a001
...
...
@@ -60,8 +60,8 @@ static const unsigned long palette_4[16] = {
* params_phys is a linker defined symbol - see
* arch/arm/boot/compressed/Makefile
*/
extern
struct
param_struct
params_phys
;
#define params (
¶ms_phys
)
extern
__attribute__
((
pure
))
struct
param_struct
*
params
(
void
)
;
#define params (
params()
)
#ifndef STANDALONE_DEBUG
/*
...
...
include/asm-arm/arch-s3c2410/hardware.h
View file @
be98a001
...
...
@@ -48,7 +48,6 @@ extern void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
extern
unsigned
int
s3c2410_gpio_getcfg
(
unsigned
int
pin
);
/* s3c2410_gpio_getirq
*
* turn the given pin number into the corresponding IRQ number
...
...
@@ -60,6 +59,22 @@ extern unsigned int s3c2410_gpio_getcfg(unsigned int pin);
extern
int
s3c2410_gpio_getirq
(
unsigned
int
pin
);
/* s3c2410_gpio_irqfilter
*
* set the irq filtering on the given pin
*
* on = 0 => disable filtering
* 1 => enable filtering
*
* config = S3C2410_EINTFLT_PCLK or S3C2410_EINTFLT_EXTCLK orred with
* width of filter (0 through 63)
*
*
*/
extern
int
s3c2410_gpio_irqfilter
(
unsigned
int
pin
,
unsigned
int
on
,
unsigned
int
config
);
/* s3c2410_gpio_pullup
*
* configure the pull-up control on the given pin
...
...
include/asm-arm/arch-s3c2410/regs-gpio.h
View file @
be98a001
...
...
@@ -14,7 +14,8 @@
* 23-06-2003 BJD Updated GSTATUS registers
* 12-03-2004 BJD Updated include protection
* 20-07-2004 BJD Added GPIO pin numbers, added Port A definitions
*/
* 04-10-2004 BJD Fixed number of bugs, added EXT IRQ filter defs
*/
#ifndef __ASM_ARCH_REGS_GPIO_H
...
...
@@ -614,31 +615,31 @@
#define S3C2410_GPG10_OUTP (0x01 << 20)
#define S3C2410_GPG10_EINT18 (0x02 << 20)
#define S3C2410_GPG1
0 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 10
)
#define S3C2410_GPG1
1 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 11
)
#define S3C2410_GPG11_INP (0x00 << 22)
#define S3C2410_GPG11_OUTP (0x01 << 22)
#define S3C2410_GPG11_EINT19 (0x02 << 22)
#define S3C2410_GPG11_TCLK1 (0x03 << 22)
#define S3C2410_GPG1
0 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 10
)
#define S3C2410_GPG1
2 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 12
)
#define S3C2410_GPG12_INP (0x00 << 24)
#define S3C2410_GPG12_OUTP (0x01 << 24)
#define S3C2410_GPG12_EINT20 (0x02 << 24)
#define S3C2410_GPG12_XMON (0x03 << 24)
#define S3C2410_GPG1
0 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 10
)
#define S3C2410_GPG1
3 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 13
)
#define S3C2410_GPG13_INP (0x00 << 26)
#define S3C2410_GPG13_OUTP (0x01 << 26)
#define S3C2410_GPG13_EINT21 (0x02 << 26)
#define S3C2410_GPG13_nXPON (0x03 << 26)
#define S3C2410_GPG1
0 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 10
)
#define S3C2410_GPG1
4 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 14
)
#define S3C2410_GPG14_INP (0x00 << 28)
#define S3C2410_GPG14_OUTP (0x01 << 28)
#define S3C2410_GPG14_EINT22 (0x02 << 28)
#define S3C2410_GPG14_YMON (0x03 << 28)
#define S3C2410_GPG1
0 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 10
)
#define S3C2410_GPG1
5 S3C2410_GPIONO(S3C2410_GPIO_BANKG, 15
)
#define S3C2410_GPG15_INP (0x00 << 30)
#define S3C2410_GPG15_OUTP (0x01 << 30)
#define S3C2410_GPG15_EINT23 (0x02 << 30)
...
...
@@ -783,6 +784,11 @@
#define S3C2410_EINFLT2 S3C2410_GPIOREG(0x9C)
#define S3C2410_EINFLT3 S3C2410_GPIOREG(0xA0)
/* values for interrupt filtering */
#define S3C2410_EINTFLT_PCLK (0x00)
#define S3C2410_EINTFLT_EXTCLK (1<<7)
#define S3C2410_EINTFLT_WIDTHMSK(x) ((x) & 0x3f)
/* removed EINTxxxx defs from here, not meant for this */
/* GSTATUS have miscellaneous information in them
...
...
include/asm-arm/arch-s3c2410/regs-spi.h
0 → 100644
View file @
be98a001
/* linux/include/asm-arm/arch-s3c2410/regs-spi.h
*
* Copyright (c) 2004 Fetron GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* S3C2410 SPI register definition
*
* Changelog:
* 20-04-2004 KF Created file
* 04-10-2004 BJD Removed VA address (no longer mapped)
* tidied file for submission
*/
#ifndef __ASM_ARCH_REGS_SPI_H
#define __ASM_ARCH_REGS_SPI_H
#define S3C2410_SPCON (0x00)
#define S3C2410_SPCON_SMOD_DMA (2<<5)
/* DMA mode */
#define S3C2410_SPCON_SMOD_INT (1<<5)
/* interrupt mode */
#define S3C2410_SPCON_SMOD_POLL (0<<5)
/* polling mode */
#define S3C2410_SPCON_ENSCK (1<<4)
/* Enable SCK */
#define S3C2410_SPCON_MSTR (1<<3)
/* Master/Slave select
0: slave, 1: master */
#define S3C2410_SPCON_CPOL_HIGH (1<<2)
/* Clock polarity select */
#define S3C2410_SPCON_CPOL_LOW (0<<2)
/* Clock polarity select */
#define S3C2410_SPCON_CPHA_FMTB (1<<1)
/* Clock Phase Select */
#define S3C2410_SPCON_CPHA_FMTA (0<<1)
/* Clock Phase Select */
#define S3C2410_SPCON_TAGD (1<<0)
/* Tx auto garbage data mode */
#define S3C2410_SPSTA (0x04)
#define S3C2410_SPSTA_DCOL (1<<2)
/* Data Collision Error */
#define S3C2410_SPSTA_MULD (1<<1)
/* Multi Master Error */
#define S3C2410_SPSTA_READY (1<<0)
/* Data Tx/Rx ready */
#define S3C2410_SPPIN (0x08)
#define S3C2410_SPPIN_ENMUL (1<<2)
/* Multi Master Error detect */
#define S3C2410_SPPIN_RESERVED (1<<1)
#define S3C2410_SPPIN_KEEP (1<<0)
/* Master Out keep */
#define S3C2410_SPPRE (0x0C)
#define S3C2410_SPTDAT (0x10)
#define S3C2410_SPRDAT (0x14)
#endif
/* __ASM_ARCH_REGS_SPI_H */
include/net/pkt_sched.h
View file @
be98a001
...
...
@@ -376,7 +376,7 @@ struct tc_action_ops
extern
int
tcf_register_action
(
struct
tc_action_ops
*
a
);
extern
int
tcf_unregister_action
(
struct
tc_action_ops
*
a
);
extern
void
tcf_action_destroy
(
struct
tc_action
*
a
,
int
bind
);
extern
int
tcf_action_exec
(
struct
sk_buff
*
skb
,
struct
tc_action
*
a
);
extern
int
tcf_action_exec
(
struct
sk_buff
*
skb
,
struct
tc_action
*
a
,
struct
tcf_result
*
res
);
extern
int
tcf_action_init
(
struct
rtattr
*
rta
,
struct
rtattr
*
est
,
struct
tc_action
*
a
,
char
*
n
,
int
ovr
,
int
bind
);
extern
int
tcf_action_init_1
(
struct
rtattr
*
rta
,
struct
rtattr
*
est
,
struct
tc_action
*
a
,
char
*
n
,
int
ovr
,
int
bind
);
extern
int
tcf_action_dump
(
struct
sk_buff
*
skb
,
struct
tc_action
*
a
,
int
,
int
);
...
...
include/net/tcp.h
View file @
be98a001
...
...
@@ -1167,7 +1167,7 @@ static inline int tcp_skb_pcount(struct sk_buff *skb)
}
/* This is valid iff tcp_skb_pcount() > 1. */
static
inline
int
tcp_skb_
psize
(
struct
sk_buff
*
skb
)
static
inline
int
tcp_skb_
mss
(
struct
sk_buff
*
skb
)
{
return
skb_shinfo
(
skb
)
->
tso_size
;
}
...
...
net/8021q/vlan.c
View file @
be98a001
...
...
@@ -537,7 +537,7 @@ static struct net_device *register_vlan_device(const char *eth_IF_name,
out_free_unregister:
unregister_netdev
(
new_dev
);
goto
out_
put_dev
;
goto
out_
unlock
;
out_free_newdev:
free_netdev
(
new_dev
);
...
...
net/core/neighbour.c
View file @
be98a001
...
...
@@ -406,12 +406,6 @@ struct neighbour *neigh_create(struct neigh_table *tbl, const void *pkey,
goto
out
;
}
if
(
tbl
->
entries
>
(
tbl
->
hash_mask
+
1
))
{
write_lock_bh
(
&
tbl
->
lock
);
neigh_hash_grow
(
tbl
,
(
tbl
->
hash_mask
+
1
)
<<
1
);
write_unlock_bh
(
&
tbl
->
lock
);
}
memcpy
(
n
->
primary_key
,
pkey
,
key_len
);
n
->
dev
=
dev
;
dev_hold
(
dev
);
...
...
@@ -433,6 +427,9 @@ struct neighbour *neigh_create(struct neigh_table *tbl, const void *pkey,
write_lock_bh
(
&
tbl
->
lock
);
if
(
tbl
->
entries
>
(
tbl
->
hash_mask
+
1
))
neigh_hash_grow
(
tbl
,
(
tbl
->
hash_mask
+
1
)
<<
1
);
hash_val
=
tbl
->
hash
(
pkey
,
dev
)
&
tbl
->
hash_mask
;
if
(
n
->
parms
->
dead
)
{
...
...
net/ipv4/af_inet.c
View file @
be98a001
...
...
@@ -312,7 +312,6 @@ static int inet_create(struct socket *sock, int protocol)
sk_set_owner
(
sk
,
THIS_MODULE
);
sk
->
sk_destruct
=
inet_sock_destruct
;
sk
->
sk_zapped
=
0
;
sk
->
sk_family
=
PF_INET
;
sk
->
sk_protocol
=
protocol
;
sk
->
sk_backlog_rcv
=
sk
->
sk_prot
->
backlog_rcv
;
...
...
net/ipv4/ip_gre.c
View file @
be98a001
...
...
@@ -1250,7 +1250,7 @@ static struct net_protocol ipgre_protocol = {
static
int
__init
ipgre_init
(
void
)
{
int
err
=
-
EINVAL
;
int
err
;
printk
(
KERN_INFO
"GRE over IPv4 tunneling driver
\n
"
);
...
...
@@ -1263,18 +1263,19 @@ static int __init ipgre_init(void)
ipgre_tunnel_setup
);
if
(
!
ipgre_fb_tunnel_dev
)
{
err
=
-
ENOMEM
;
goto
fail
;
goto
err1
;
}
ipgre_fb_tunnel_dev
->
init
=
ipgre_fb_tunnel_init
;
if
((
err
=
register_netdev
(
ipgre_fb_tunnel_dev
)))
goto
fail
;
goto
err2
;
out:
return
err
;
fail:
inet_del_protocol
(
&
ipgre_protocol
,
IPPROTO_GRE
);
err2:
free_netdev
(
ipgre_fb_tunnel_dev
);
err1:
inet_del_protocol
(
&
ipgre_protocol
,
IPPROTO_GRE
);
goto
out
;
}
...
...
net/ipv4/ipip.c
View file @
be98a001
...
...
@@ -246,7 +246,6 @@ static struct ip_tunnel * ipip_tunnel_locate(struct ip_tunnel_parm *parms, int c
nt
=
dev
->
priv
;
SET_MODULE_OWNER
(
dev
);
dev
->
init
=
ipip_tunnel_init
;
dev
->
destructor
=
free_netdev
;
nt
->
parms
=
*
parms
;
if
(
register_netdevice
(
dev
)
<
0
)
{
...
...
@@ -784,6 +783,7 @@ static void ipip_tunnel_setup(struct net_device *dev)
dev
->
get_stats
=
ipip_tunnel_get_stats
;
dev
->
do_ioctl
=
ipip_tunnel_ioctl
;
dev
->
change_mtu
=
ipip_tunnel_change_mtu
;
dev
->
destructor
=
free_netdev
;
dev
->
type
=
ARPHRD_TUNNEL
;
dev
->
hard_header_len
=
LL_MAX_HEADER
+
sizeof
(
struct
iphdr
);
...
...
@@ -876,18 +876,19 @@ static int __init ipip_init(void)
ipip_tunnel_setup
);
if
(
!
ipip_fb_tunnel_dev
)
{
err
=
-
ENOMEM
;
goto
fail
;
goto
err1
;
}
ipip_fb_tunnel_dev
->
init
=
ipip_fb_tunnel_init
;
if
((
err
=
register_netdev
(
ipip_fb_tunnel_dev
)))
goto
fail
;
goto
err2
;
out:
return
err
;
fail:
xfrm4_tunnel_deregister
(
&
ipip_handler
);
err2:
free_netdev
(
ipip_fb_tunnel_dev
);
err1:
xfrm4_tunnel_deregister
(
&
ipip_handler
);
goto
out
;
}
...
...
net/ipv4/tcp.c
View file @
be98a001
...
...
@@ -1593,14 +1593,6 @@ void tcp_destroy_sock(struct sock *sk)
/* If it has not 0 inet_sk(sk)->num, it must be bound */
BUG_TRAP
(
!
inet_sk
(
sk
)
->
num
||
tcp_sk
(
sk
)
->
bind_hash
);
#ifdef TCP_DEBUG
if
(
sk
->
sk_zapped
)
{
printk
(
KERN_DEBUG
"TCP: double destroy sk=%p
\n
"
,
sk
);
sock_hold
(
sk
);
}
sk
->
sk_zapped
=
1
;
#endif
sk
->
sk_prot
->
destroy
(
sk
);
sk_stream_kill_queues
(
sk
);
...
...
net/ipv4/tcp_diag.c
View file @
be98a001
...
...
@@ -563,8 +563,6 @@ static int tcpdiag_dump(struct sk_buff *skb, struct netlink_callback *cb)
if
(
num
<
s_num
)
continue
;
if
(
!
(
r
->
tcpdiag_states
&
(
1
<<
sk
->
sk_zapped
)))
continue
;
if
(
r
->
id
.
tcpdiag_sport
!=
inet
->
sport
&&
r
->
id
.
tcpdiag_sport
)
continue
;
...
...
net/ipv4/tcp_input.c
View file @
be98a001
...
...
@@ -2369,7 +2369,7 @@ static int tcp_tso_acked(struct sock *sk, struct sk_buff *skb,
{
struct
tcp_opt
*
tp
=
tcp_sk
(
sk
);
struct
tcp_skb_cb
*
scb
=
TCP_SKB_CB
(
skb
);
__u32
mss
=
tcp_skb_
psize
(
skb
);
__u32
mss
=
tcp_skb_
mss
(
skb
);
__u32
snd_una
=
tp
->
snd_una
;
__u32
orig_seq
,
seq
;
__u32
packets_acked
=
0
;
...
...
net/ipv6/af_inet6.c
View file @
be98a001
...
...
@@ -191,7 +191,6 @@ static int inet6_create(struct socket *sock, int protocol)
}
sk
->
sk_destruct
=
inet6_sock_destruct
;
sk
->
sk_zapped
=
0
;
sk
->
sk_family
=
PF_INET6
;
sk
->
sk_protocol
=
protocol
;
...
...
net/ipv6/sit.c
View file @
be98a001
...
...
@@ -487,6 +487,7 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
}
}
if
(
rt
->
rt_type
!=
RTN_UNICAST
)
{
ip_rt_put
(
rt
);
tunnel
->
stat
.
tx_carrier_errors
++
;
goto
tx_error_icmp
;
}
...
...
@@ -814,18 +815,19 @@ int __init sit_init(void)
ipip6_tunnel_setup
);
if
(
!
ipip6_fb_tunnel_dev
)
{
err
=
-
ENOMEM
;
goto
fail
;
goto
err1
;
}
ipip6_fb_tunnel_dev
->
init
=
ipip6_fb_tunnel_init
;
if
((
err
=
register_netdev
(
ipip6_fb_tunnel_dev
)))
goto
fail
;
goto
err2
;
out:
return
err
;
fail:
inet_del_protocol
(
&
sit_protocol
,
IPPROTO_IPV6
);
err2:
free_netdev
(
ipip6_fb_tunnel_dev
);
err1:
inet_del_protocol
(
&
sit_protocol
,
IPPROTO_IPV6
);
goto
out
;
}
net/sched/act_api.c
View file @
be98a001
...
...
@@ -155,7 +155,7 @@ struct tc_action_ops *tc_lookup_action_id(u32 type)
return
a
;
}
int
tcf_action_exec
(
struct
sk_buff
*
skb
,
struct
tc_action
*
act
)
int
tcf_action_exec
(
struct
sk_buff
*
skb
,
struct
tc_action
*
act
,
struct
tcf_result
*
res
)
{
struct
tc_action
*
a
;
...
...
@@ -164,7 +164,8 @@ int tcf_action_exec(struct sk_buff *skb,struct tc_action *act)
if
(
skb
->
tc_verd
&
TC_NCLS
)
{
skb
->
tc_verd
=
CLR_TC_NCLS
(
skb
->
tc_verd
);
D2PRINTK
(
"(%p)tcf_action_exec: cleared TC_NCLS in %s out %s
\n
"
,
skb
,
skb
->
input_dev
?
skb
->
input_dev
->
name
:
"xxx"
,
skb
->
dev
->
name
);
return
TC_ACT_OK
;
ret
=
TC_ACT_OK
;
goto
exec_done
;
}
while
((
a
=
act
)
!=
NULL
)
{
repeat:
...
...
@@ -186,6 +187,11 @@ int tcf_action_exec(struct sk_buff *skb,struct tc_action *act)
}
exec_done:
if
(
skb
->
tc_classid
>
0
)
{
res
->
classid
=
skb
->
tc_classid
;
res
->
class
=
0
;
skb
->
tc_classid
=
0
;
}
return
ret
;
}
...
...
net/sched/cls_api.c
View file @
be98a001
...
...
@@ -139,7 +139,7 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
struct
tcf_proto_ops
*
tp_ops
;
struct
Qdisc_class_ops
*
cops
;
unsigned
long
cl
=
0
;
unsigned
long
fh
,
fh_s
;
unsigned
long
fh
;
int
err
;
if
(
prio
==
0
)
{
...
...
@@ -231,8 +231,12 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
tp
->
classify
=
tp_ops
->
classify
;
tp
->
classid
=
parent
;
err
=
-
EBUSY
;
if
(
!
try_module_get
(
tp_ops
->
owner
)
||
(
err
=
tp_ops
->
init
(
tp
))
!=
0
)
{
if
(
!
try_module_get
(
tp_ops
->
owner
))
{
kfree
(
tp
);
goto
errout
;
}
if
((
err
=
tp_ops
->
init
(
tp
))
!=
0
)
{
module_put
(
tp_ops
->
owner
);
kfree
(
tp
);
goto
errout
;
}
...
...
@@ -245,7 +249,7 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
}
else
if
(
tca
[
TCA_KIND
-
1
]
&&
rtattr_strcmp
(
tca
[
TCA_KIND
-
1
],
tp
->
ops
->
kind
))
goto
errout
;
fh
_s
=
fh
=
tp
->
ops
->
get
(
tp
,
t
->
tcm_handle
);
fh
=
tp
->
ops
->
get
(
tp
,
t
->
tcm_handle
);
if
(
fh
==
0
)
{
if
(
n
->
nlmsg_type
==
RTM_DELTFILTER
&&
t
->
tcm_handle
==
0
)
{
...
...
@@ -253,7 +257,7 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
*
back
=
tp
->
next
;
qdisc_unlock_tree
(
dev
);
tfilter_notify
(
skb
,
n
,
tp
,
fh
_s
,
RTM_DELTFILTER
);
tfilter_notify
(
skb
,
n
,
tp
,
fh
,
RTM_DELTFILTER
);
tcf_destroy
(
tp
);
err
=
0
;
goto
errout
;
...
...
@@ -272,7 +276,7 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n, void *arg)
case
RTM_DELTFILTER
:
err
=
tp
->
ops
->
delete
(
tp
,
fh
);
if
(
err
==
0
)
tfilter_notify
(
skb
,
n
,
tp
,
fh
_s
,
RTM_DELTFILTER
);
tfilter_notify
(
skb
,
n
,
tp
,
fh
,
RTM_DELTFILTER
);
goto
errout
;
case
RTM_GETTFILTER
:
err
=
tfilter_notify
(
skb
,
n
,
tp
,
fh
,
RTM_NEWTFILTER
);
...
...
net/sched/cls_fw.c
View file @
be98a001
...
...
@@ -102,7 +102,7 @@ static int fw_classify(struct sk_buff *skb, struct tcf_proto *tp,
}
#endif
if
(
f
->
action
)
{
int
pol_res
=
tcf_action_exec
(
skb
,
f
->
action
);
int
pol_res
=
tcf_action_exec
(
skb
,
f
->
action
,
res
);
if
(
pol_res
>=
0
)
return
pol_res
;
}
else
...
...
net/sched/cls_u32.c
View file @
be98a001
...
...
@@ -175,12 +175,7 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re
#endif
#ifdef CONFIG_NET_CLS_ACT
if
(
n
->
action
)
{
int
pol_res
=
tcf_action_exec
(
skb
,
n
->
action
);
if
(
skb
->
tc_classid
>
0
)
{
res
->
classid
=
skb
->
tc_classid
;
skb
->
tc_classid
=
0
;
}
int
pol_res
=
tcf_action_exec
(
skb
,
n
->
action
,
res
);
if
(
pol_res
>=
0
)
return
pol_res
;
}
else
...
...
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