PERFORCE change 157930 for review
Marko Zec
zec at FreeBSD.org
Thu Feb 19 03:37:52 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=157930
Change 157930 by zec at zec_amdx2 on 2009/02/19 11:37:02
Make ipfw_dyn_rule_zone and tcp_reass_zone per-vnet.
Affected files ...
.. //depot/projects/vimage/src/sys/netinet/ip_fw.h#26 edit
.. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#68 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_reass.c#12 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_subr.c#74 edit
.. //depot/projects/vimage/src/sys/netinet/vinet.h#46 edit
Differences ...
==== //depot/projects/vimage/src/sys/netinet/ip_fw.h#26 (text+ko) ====
@@ -718,6 +718,7 @@
int _fw_debug;
int _autoinc_step;
ipfw_dyn_rule **_ipfw_dyn_v;
+ uma_zone_t _ipfw_dyn_rule_zone;
struct ip_fw_chain _layer3_chain;
u_int32_t _dyn_buckets;
u_int32_t _curr_dyn_buckets;
@@ -762,6 +763,7 @@
#define V_fw_debug VNET_IPFW(fw_debug)
#define V_autoinc_step VNET_IPFW(autoinc_step)
#define V_ipfw_dyn_v VNET_IPFW(ipfw_dyn_v)
+#define V_ipfw_dyn_rule_zone VNET_IPFW(ipfw_dyn_rule_zone)
#define V_layer3_chain VNET_IPFW(layer3_chain)
#define V_dyn_buckets VNET_IPFW(dyn_buckets)
#define V_curr_dyn_buckets VNET_IPFW(curr_dyn_buckets)
==== //depot/projects/vimage/src/sys/netinet/ip_fw2.c#68 (text+ko) ====
@@ -129,14 +129,7 @@
static int fw_verbose;
static struct callout ipfw_timeout;
static int verbose_limit;
-#endif
-
static uma_zone_t ipfw_dyn_rule_zone;
-
-/*
- * list of rules for layer 3
- */
-#ifdef VIMAGE_GLOBALS
struct ip_fw_chain layer3_chain;
#endif
@@ -1079,7 +1072,7 @@
else \
head = q = q->next; \
V_dyn_count--; \
- uma_zfree(ipfw_dyn_rule_zone, old_q); }
+ uma_zfree(V_ipfw_dyn_rule_zone, old_q); }
#define TIME_LEQ(a,b) ((int)((a)-(b)) <= 0)
@@ -1380,7 +1373,7 @@
}
i = hash_packet(id);
- r = uma_zalloc(ipfw_dyn_rule_zone, M_NOWAIT | M_ZERO);
+ r = uma_zalloc(V_ipfw_dyn_rule_zone, M_NOWAIT | M_ZERO);
if (r == NULL) {
printf ("ipfw: sorry cannot allocate state\n");
return NULL;
@@ -4557,12 +4550,9 @@
V_layer3_chain.rules = NULL;
IPFW_LOCK_INIT(&V_layer3_chain);
-#if 0 /* XXX Marko fix this! */
- ipfw_dyn_rule_zone = uma_zcreate("IPFW dynamic rule",
+ V_ipfw_dyn_rule_zone = uma_zcreate("IPFW dynamic rule",
sizeof(ipfw_dyn_rule), NULL, NULL, NULL, NULL,
UMA_ALIGN_PTR, 0);
- IPFW_DYN_LOCK_INIT();
-#endif
callout_init(&V_ipfw_timeout, CALLOUT_MPSAFE);
bzero(&default_rule, sizeof default_rule);
@@ -4583,13 +4573,13 @@
if (error != 0) {
printf("ipfw2: error %u initializing default rule "
"(support disabled)\n", error);
- IPFW_DYN_LOCK_DESTROY();
+ IPFW_DYN_LOCK_DESTROY(); /* XXX MARKO REVISIT */
IPFW_LOCK_DESTROY(&V_layer3_chain);
- uma_zdestroy(ipfw_dyn_rule_zone);
+ uma_zdestroy(V_ipfw_dyn_rule_zone);
return (error);
}
- ip_fw_default_rule = V_layer3_chain.rules;
+ ip_fw_default_rule = V_layer3_chain.rules; /* XXX V_ this ? MARKO */
#ifdef IPFIREWALL_VERBOSE
V_fw_verbose = 1;
@@ -4618,21 +4608,8 @@
int
ipfw_init(void)
{
- ipfw_dyn_rule_zone = uma_zcreate("IPFW dynamic rule",
- sizeof(ipfw_dyn_rule), NULL, NULL, NULL, NULL,
- UMA_ALIGN_PTR, 0);
IPFW_DYN_LOCK_INIT();
-#if 0 /* MARKO XXX */
- /* error = init_tables(&V_layer3_chain); moved to _iattach() */
- if (error) {
- IPFW_DYN_LOCK_DESTROY();
- IPFW_LOCK_DESTROY(&V_layer3_chain);
- uma_zdestroy(ipfw_dyn_rule_zone);
- return (error);
- }
-#endif
-
#ifndef VIMAGE_GLOBALS
vnet_mod_register(&vnet_ipfw_modinfo);
#else
@@ -4704,6 +4681,7 @@
if (V_ipfw_dyn_v != NULL)
free(V_ipfw_dyn_v, M_IPFW);
+ uma_zdestroy(V_ipfw_dyn_rule_zone);
return 0;
}
@@ -4723,7 +4701,6 @@
ipfw_nat_destroy();
#endif
IPFW_DYN_LOCK_DESTROY();
- uma_zdestroy(ipfw_dyn_rule_zone);
printf("IP firewall unloaded\n");
}
==== //depot/projects/vimage/src/sys/netinet/tcp_reass.c#12 (text+ko) ====
@@ -108,10 +108,12 @@
INIT_VNET_INET(curvnet);
V_tcp_reass_maxseg = nmbclusters / 16;
- uma_zone_set_max(tcp_reass_zone, V_tcp_reass_maxseg);
+ uma_zone_set_max(V_tcp_reass_zone, V_tcp_reass_maxseg);
}
+#ifdef VIMAGE_GLOBALS
uma_zone_t tcp_reass_zone;
+#endif
void
tcp_reass_init(void)
@@ -126,9 +128,9 @@
V_tcp_reass_maxseg = nmbclusters / 16;
TUNABLE_INT_FETCH("net.inet.tcp.reass.maxsegments",
&V_tcp_reass_maxseg);
- tcp_reass_zone = uma_zcreate("tcpreass", sizeof (struct tseg_qent),
+ V_tcp_reass_zone = uma_zcreate("tcpreass", sizeof (struct tseg_qent),
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE);
- uma_zone_set_max(tcp_reass_zone, V_tcp_reass_maxseg);
+ uma_zone_set_max(V_tcp_reass_zone, V_tcp_reass_maxseg);
EVENTHANDLER_REGISTER(nmbclusters_change,
tcp_reass_zone_change, NULL, EVENTHANDLER_PRI_ANY);
}
@@ -180,7 +182,7 @@
* Allocate a new queue entry. If we can't, or hit the zone limit
* just drop the pkt.
*/
- te = uma_zalloc(tcp_reass_zone, M_NOWAIT);
+ te = uma_zalloc(V_tcp_reass_zone, M_NOWAIT);
if (te == NULL) {
V_tcpstat.tcps_rcvmemdrop++;
m_freem(m);
@@ -213,7 +215,7 @@
V_tcpstat.tcps_rcvduppack++;
V_tcpstat.tcps_rcvdupbyte += *tlenp;
m_freem(m);
- uma_zfree(tcp_reass_zone, te);
+ uma_zfree(V_tcp_reass_zone, te);
tp->t_segqlen--;
V_tcp_reass_qsize--;
/*
@@ -250,7 +252,7 @@
nq = LIST_NEXT(q, tqe_q);
LIST_REMOVE(q, tqe_q);
m_freem(q->tqe_m);
- uma_zfree(tcp_reass_zone, q);
+ uma_zfree(V_tcp_reass_zone, q);
tp->t_segqlen--;
V_tcp_reass_qsize--;
q = nq;
@@ -287,7 +289,7 @@
m_freem(q->tqe_m);
else
sbappendstream_locked(&so->so_rcv, q->tqe_m);
- uma_zfree(tcp_reass_zone, q);
+ uma_zfree(V_tcp_reass_zone, q);
tp->t_segqlen--;
V_tcp_reass_qsize--;
q = nq;
==== //depot/projects/vimage/src/sys/netinet/tcp_subr.c#74 (text+ko) ====
@@ -881,7 +881,7 @@
while ((q = LIST_FIRST(&tp->t_segq)) != NULL) {
LIST_REMOVE(q, tqe_q);
m_freem(q->tqe_m);
- uma_zfree(tcp_reass_zone, q);
+ uma_zfree(V_tcp_reass_zone, q);
tp->t_segqlen--;
V_tcp_reass_qsize--;
}
@@ -964,7 +964,7 @@
!= NULL) {
LIST_REMOVE(te, tqe_q);
m_freem(te->tqe_m);
- uma_zfree(tcp_reass_zone, te);
+ uma_zfree(V_tcp_reass_zone, te);
tcpb->t_segqlen--;
V_tcp_reass_qsize--;
}
==== //depot/projects/vimage/src/sys/netinet/vinet.h#46 (text+ko) ====
@@ -87,6 +87,7 @@
struct callout _tcp_hc_callout;
struct uma_zone *_tcp_ipi_zone;
+ struct uma_zone *_tcp_reass_zone;
struct uma_zone *_tcpcb_zone;
struct uma_zone *_tcptw_zone;
struct uma_zone *_sack_hole_zone;
@@ -332,6 +333,7 @@
#define V_tcp_reass_maxseg VNET_INET(tcp_reass_maxseg)
#define V_tcp_reass_overflows VNET_INET(tcp_reass_overflows)
#define V_tcp_reass_qsize VNET_INET(tcp_reass_qsize)
+#define V_tcp_reass_zone VNET_INET(tcp_reass_zone)
#define V_tcp_sack_globalholes VNET_INET(tcp_sack_globalholes)
#define V_tcp_sack_globalmaxholes VNET_INET(tcp_sack_globalmaxholes)
#define V_tcp_sack_maxholes VNET_INET(tcp_sack_maxholes)
More information about the p4-projects
mailing list