x25: use sock slab cache
Subsystems (3)
PATCH 7/9 x25: use sock slab cache
Hi David, Aristeu,
Please read the log in the patch.
- Arnaldo
===================================================================
[email protected], 2005-01-19 23:06:19-02:00, [email protected]
[X25] use a private slab cache for socks
Required to get rid of sk_protinfo and to introduce struct connection_sock, also for consistency with other protocol families implementations.
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by David S. Miller <[email protected]>
include/net/x25.h | 10 ++++++--- net/x25/af_x25.c | 50 +++++++++++++++++++++++++---------------------- net/x25/x25_facilities.c | 2 - net/x25/x25_in.c | 10 ++++----- net/x25/x25_out.c | 8 +++---- net/x25/x25_proc.c | 2 - net/x25/x25_subr.c | 14 ++++++------- net/x25/x25_timer.c | 14 ++++++------- 8 files changed, 59 insertions(+), 51 deletions(-)
include/net/x25.h +7 -3
@@ -10,6 +10,7 @@#ifndef _X25_H#define _X25_H #include <linux/x25.h> +#include <net/sock.h> #define X25_ADDR_LEN 16
@@ -129,7 +130,8 @@atomic_t refcnt; }; -struct x25_opt { +struct x25_sock { +struct sock sk;struct x25_address source_addr, dest_addr;struct x25_neigh *neighbour;unsigned int lci;
@@ -141,7 +143,6 @@struct sk_buff_head fragment_queue;struct sk_buff_head interrupt_in_queue;struct sk_buff_head interrupt_out_queue; -struct sock *sk;/* Backlink to socket */ struct timer_list timer;struct x25_causediag causediag;struct x25_facilities facilities;
@@ -149,7 +150,10 @@unsigned long vc_facil_mask;/* inc_call facilities mask */ }; -#define x25_sk (__sk) ((struct x25_opt *)(__sk)->sk_protinfo) +static inline struct x25_sock *x25_sk (const struct sock *sk) +{ +return (struct x25_sock *)sk; +}/* af_x25.c */ extern int sysctl_x25_restart_request_timeout;
net/x25/af_x25.c +27 -23
141 lines not on this page · raw message
net/x25/x25_facilities.c +1 -1
@@ -158,7 +158,7 @@int x25_negotiate_facilities (struct sk_buff *skb,struct sock *sk,struct x25_facilities *new) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);struct x25_facilities *ours = &x25->facilities;struct x25_facilities theirs;int len;
net/x25/x25_in.c +5 -5
@@ -34,7 +34,7 @@static int x25_queue_rx_frame (struct sock *sk,struct sk_buff *skb,int more) {struct sk_buff *skbo, *skbn = skb; -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (more) { x25->fraglen += skb->len;
@@ -89,7 +89,7 @@switch (frametype) {case X25_CALL_ACCEPTED : { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);x25_stop_timer (sk); x25->condition =0x00 ;
@@ -165,7 +165,7 @@ {int queued =0 ;int modulus; -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk); modulus = (x25->neighbour->extended) ?X25_EMODULUS :X25_SMODULUS ;
@@ -295,7 +295,7 @@case X25_RESET_REQUEST :x25_write_internal (sk,X25_RESET_CONFIRMATION );case X25_RESET_CONFIRMATION : { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);x25_stop_timer (sk); x25->condition =0x00 ;
@@ -322,7 +322,7 @@/* Higher level upcall for a LAPB frame */ int x25_process_rx_frame (struct sock *sk,struct sk_buff *skb) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);int queued =0 , frametype, ns, nr, q, d, m;if (x25->state ==X25_STATE_0 )
net/x25/x25_out.c +4 -4
@@ -54,7 +54,7 @@unsigned char header[X25_EXT_MIN_LEN ];int err, frontlen, len;int sent=0 , noblock =X25_SKB_CB (skb)->flags &MSG_DONTWAIT ; -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);int header_len = x25->neighbour->extended ?X25_EXT_MIN_LEN :X25_STD_MIN_LEN ;int max_len =x25_pacsize_to_bytes (x25->facilities.pacsize_out);
@@ -116,7 +116,7 @@*/ static void x25_send_iframe (struct sock *sk,struct sk_buff *skb) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (!skb)return ;
@@ -139,7 +139,7 @@struct sk_buff *skb, *skbn;unsigned short start, end;int modulus; -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (x25->state !=X25_STATE_3 )return ;
@@ -212,7 +212,7 @@void x25_enquiry_response (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (x25->condition &X25_COND_OWN_RX_BUSY )x25_write_internal (sk,X25_RNR );
net/x25/x25_proc.c +1 -1
@@ -134,7 +134,7 @@static int x25_seq_socket_show (struct seq_file *seq,void *v) {struct sock *s; -struct x25_opt *x25; +struct x25_sock *x25;struct net_device *dev;const char *devname;
net/x25/x25_subr.c +7 -7
@@ -33,7 +33,7 @@*/ void x25_clear_queues (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);skb_queue_purge (&sk->sk_write_queue);skb_queue_purge (&x25->ack_queue);
@@ -51,7 +51,7 @@void x25_frames_acked (struct sock *sk,unsigned short nr) {struct sk_buff *skb; -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);int modulus = x25->neighbour->extended ?X25_EMODULUS :X25_SMODULUS ;/*
@@ -89,7 +89,7 @@*/ int x25_validate_nr (struct sock *sk,unsigned short nr) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);unsigned short vc = x25->va;int modulus = x25->neighbour->extended ?X25_EMODULUS :X25_SMODULUS ;
@@ -108,7 +108,7 @@*/ void x25_write_internal (struct sock *sk,int frametype) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);struct sk_buff *skb;unsigned char *dptr;unsigned char facilities[X25_MAX_FAC_LEN ];
@@ -248,7 +248,7 @@int x25_decode (struct sock *sk,struct sk_buff *skb,int *ns,int *nr,int *q,int *d,int *m) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);unsigned char *frame = skb->data; *ns = *nr = *q = *d = *m =0 ;
@@ -315,7 +315,7 @@void x25_disconnect (struct sock *sk,int reason,unsigned char cause,unsigned char diagnostic) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);x25_clear_queues (sk);x25_stop_timer (sk);
@@ -342,7 +342,7 @@*/ void x25_check_rbuf (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (atomic_read (&sk->sk_rmem_alloc) < (sk->sk_rcvbuf /2 ) && (x25->condition &X25_COND_OWN_RX_BUSY )) {
net/x25/x25_timer.c +7 -7
@@ -31,7 +31,7 @@void x25_init_timers (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);init_timer (&x25->timer); x25->timer.data = (unsigned long )sk;
@@ -54,28 +54,28 @@void x25_start_t2timer (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);mod_timer (&x25->timer, jiffies + x25->t2); }void x25_start_t21timer (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);mod_timer (&x25->timer, jiffies + x25->t21); }void x25_start_t22timer (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);mod_timer (&x25->timer, jiffies + x25->t22); }void x25_start_t23timer (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);mod_timer (&x25->timer, jiffies + x25->t23); }
@@ -87,7 +87,7 @@unsigned long x25_display_timer (struct sock *sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);if (!timer_pending (&x25->timer))return 0 ;
@@ -138,7 +138,7 @@*/ static inline void x25_do_timer_expiry (struct sock * sk) { -struct x25_opt *x25 =x25_sk (sk); +struct x25_sock *x25 =x25_sk (sk);switch (x25->state) {