aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJulian Anastasov <ja@ssi.bg>2013-03-21 05:58:12 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2013-04-01 18:23:46 -0400
commit9a05475cebdd6341884b5901e53870be26e65158 (patch)
tree26472546bb3f5e0c49e147790859fc7b7e307789 /net
parent1845ed0bb29fa7864781021e0c8d06af318f358a (diff)
ipvs: avoid kmem_cache_zalloc in ip_vs_conn_new
We have many fields to set and few to reset, use kmem_cache_alloc instead to save some cycles. Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off by: Hans Schillstrom <hans@schillstrom.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/ipvs/ip_vs_conn.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
index 416015b34c23..e3e2b4d3b6d8 100644
--- a/net/netfilter/ipvs/ip_vs_conn.c
+++ b/net/netfilter/ipvs/ip_vs_conn.c
@@ -861,7 +861,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
861 struct ip_vs_proto_data *pd = ip_vs_proto_data_get(p->net, 861 struct ip_vs_proto_data *pd = ip_vs_proto_data_get(p->net,
862 p->protocol); 862 p->protocol);
863 863
864 cp = kmem_cache_zalloc(ip_vs_conn_cachep, GFP_ATOMIC); 864 cp = kmem_cache_alloc(ip_vs_conn_cachep, GFP_ATOMIC);
865 if (cp == NULL) { 865 if (cp == NULL) {
866 IP_VS_ERR_RL("%s(): no memory\n", __func__); 866 IP_VS_ERR_RL("%s(): no memory\n", __func__);
867 return NULL; 867 return NULL;
@@ -872,13 +872,13 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
872 ip_vs_conn_net_set(cp, p->net); 872 ip_vs_conn_net_set(cp, p->net);
873 cp->af = p->af; 873 cp->af = p->af;
874 cp->protocol = p->protocol; 874 cp->protocol = p->protocol;
875 ip_vs_addr_copy(p->af, &cp->caddr, p->caddr); 875 ip_vs_addr_set(p->af, &cp->caddr, p->caddr);
876 cp->cport = p->cport; 876 cp->cport = p->cport;
877 ip_vs_addr_copy(p->af, &cp->vaddr, p->vaddr); 877 ip_vs_addr_set(p->af, &cp->vaddr, p->vaddr);
878 cp->vport = p->vport; 878 cp->vport = p->vport;
879 /* proto should only be IPPROTO_IP if d_addr is a fwmark */ 879 /* proto should only be IPPROTO_IP if d_addr is a fwmark */
880 ip_vs_addr_copy(p->protocol == IPPROTO_IP ? AF_UNSPEC : p->af, 880 ip_vs_addr_set(p->protocol == IPPROTO_IP ? AF_UNSPEC : p->af,
881 &cp->daddr, daddr); 881 &cp->daddr, daddr);
882 cp->dport = dport; 882 cp->dport = dport;
883 cp->flags = flags; 883 cp->flags = flags;
884 cp->fwmark = fwmark; 884 cp->fwmark = fwmark;
@@ -887,6 +887,10 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
887 cp->pe = p->pe; 887 cp->pe = p->pe;
888 cp->pe_data = p->pe_data; 888 cp->pe_data = p->pe_data;
889 cp->pe_data_len = p->pe_data_len; 889 cp->pe_data_len = p->pe_data_len;
890 } else {
891 cp->pe = NULL;
892 cp->pe_data = NULL;
893 cp->pe_data_len = 0;
890 } 894 }
891 spin_lock_init(&cp->lock); 895 spin_lock_init(&cp->lock);
892 896
@@ -897,18 +901,28 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
897 */ 901 */
898 atomic_set(&cp->refcnt, 1); 902 atomic_set(&cp->refcnt, 1);
899 903
904 cp->control = NULL;
900 atomic_set(&cp->n_control, 0); 905 atomic_set(&cp->n_control, 0);
901 atomic_set(&cp->in_pkts, 0); 906 atomic_set(&cp->in_pkts, 0);
902 907
908 cp->packet_xmit = NULL;
909 cp->app = NULL;
910 cp->app_data = NULL;
911 /* reset struct ip_vs_seq */
912 cp->in_seq.delta = 0;
913 cp->out_seq.delta = 0;
914
903 atomic_inc(&ipvs->conn_count); 915 atomic_inc(&ipvs->conn_count);
904 if (flags & IP_VS_CONN_F_NO_CPORT) 916 if (flags & IP_VS_CONN_F_NO_CPORT)
905 atomic_inc(&ip_vs_conn_no_cport_cnt); 917 atomic_inc(&ip_vs_conn_no_cport_cnt);
906 918
907 /* Bind the connection with a destination server */ 919 /* Bind the connection with a destination server */
920 cp->dest = NULL;
908 ip_vs_bind_dest(cp, dest); 921 ip_vs_bind_dest(cp, dest);
909 922
910 /* Set its state and timeout */ 923 /* Set its state and timeout */
911 cp->state = 0; 924 cp->state = 0;
925 cp->old_state = 0;
912 cp->timeout = 3*HZ; 926 cp->timeout = 3*HZ;
913 cp->sync_endtime = jiffies & ~3UL; 927 cp->sync_endtime = jiffies & ~3UL;
914 928