mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
[UDP]: Allow users to configure UDP-Lite.
Let's give users an option for disabling UDP-Lite (~4K). old: | text data bss dec hex filename | 286498 12432 6072 305002 4a76a net/ipv4/built-in.o | 193830 8192 3204 205226 321aa net/ipv6/ipv6.o new (without UDP-Lite): | text data bss dec hex filename | 284086 12136 5432 301654 49a56 net/ipv4/built-in.o | 191835 7832 3076 202743 317f7 net/ipv6/ipv6.o Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
parent
c6aefafb7e
commit
e898d4db27
14 changed files with 99 additions and 25 deletions
|
|
@ -603,8 +603,13 @@ extern int tcp6_proc_init(void);
|
|||
extern void tcp6_proc_exit(void);
|
||||
extern int udp6_proc_init(void);
|
||||
extern void udp6_proc_exit(void);
|
||||
#ifdef CONFIG_IP_UDPLITE
|
||||
extern int udplite6_proc_init(void);
|
||||
extern void udplite6_proc_exit(void);
|
||||
#else
|
||||
static inline int udplite6_proc_init(void) { return 0; }
|
||||
static inline void udplite6_proc_exit(void) { }
|
||||
#endif
|
||||
extern int ipv6_misc_proc_init(void);
|
||||
extern void ipv6_misc_proc_exit(void);
|
||||
extern int snmp6_register_dev(struct inet6_dev *idev);
|
||||
|
|
|
|||
|
|
@ -27,8 +27,13 @@ extern int rawv6_init(void);
|
|||
extern void rawv6_exit(void);
|
||||
extern int udpv6_init(void);
|
||||
extern void udpv6_exit(void);
|
||||
#ifdef CONFIG_IP_UDPLITE
|
||||
extern int udplitev6_init(void);
|
||||
extern void udplitev6_exit(void);
|
||||
#else
|
||||
static inline int udplitev6_init(void) { return 0; }
|
||||
static inline void udplitev6_exit(void) { }
|
||||
#endif
|
||||
extern int tcpv6_init(void);
|
||||
extern void tcpv6_exit(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,9 @@ static __inline__ int udplite_getfrag(void *from, char *to, int offset,
|
|||
/* Designate sk as UDP-Lite socket */
|
||||
static inline int udplite_sk_init(struct sock *sk)
|
||||
{
|
||||
#ifdef CONFIG_IP_UDPLITE
|
||||
udp_sk(sk)->pcflag = UDPLITE_BIT;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -69,7 +71,7 @@ static inline int udplite_checksum_init(struct sk_buff *skb, struct udphdr *uh)
|
|||
static inline int udplite_sender_cscov(struct udp_sock *up, struct udphdr *uh)
|
||||
{
|
||||
int cscov = up->len;
|
||||
|
||||
#ifdef CONFIG_IP_UDPLITE
|
||||
/*
|
||||
* Sender has set `partial coverage' option on UDP-Lite socket
|
||||
*/
|
||||
|
|
@ -93,13 +95,15 @@ static inline int udplite_sender_cscov(struct udp_sock *up, struct udphdr *uh)
|
|||
* illegal, we fall back to the defaults here.
|
||||
*/
|
||||
}
|
||||
#endif
|
||||
return cscov;
|
||||
}
|
||||
|
||||
static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
int cscov = udplite_sender_cscov(udp_sk(sk), udp_hdr(skb));
|
||||
__wsum csum = 0;
|
||||
#ifdef CONFIG_IP_UDPLITE
|
||||
int cscov = udplite_sender_cscov(udp_sk(sk), udp_hdr(skb));
|
||||
|
||||
skb->ip_summed = CHECKSUM_NONE; /* no HW support for checksumming */
|
||||
|
||||
|
|
@ -112,6 +116,7 @@ static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)
|
|||
if ((cscov -= len) <= 0)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return csum;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue