Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
7b4bc201
Commit
7b4bc201
authored
Sep 29, 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
772a49b7
4562a42b
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
161 additions
and
138 deletions
+161
-138
drivers/net/sungem.c
drivers/net/sungem.c
+20
-0
include/linux/ipv6.h
include/linux/ipv6.h
+9
-6
include/net/af_unix.h
include/net/af_unix.h
+3
-4
include/net/ip_fib.h
include/net/ip_fib.h
+1
-12
include/net/sock.h
include/net/sock.h
+0
-3
net/ax25/af_ax25.c
net/ax25/af_ax25.c
+0
-1
net/ax25/ax25_in.c
net/ax25/ax25_in.c
+0
-1
net/core/rtnetlink.c
net/core/rtnetlink.c
+3
-1
net/ipv4/fib_hash.c
net/ipv4/fib_hash.c
+11
-38
net/ipv4/fib_lookup.h
net/ipv4/fib_lookup.h
+34
-0
net/ipv4/fib_semantics.c
net/ipv4/fib_semantics.c
+60
-36
net/ipv4/tcp.c
net/ipv4/tcp.c
+2
-0
net/ipv4/tcp_output.c
net/ipv4/tcp_output.c
+15
-5
net/ipv6/af_inet6.c
net/ipv6/af_inet6.c
+2
-2
net/ipv6/raw.c
net/ipv6/raw.c
+0
-5
net/ipv6/tcp_ipv6.c
net/ipv6/tcp_ipv6.c
+0
-5
net/ipv6/udp.c
net/ipv6/udp.c
+0
-5
net/llc/af_llc.c
net/llc/af_llc.c
+0
-1
net/netrom/af_netrom.c
net/netrom/af_netrom.c
+0
-2
net/rose/af_rose.c
net/rose/af_rose.c
+0
-2
net/sctp/socket.c
net/sctp/socket.c
+0
-5
net/unix/af_unix.c
net/unix/af_unix.c
+1
-1
net/wanrouter/af_wanpipe.c
net/wanrouter/af_wanpipe.c
+0
-1
net/x25/af_x25.c
net/x25/af_x25.c
+0
-2
No files found.
drivers/net/sungem.c
View file @
7b4bc201
...
...
@@ -2742,6 +2742,23 @@ static void get_gem_mac_nonobp(struct pci_dev *pdev, unsigned char *dev_addr)
}
#endif
/* not Sparc and not PPC */
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling 'interrupt' - used by things like netconsole to send skbs
* without having to re-enable interrupts. It's not called while
* the interrupt routine is executing.
*/
static
void
gem_netpoll
(
struct
net_device
*
netdev
)
{
struct
gem
*
gp
=
netdev
->
priv
;
if
(
!
gp
->
pdev
)
return
;
disable_irq
(
gp
->
pdev
->
irq
);
gem_interrupt
(
gp
->
pdev
->
irq
,
netdev
,
NULL
);
enable_irq
(
gp
->
pdev
->
irq
);
}
#endif
static
int
__devinit
gem_get_device_address
(
struct
gem
*
gp
)
{
#if defined(__sparc__) || defined(CONFIG_PPC_PMAC)
...
...
@@ -2940,6 +2957,9 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
dev
->
set_multicast_list
=
gem_set_multicast
;
dev
->
do_ioctl
=
gem_ioctl
;
dev
->
poll
=
gem_poll
;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
gem_netpoll
;
#endif
dev
->
weight
=
64
;
dev
->
ethtool_ops
=
&
gem_ethtool_ops
;
dev
->
tx_timeout
=
gem_tx_timeout
;
...
...
include/linux/ipv6.h
View file @
7b4bc201
...
...
@@ -182,8 +182,7 @@ enum {
as offsets from skb->nh.
*/
struct
inet6_skb_parm
{
struct
inet6_skb_parm
{
int
iif
;
__u16
ra
;
__u16
hop
;
...
...
@@ -194,6 +193,14 @@ struct inet6_skb_parm
#define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb))
/**
* struct ipv6_pinfo - ipv6 private area
*
* In the struct sock hierarchy (tcp6_sock, upd6_sock, etc)
* this _must_ be the last member, so that inet6_sk_generic
* is able to calculate its offset from the base struct sock
* by using the struct proto->slab_obj_size member. -acme
*/
struct
ipv6_pinfo
{
struct
in6_addr
saddr
;
struct
in6_addr
rcv_saddr
;
...
...
@@ -282,10 +289,6 @@ static inline struct raw6_opt * raw6_sk(const struct sock *__sk)
return
&
((
struct
raw6_sock
*
)
__sk
)
->
raw6
;
}
struct
ipv6_sk_offset
{
int
offset
;
};
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
#define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only)
#define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk))
...
...
include/net/af_unix.h
View file @
7b4bc201
...
...
@@ -37,16 +37,14 @@ static inline struct sock *next_unix_socket(int *i, struct sock *s)
#define forall_unix_sockets(i, s) \
for (s = first_unix_socket(&(i)); s; s = next_unix_socket(&(i),(s)))
struct
unix_address
{
struct
unix_address
{
atomic_t
refcnt
;
int
len
;
unsigned
hash
;
struct
sockaddr_un
name
[
0
];
};
struct
unix_skb_parms
{
struct
unix_skb_parms
{
struct
ucred
creds
;
/* Skb credentials */
struct
scm_fp_list
*
fp
;
/* Passed files */
};
...
...
@@ -68,6 +66,7 @@ struct unix_sock {
struct
dentry
*
dentry
;
struct
vfsmount
*
mnt
;
struct
semaphore
readsem
;
struct
sock
*
peer
;
struct
sock
*
other
;
struct
sock
*
gc_tree
;
atomic_t
inflight
;
...
...
include/net/ip_fib.h
View file @
7b4bc201
...
...
@@ -210,22 +210,11 @@ extern int fib_validate_source(u32 src, u32 dst, u8 tos, int oif,
extern
void
fib_select_multipath
(
const
struct
flowi
*
flp
,
struct
fib_result
*
res
);
/* Exported by fib_semantics.c */
extern
int
ip_fib_check_default
(
u32
gw
,
struct
net_device
*
dev
);
extern
void
fib_release_info
(
struct
fib_info
*
);
extern
int
fib_semantic_match
(
int
type
,
struct
fib_info
*
,
const
struct
flowi
*
,
struct
fib_result
*
);
extern
struct
fib_info
*
fib_create_info
(
const
struct
rtmsg
*
r
,
struct
kern_rta
*
rta
,
const
struct
nlmsghdr
*
,
int
*
err
);
extern
int
fib_nh_match
(
struct
rtmsg
*
r
,
struct
nlmsghdr
*
,
struct
kern_rta
*
rta
,
struct
fib_info
*
fi
);
extern
int
fib_dump_info
(
struct
sk_buff
*
skb
,
u32
pid
,
u32
seq
,
int
event
,
u8
tb_id
,
u8
type
,
u8
scope
,
void
*
dst
,
int
dst_len
,
u8
tos
,
struct
fib_info
*
fi
);
extern
int
ip_fib_check_default
(
u32
gw
,
struct
net_device
*
dev
);
extern
int
fib_sync_down
(
u32
local
,
struct
net_device
*
dev
,
int
force
);
extern
int
fib_sync_up
(
struct
net_device
*
dev
);
extern
int
fib_convert_rtentry
(
int
cmd
,
struct
nlmsghdr
*
nl
,
struct
rtmsg
*
rtm
,
struct
kern_rta
*
rta
,
struct
rtentry
*
r
);
extern
void
fib_node_seq_show
(
struct
seq_file
*
seq
,
int
type
,
int
dead
,
struct
fib_info
*
fi
,
u32
prefix
,
u32
mask
);
extern
u32
__fib_res_prefsrc
(
struct
fib_result
*
res
);
/* Exported by fib_hash.c */
...
...
include/net/sock.h
View file @
7b4bc201
...
...
@@ -142,7 +142,6 @@ struct sock_common {
* @sk_route_caps - route capabilities (e.g. %NETIF_F_TSO)
* @sk_lingertime - %SO_LINGER l_linger setting
* @sk_hashent - hash entry in several tables (e.g. tcp_ehash)
* @sk_pair - socket pair (e.g. AF_UNIX/unix_peer)
* @sk_backlog - always used with the per-socket spinlock held
* @sk_callback_lock - used with the callbacks in the end of this struct
* @sk_error_queue - rarely used
...
...
@@ -219,7 +218,6 @@ struct sock {
int
sk_route_caps
;
unsigned
long
sk_lingertime
;
int
sk_hashent
;
struct
sock
*
sk_pair
;
/*
* The backlog queue is special, it is always used with
* the per-socket spinlock held and requires low latency
...
...
@@ -557,7 +555,6 @@ struct proto {
kmem_cache_t
*
slab
;
int
slab_obj_size
;
void
*
af_specific
;
char
name
[
32
];
...
...
net/ax25/af_ax25.c
View file @
7b4bc201
...
...
@@ -1338,7 +1338,6 @@ static int ax25_accept(struct socket *sock, struct socket *newsock, int flags)
remove_wait_queue
(
sk
->
sk_sleep
,
&
wait
);
newsk
=
skb
->
sk
;
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_socket
=
newsock
;
newsk
->
sk_sleep
=
&
newsock
->
wait
;
...
...
net/ax25/ax25_in.c
View file @
7b4bc201
...
...
@@ -372,7 +372,6 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
skb_queue_head
(
&
sk
->
sk_receive_queue
,
skb
);
make
->
sk_state
=
TCP_ESTABLISHED
;
make
->
sk_pair
=
sk
;
sk
->
sk_ack_backlog
++
;
bh_unlock_sock
(
sk
);
...
...
net/core/rtnetlink.c
View file @
7b4bc201
...
...
@@ -412,7 +412,9 @@ static int rtnetlink_dump_all(struct sk_buff *skb, struct netlink_callback *cb)
void
rtmsg_ifinfo
(
int
type
,
struct
net_device
*
dev
,
unsigned
change
)
{
struct
sk_buff
*
skb
;
int
size
=
NLMSG_GOODSIZE
;
int
size
=
NLMSG_SPACE
(
sizeof
(
struct
ifinfomsg
)
+
sizeof
(
struct
rtnl_link_ifmap
)
+
sizeof
(
struct
rtnl_link_stats
)
+
128
);
skb
=
alloc_skb
(
size
,
GFP_KERNEL
);
if
(
!
skb
)
...
...
net/ipv4/fib_hash.c
View file @
7b4bc201
...
...
@@ -43,6 +43,8 @@
#include <net/sock.h>
#include <net/ip_fib.h>
#include "fib_lookup.h"
static
kmem_cache_t
*
fn_hash_kmem
;
static
kmem_cache_t
*
fn_alias_kmem
;
...
...
@@ -52,17 +54,6 @@ struct fib_node {
u32
fn_key
;
};
struct
fib_alias
{
struct
list_head
fa_list
;
struct
fib_info
*
fa_info
;
u8
fa_tos
;
u8
fa_type
;
u8
fa_scope
;
u8
fa_state
;
};
#define FN_S_ACCESSED 1
struct
fn_zone
{
struct
fn_zone
*
fz_next
;
/* Next not empty zone */
struct
hlist_head
*
fz_hash
;
/* Hash table pointer */
...
...
@@ -265,32 +256,14 @@ fn_hash_lookup(struct fib_table *tb, const struct flowi *flp, struct fib_result
head
=
&
fz
->
fz_hash
[
fn_hash
(
k
,
fz
)];
hlist_for_each_entry
(
f
,
node
,
head
,
fn_hash
)
{
struct
fib_alias
*
fa
;
if
(
f
->
fn_key
!=
k
)
continue
;
list_for_each_entry
(
fa
,
&
f
->
fn_alias
,
fa_list
)
{
if
(
fa
->
fa_tos
&&
fa
->
fa_tos
!=
flp
->
fl4_tos
)
continue
;
if
(
fa
->
fa_scope
<
flp
->
fl4_scope
)
continue
;
fa
->
fa_state
|=
FN_S_ACCESSED
;
err
=
fib_semantic_match
(
fa
->
fa_type
,
fa
->
fa_info
,
flp
,
res
);
if
(
err
==
0
)
{
res
->
type
=
fa
->
fa_type
;
res
->
scope
=
fa
->
fa_scope
;
res
->
prefixlen
=
fz
->
fz_order
;
goto
out
;
}
if
(
err
<
0
)
goto
out
;
}
err
=
fib_semantic_match
(
&
f
->
fn_alias
,
flp
,
res
,
fz
->
fz_order
);
if
(
err
<=
0
)
goto
out
;
}
}
err
=
1
;
...
...
@@ -358,7 +331,7 @@ fn_hash_select_default(struct fib_table *tb, const struct flowi *flp, struct fib
if
(
!
next_fi
->
fib_nh
[
0
].
nh_gw
||
next_fi
->
fib_nh
[
0
].
nh_scope
!=
RT_SCOPE_LINK
)
continue
;
fa
->
fa_state
|=
F
N
_S_ACCESSED
;
fa
->
fa_state
|=
F
A
_S_ACCESSED
;
if
(
fi
==
NULL
)
{
if
(
next_fi
!=
res
->
fi
)
...
...
@@ -521,11 +494,11 @@ fn_hash_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
fa
->
fa_type
=
type
;
fa
->
fa_scope
=
r
->
rtm_scope
;
state
=
fa
->
fa_state
;
fa
->
fa_state
&=
~
F
N
_S_ACCESSED
;
fa
->
fa_state
&=
~
F
A
_S_ACCESSED
;
write_unlock_bh
(
&
fib_hash_lock
);
fib_release_info
(
fi_drop
);
if
(
state
&
F
N
_S_ACCESSED
)
if
(
state
&
F
A
_S_ACCESSED
)
rt_cache_flush
(
-
1
);
return
0
;
}
...
...
@@ -669,7 +642,7 @@ fn_hash_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
}
write_unlock_bh
(
&
fib_hash_lock
);
if
(
fa
->
fa_state
&
F
N
_S_ACCESSED
)
if
(
fa
->
fa_state
&
F
A
_S_ACCESSED
)
rt_cache_flush
(
-
1
);
fn_free_alias
(
fa
);
if
(
kill_fn
)
{
...
...
net/ipv4/fib_lookup.h
0 → 100644
View file @
7b4bc201
#ifndef _FIB_LOOKUP_H
#define _FIB_LOOKUP_H
#include <linux/types.h>
#include <linux/list.h>
#include <net/ip_fib.h>
struct
fib_alias
{
struct
list_head
fa_list
;
struct
fib_info
*
fa_info
;
u8
fa_tos
;
u8
fa_type
;
u8
fa_scope
;
u8
fa_state
;
};
#define FA_S_ACCESSED 0x01
/* Exported by fib_semantics.c */
extern
int
fib_semantic_match
(
struct
list_head
*
head
,
const
struct
flowi
*
flp
,
struct
fib_result
*
res
,
int
prefixlen
);
extern
void
fib_release_info
(
struct
fib_info
*
);
extern
struct
fib_info
*
fib_create_info
(
const
struct
rtmsg
*
r
,
struct
kern_rta
*
rta
,
const
struct
nlmsghdr
*
,
int
*
err
);
extern
int
fib_nh_match
(
struct
rtmsg
*
r
,
struct
nlmsghdr
*
,
struct
kern_rta
*
rta
,
struct
fib_info
*
fi
);
extern
int
fib_dump_info
(
struct
sk_buff
*
skb
,
u32
pid
,
u32
seq
,
int
event
,
u8
tb_id
,
u8
type
,
u8
scope
,
void
*
dst
,
int
dst_len
,
u8
tos
,
struct
fib_info
*
fi
);
#endif
/* _FIB_LOOKUP_H */
net/ipv4/fib_semantics.c
View file @
7b4bc201
...
...
@@ -43,6 +43,8 @@
#include <net/sock.h>
#include <net/ip_fib.h>
#include "fib_lookup.h"
#define FSprintk(a...)
static
rwlock_t
fib_info_lock
=
RW_LOCK_UNLOCKED
;
...
...
@@ -758,51 +760,73 @@ fib_create_info(const struct rtmsg *r, struct kern_rta *rta,
return
NULL
;
}
int
fib_semantic_match
(
int
type
,
struct
fib_info
*
fi
,
const
struct
flowi
*
flp
,
struct
fib_result
*
res
)
int
fib_semantic_match
(
struct
list_head
*
head
,
const
struct
flowi
*
flp
,
struct
fib_result
*
res
,
int
prefixlen
)
{
int
err
=
fib_props
[
type
].
error
;
struct
fib_alias
*
fa
;
int
nh_sel
=
0
;
if
(
err
==
0
)
{
if
(
fi
->
fib_flags
&
RTNH_F_DEAD
)
return
1
;
list_for_each_entry
(
fa
,
head
,
fa_list
)
{
int
err
;
res
->
fi
=
fi
;
if
(
fa
->
fa_tos
&&
fa
->
fa_tos
!=
flp
->
fl4_tos
)
continue
;
switch
(
type
)
{
case
RTN_UNICAST
:
case
RTN_LOCAL
:
case
RTN_BROADCAST
:
case
RTN_ANYCAST
:
case
RTN_MULTICAST
:
for_nexthops
(
fi
)
{
if
(
nh
->
nh_flags
&
RTNH_F_DEAD
)
continue
;
if
(
!
flp
->
oif
||
flp
->
oif
==
nh
->
nh_oif
)
break
;
}
if
(
fa
->
fa_scope
<
flp
->
fl4_scope
)
continue
;
fa
->
fa_state
|=
FA_S_ACCESSED
;
err
=
fib_props
[
fa
->
fa_type
].
error
;
if
(
err
==
0
)
{
struct
fib_info
*
fi
=
fa
->
fa_info
;
if
(
fi
->
fib_flags
&
RTNH_F_DEAD
)
continue
;
switch
(
fa
->
fa_type
)
{
case
RTN_UNICAST
:
case
RTN_LOCAL
:
case
RTN_BROADCAST
:
case
RTN_ANYCAST
:
case
RTN_MULTICAST
:
for_nexthops
(
fi
)
{
if
(
nh
->
nh_flags
&
RTNH_F_DEAD
)
continue
;
if
(
!
flp
->
oif
||
flp
->
oif
==
nh
->
nh_oif
)
break
;
}
#ifdef CONFIG_IP_ROUTE_MULTIPATH
if
(
nhsel
<
fi
->
fib_nhs
)
{
res
->
nh_sel
=
nhsel
;
atomic_inc
(
&
fi
->
fib_clntref
);
return
0
;
}
if
(
nhsel
<
fi
->
fib_nhs
)
{
nh_sel
=
nhsel
;
goto
out_fill_res
;
}
#else
if
(
nhsel
<
1
)
{
atomic_inc
(
&
fi
->
fib_clntref
);
return
0
;
}
if
(
nhsel
<
1
)
{
goto
out_fill_res
;
}
#endif
endfor_nexthops
(
fi
);
res
->
fi
=
NULL
;
return
1
;
default:
res
->
fi
=
NULL
;
printk
(
KERN_DEBUG
"impossible 102
\n
"
)
;
return
-
EINVAL
;
endfor_nexthops
(
fi
);
continue
;
default:
printk
(
KERN_DEBUG
"impossible 102
\n
"
)
;
return
-
EINVAL
;
}
;
}
return
err
;
}
return
err
;
return
1
;
out_fill_res:
res
->
prefixlen
=
prefixlen
;
res
->
nh_sel
=
nh_sel
;
res
->
type
=
fa
->
fa_type
;
res
->
scope
=
fa
->
fa_scope
;
res
->
fi
=
fa
->
fa_info
;
atomic_inc
(
&
res
->
fi
->
fib_clntref
);
return
0
;
}
/* Find appropriate source address to this destination */
...
...
net/ipv4/tcp.c
View file @
7b4bc201
...
...
@@ -691,6 +691,7 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page **pages, int poffse
skb
->
ip_summed
=
CHECKSUM_HW
;
tp
->
write_seq
+=
copy
;
TCP_SKB_CB
(
skb
)
->
end_seq
+=
copy
;
TCP_SKB_CB
(
skb
)
->
tso_factor
=
0
;
if
(
!
copied
)
TCP_SKB_CB
(
skb
)
->
flags
&=
~
TCPCB_FLAG_PSH
;
...
...
@@ -937,6 +938,7 @@ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
tp
->
write_seq
+=
copy
;
TCP_SKB_CB
(
skb
)
->
end_seq
+=
copy
;
TCP_SKB_CB
(
skb
)
->
tso_factor
=
0
;
from
+=
copy
;
copied
+=
copy
;
...
...
net/ipv4/tcp_output.c
View file @
7b4bc201
...
...
@@ -553,7 +553,7 @@ unsigned char * __pskb_trim_head(struct sk_buff *skb, int len)
return
skb
->
tail
;
}
static
int
__tcp_trim_head
(
struct
sock
*
sk
,
struct
sk_buff
*
skb
,
u32
len
)
static
int
__tcp_trim_head
(
struct
tcp_opt
*
tp
,
struct
sk_buff
*
skb
,
u32
len
)
{
if
(
skb_cloned
(
skb
)
&&
pskb_expand_head
(
skb
,
0
,
0
,
GFP_ATOMIC
))
...
...
@@ -567,12 +567,18 @@ static int __tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
}
skb
->
ip_summed
=
CHECKSUM_HW
;
/* Any change of skb->len requires recalculation of tso
* factor and mss.
*/
tcp_set_skb_tso_factor
(
skb
,
tp
->
mss_cache_std
);
return
0
;
}
static
inline
int
tcp_trim_head
(
struct
sock
*
sk
,
struct
sk_buff
*
skb
,
u32
len
)
static
inline
int
tcp_trim_head
(
struct
tcp_opt
*
tp
,
struct
sk_buff
*
skb
,
u32
len
)
{
int
err
=
__tcp_trim_head
(
sk
,
skb
,
len
);
int
err
=
__tcp_trim_head
(
tp
,
skb
,
len
);
if
(
!
err
)
TCP_SKB_CB
(
skb
)
->
seq
+=
len
;
...
...
@@ -897,6 +903,9 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
((
skb_size
+
next_skb_size
)
>
mss_now
))
return
;
BUG_ON
(
TCP_SKB_CB
(
skb
)
->
tso_factor
!=
1
||
TCP_SKB_CB
(
next_skb
)
->
tso_factor
!=
1
);
/* Ok. We will be able to collapse the packet. */
__skb_unlink
(
next_skb
,
next_skb
->
list
);
...
...
@@ -1018,7 +1027,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
if
(
skb
->
len
>
(
data_end_seq
-
data_seq
))
{
u32
to_trim
=
skb
->
len
-
(
data_end_seq
-
data_seq
);
if
(
__tcp_trim_head
(
sk
,
skb
,
to_trim
))
if
(
__tcp_trim_head
(
tp
,
skb
,
to_trim
))
return
-
ENOMEM
;
}
...
...
@@ -1032,7 +1041,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
tp
->
mss_cache
=
tp
->
mss_cache_std
;
}
if
(
tcp_trim_head
(
sk
,
skb
,
tp
->
snd_una
-
TCP_SKB_CB
(
skb
)
->
seq
))
if
(
tcp_trim_head
(
tp
,
skb
,
tp
->
snd_una
-
TCP_SKB_CB
(
skb
)
->
seq
))
return
-
ENOMEM
;
}
...
...
@@ -1080,6 +1089,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
tp
->
snd_una
==
(
TCP_SKB_CB
(
skb
)
->
end_seq
-
1
))
{
if
(
!
pskb_trim
(
skb
,
0
))
{
TCP_SKB_CB
(
skb
)
->
seq
=
TCP_SKB_CB
(
skb
)
->
end_seq
-
1
;
TCP_SKB_CB
(
skb
)
->
tso_factor
=
1
;
skb
->
ip_summed
=
CHECKSUM_NONE
;
skb
->
csum
=
0
;
}
...
...
net/ipv6/af_inet6.c
View file @
7b4bc201
...
...
@@ -107,9 +107,9 @@ static void inet6_sock_destruct(struct sock *sk)
static
__inline__
struct
ipv6_pinfo
*
inet6_sk_generic
(
struct
sock
*
sk
)
{
const
struct
ipv6_sk_offset
*
offset
=
sk
->
sk_prot
->
af_specific
;
const
int
offset
=
sk
->
sk_prot
->
slab_obj_size
-
sizeof
(
struct
ipv6_pinfo
)
;
return
(
struct
ipv6_pinfo
*
)(((
u8
*
)
sk
)
+
offset
->
offset
);
return
(
struct
ipv6_pinfo
*
)(((
u8
*
)
sk
)
+
offset
);
}
static
int
inet6_create
(
struct
socket
*
sock
,
int
protocol
)
...
...
net/ipv6/raw.c
View file @
7b4bc201
...
...
@@ -973,10 +973,6 @@ static int rawv6_init_sk(struct sock *sk)
return
(
0
);
}
struct
ipv6_sk_offset
raw_sock_offset
=
{
.
offset
=
offsetof
(
struct
raw6_sock
,
inet6
),
};
struct
proto
rawv6_prot
=
{
.
name
=
"RAW"
,
.
close
=
rawv6_close
,
...
...
@@ -994,7 +990,6 @@ struct proto rawv6_prot = {
.
hash
=
raw_v6_hash
,
.
unhash
=
raw_v6_unhash
,
.
slab_obj_size
=
sizeof
(
struct
raw6_sock
),
.
af_specific
=
&
raw_sock_offset
,
};
#ifdef CONFIG_PROC_FS
...
...
net/ipv6/tcp_ipv6.c
View file @
7b4bc201
...
...
@@ -2122,10 +2122,6 @@ void tcp6_proc_exit(void)
}
#endif
struct
ipv6_sk_offset
tcp_sock_offset
=
{
.
offset
=
offsetof
(
struct
tcp6_sock
,
inet6
),
};
struct
proto
tcpv6_prot
=
{
.
name
=
"TCPv6"
,
.
close
=
tcp_close
,
...
...
@@ -2153,7 +2149,6 @@ struct proto tcpv6_prot = {
.
sysctl_rmem
=
sysctl_tcp_rmem
,
.
max_header
=
MAX_TCP_HEADER
,
.
slab_obj_size
=
sizeof
(
struct
tcp6_sock
),
.
af_specific
=
&
tcp_sock_offset
,
};
static
struct
inet6_protocol
tcpv6_protocol
=
{
...
...
net/ipv6/udp.c
View file @
7b4bc201
...
...
@@ -1031,10 +1031,6 @@ void udp6_proc_exit(void) {
/* ------------------------------------------------------------------------ */
struct
ipv6_sk_offset
udp_sock_offset
=
{
.
offset
=
offsetof
(
struct
udp6_sock
,
inet6
),
};
struct
proto
udpv6_prot
=
{
.
name
=
"UDP"
,
.
close
=
udpv6_close
,
...
...
@@ -1051,7 +1047,6 @@ struct proto udpv6_prot = {
.
unhash
=
udp_v6_unhash
,
.
get_port
=
udp_v6_get_port
,
.
slab_obj_size
=
sizeof
(
struct
udp6_sock
),
.
af_specific
=
&
udp_sock_offset
,
};
extern
struct
proto_ops
inet6_dgram_ops
;
...
...
net/llc/af_llc.c
View file @
7b4bc201
...
...
@@ -638,7 +638,6 @@ static int llc_ui_accept(struct socket *sock, struct socket *newsock, int flags)
newsk
=
skb
->
sk
;
/* attach connection to a new socket. */
llc_ui_sk_init
(
newsock
,
newsk
);
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_zapped
=
0
;
newsk
->
sk_state
=
TCP_ESTABLISHED
;
newsock
->
state
=
SS_CONNECTED
;
...
...
net/netrom/af_netrom.c
View file @
7b4bc201
...
...
@@ -801,7 +801,6 @@ static int nr_accept(struct socket *sock, struct socket *newsock, int flags)
remove_wait_queue
(
sk
->
sk_sleep
,
&
wait
);
newsk
=
skb
->
sk
;
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_socket
=
newsock
;
newsk
->
sk_sleep
=
&
newsock
->
wait
;
...
...
@@ -994,7 +993,6 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev)
nr_make
->
vl
=
0
;
nr_make
->
state
=
NR_STATE_3
;
sk
->
sk_ack_backlog
++
;
make
->
sk_pair
=
sk
;
nr_insert_socket
(
make
);
...
...
net/rose/af_rose.c
View file @
7b4bc201
...
...
@@ -882,7 +882,6 @@ static int rose_accept(struct socket *sock, struct socket *newsock, int flags)
remove_wait_queue
(
sk
->
sk_sleep
,
&
wait
);
newsk
=
skb
->
sk
;
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_socket
=
newsock
;
newsk
->
sk_sleep
=
&
newsock
->
wait
;
...
...
@@ -996,7 +995,6 @@ int rose_rx_call_request(struct sk_buff *skb, struct net_device *dev, struct ros
make_rose
->
vr
=
0
;
make_rose
->
vl
=
0
;
sk
->
sk_ack_backlog
++
;
make
->
sk_pair
=
sk
;
rose_insert_socket
(
make
);
...
...
net/sctp/socket.c
View file @
7b4bc201
...
...
@@ -4626,10 +4626,6 @@ struct proto sctp_prot = {
};
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
struct
ipv6_sk_offset
sctp_sock_offset
=
{
.
offset
=
offsetof
(
struct
sctp6_sock
,
inet6
),
};
struct
proto
sctpv6_prot
=
{
.
name
=
"SCTPv6"
,
.
close
=
sctp_close
,
...
...
@@ -4650,6 +4646,5 @@ struct proto sctpv6_prot = {
.
unhash
=
sctp_unhash
,
.
get_port
=
sctp_get_port
,
.
slab_obj_size
=
sizeof
(
struct
sctp6_sock
),
.
af_specific
=
&
sctp_sock_offset
,
};
#endif
/* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */
net/unix/af_unix.c
View file @
7b4bc201
...
...
@@ -144,7 +144,7 @@ static inline unsigned unix_hash_fold(unsigned hash)
return
hash
&
(
UNIX_HASH_SIZE
-
1
);
}
#define unix_peer(sk) (
(sk)->sk_pai
r)
#define unix_peer(sk) (
unix_sk(sk)->pee
r)
static
inline
int
unix_our_peer
(
struct
sock
*
sk
,
struct
sock
*
osk
)
{
...
...
net/wanrouter/af_wanpipe.c
View file @
7b4bc201
...
...
@@ -2423,7 +2423,6 @@ static int wanpipe_accept(struct socket *sock, struct socket *newsock, int flags
write_unlock
(
&
wanpipe_sklist_lock
);
clear_bit
(
1
,
&
wanpipe_tx_critical
);
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_socket
=
newsock
;
newsk
->
sk_sleep
=
&
newsock
->
wait
;
...
...
net/x25/af_x25.c
View file @
7b4bc201
...
...
@@ -769,7 +769,6 @@ static int x25_accept(struct socket *sock, struct socket *newsock, int flags)
if
(
!
skb
->
sk
)
goto
out2
;
newsk
=
skb
->
sk
;
newsk
->
sk_pair
=
NULL
;
newsk
->
sk_socket
=
newsock
;
newsk
->
sk_sleep
=
&
newsock
->
wait
;
...
...
@@ -887,7 +886,6 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
makex25
->
state
=
X25_STATE_3
;
sk
->
sk_ack_backlog
++
;
make
->
sk_pair
=
sk
;
x25_insert_socket
(
make
);
...
...
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