Lines Matching refs:softs

146 	ipf_sync_softc_t *softs;
148 KMALLOC(softs, ipf_sync_softc_t *);
149 if (softs == NULL) {
154 bzero((char *)softs, sizeof(*softs));
156 softs->ipf_sync_log_sz = SYNCLOG_SZ;
157 softs->ipf_sync_nat_tab_sz = SYNC_STATETABSZ;
158 softs->ipf_sync_state_tab_sz = SYNC_STATETABSZ;
159 softs->ipf_sync_event_high_wm = SYNCLOG_SZ * 100 / 90; /* 90% */
160 softs->ipf_sync_queue_high_wm = SYNCLOG_SZ * 100 / 90; /* 90% */
162 return softs;
179 ipf_sync_softc_t *softs = arg;
181 KMALLOCS(softs->synclog, synclogent_t *,
182 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
183 if (softs->synclog == NULL)
185 bzero((char *)softs->synclog,
186 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
188 KMALLOCS(softs->syncupd, syncupdent_t *,
189 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
190 if (softs->syncupd == NULL)
192 bzero((char *)softs->syncupd,
193 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
195 KMALLOCS(softs->syncstatetab, synclist_t **,
196 softs->ipf_sync_state_tab_sz * sizeof(*softs->syncstatetab));
197 if (softs->syncstatetab == NULL)
199 bzero((char *)softs->syncstatetab,
200 softs->ipf_sync_state_tab_sz * sizeof(*softs->syncstatetab));
202 KMALLOCS(softs->syncnattab, synclist_t **,
203 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
204 if (softs->syncnattab == NULL)
206 bzero((char *)softs->syncnattab,
207 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
209 softs->ipf_sync_num = 1;
210 softs->ipf_sync_wrap = 0;
211 softs->sl_idx = 0;
212 softs->su_idx = 0;
213 softs->sl_tail = 0;
214 softs->su_tail = 0;
215 softs->ipf_sync_events = 0;
216 softs->ipf_sync_lastwakeup = 0;
220 cv_init(&softs->ipslwait, "ipsl condvar", CV_DRIVER, NULL);
222 RWLOCK_INIT(&softs->ipf_syncstate, "add things to state sync table");
223 RWLOCK_INIT(&softs->ipf_syncnat, "add things to nat sync table");
224 MUTEX_INIT(&softs->ipf_syncadd, "add things to sync table");
225 MUTEX_INIT(&softs->ipsl_mutex, "read ring lock");
227 softs->ipf_sync_inited = 1;
246 ipf_sync_softc_t *softs = arg;
248 if (softs->syncnattab != NULL) {
249 ipf_sync_flush_table(softs, softs->ipf_sync_nat_tab_sz,
250 softs->syncnattab);
251 KFREES(softs->syncnattab,
252 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
253 softs->syncnattab = NULL;
256 if (softs->syncstatetab != NULL) {
257 ipf_sync_flush_table(softs, softs->ipf_sync_state_tab_sz,
258 softs->syncstatetab);
259 KFREES(softs->syncstatetab,
260 softs->ipf_sync_state_tab_sz *
261 sizeof(*softs->syncstatetab));
262 softs->syncstatetab = NULL;
265 if (softs->syncupd != NULL) {
266 KFREES(softs->syncupd,
267 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
268 softs->syncupd = NULL;
271 if (softs->synclog != NULL) {
272 KFREES(softs->synclog,
273 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
274 softs->synclog = NULL;
277 if (softs->ipf_sync_inited == 1) {
278 MUTEX_DESTROY(&softs->ipsl_mutex);
279 MUTEX_DESTROY(&softs->ipf_syncadd);
280 RW_DESTROY(&softs->ipf_syncnat);
281 RW_DESTROY(&softs->ipf_syncstate);
282 softs->ipf_sync_inited = 0;
293 ipf_sync_softc_t *softs = arg;
295 KFREE(softs);
429 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
452 if (softs->ipf_sync_debug > 2)
463 if (softs->ipf_sync_debug > 8)
470 if (softs->ipf_sync_debug > 2)
478 if (softs->ipf_sync_debug > 2)
486 if (softs->ipf_sync_debug > 2)
495 if (softs->ipf_sync_debug > 2)
504 if (softs->ipf_sync_debug > 2)
518 if (softs->ipf_sync_debug > 2)
530 if (softs->ipf_sync_debug > 2)
536 if (softs->ipf_sync_debug > 7)
544 if (softs->ipf_sync_debug > 7)
550 if (softs->ipf_sync_debug > 2)
578 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
592 MUTEX_ENTER(&softs->ipsl_mutex);
593 while ((softs->sl_tail == softs->sl_idx) &&
594 (softs->su_tail == softs->su_idx)) {
597 if (!cv_wait_sig(&softs->ipslwait, &softs->ipsl_mutex.ipf_lk)) {
598 MUTEX_EXIT(&softs->ipsl_mutex);
603 MUTEX_EXIT(&softs->ipsl_mutex);
604 err = SLEEP(&softs->sl_tail, "ipl sleep");
609 MUTEX_ENTER(&softs->ipsl_mutex);
614 while ((softs->sl_tail < softs->sl_idx) &&
616 sl = softs->synclog + softs->sl_tail++;
617 MUTEX_EXIT(&softs->ipsl_mutex);
621 MUTEX_ENTER(&softs->ipsl_mutex);
624 while ((softs->su_tail < softs->su_idx) &&
626 su = softs->syncupd + softs->su_tail;
627 softs->su_tail++;
628 MUTEX_EXIT(&softs->ipsl_mutex);
632 MUTEX_ENTER(&softs->ipsl_mutex);
636 if (softs->sl_tail == softs->sl_idx)
637 softs->sl_tail = softs->sl_idx = 0;
638 if (softs->su_tail == softs->su_idx)
639 softs->su_tail = softs->su_idx = 0;
640 MUTEX_EXIT(&softs->ipsl_mutex);
664 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
672 hv = sp->sm_num & (softs->ipf_sync_state_tab_sz - 1);
713 if (softs->ipf_sync_debug > 4)
723 WRITE_ENTER(&softs->ipf_syncstate);
726 sl->sl_pnext = softs->syncstatetab + hv;
727 sl->sl_next = softs->syncstatetab[hv];
728 if (softs->syncstatetab[hv] != NULL)
729 softs->syncstatetab[hv]->sl_pnext = &sl->sl_next;
730 softs->syncstatetab[hv] = sl;
731 MUTEX_DOWNGRADE(&softs->ipf_syncstate);
746 if (softs->ipf_sync_debug > 4)
751 READ_ENTER(&softs->ipf_syncstate);
752 for (sl = softs->syncstatetab[hv]; (sl != NULL);
757 if (softs->ipf_sync_debug > 1)
760 RWLOCK_EXIT(&softs->ipf_syncstate);
768 if (softs->ipf_sync_debug > 6)
794 if (softs->ipf_sync_debug > 6)
810 RWLOCK_EXIT(&softs->ipf_syncstate);
813 if (softs->ipf_sync_debug > 6)
829 ipf_sync_del(softs, sl)
830 ipf_sync_softc_t *softs;
837 softs->syncupd[sl->sl_idx].sup_hdr.sm_sl = NULL;
853 ipf_sync_softc_t *softs = arg;
855 WRITE_ENTER(&softs->ipf_syncstate);
856 ipf_sync_del(softs, sl);
857 RWLOCK_EXIT(&softs->ipf_syncstate);
874 ipf_sync_softc_t *softs = arg;
876 WRITE_ENTER(&softs->ipf_syncnat);
877 ipf_sync_del(softs, sl);
878 RWLOCK_EXIT(&softs->ipf_syncnat);
901 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
908 READ_ENTER(&softs->ipf_syncnat);
941 sl->sl_pnext = softs->syncnattab + hv;
942 sl->sl_next = softs->syncnattab[hv];
943 if (softs->syncnattab[hv] != NULL)
944 softs->syncnattab[hv]->sl_pnext = &sl->sl_next;
945 softs->syncnattab[hv] = sl;
953 for (sl = softs->syncnattab[hv]; (sl != NULL);
982 RWLOCK_EXIT(&softs->ipf_syncnat);
1005 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1010 if (softs->sl_idx == softs->ipf_sync_log_sz)
1016 MUTEX_ENTER(&softs->ipf_syncadd);
1022 softs->ipf_sync_num++;
1023 if (softs->ipf_sync_num == 0) {
1024 softs->ipf_sync_num = 1;
1025 softs->ipf_sync_wrap++;
1039 hv = softs->ipf_sync_num & (softs->ipf_sync_state_tab_sz - 1);
1040 while (softs->ipf_sync_wrap != 0) {
1041 for (ss = softs->syncstatetab[hv]; ss; ss = ss->sl_next)
1042 if (ss->sl_hdr.sm_num == softs->ipf_sync_num)
1046 softs->ipf_sync_num++;
1047 hv = softs->ipf_sync_num &
1048 (softs->ipf_sync_state_tab_sz - 1);
1050 sl->sl_pnext = softs->syncstatetab + hv;
1051 sl->sl_next = softs->syncstatetab[hv];
1052 softs->syncstatetab[hv] = sl;
1056 hv = softs->ipf_sync_num & (softs->ipf_sync_nat_tab_sz - 1);
1057 while (softs->ipf_sync_wrap != 0) {
1058 for (ss = softs->syncnattab[hv]; ss; ss = ss->sl_next)
1059 if (ss->sl_hdr.sm_num == softs->ipf_sync_num)
1063 softs->ipf_sync_num++;
1064 hv = softs->ipf_sync_num &
1065 (softs->ipf_sync_nat_tab_sz - 1);
1067 sl->sl_pnext = softs->syncnattab + hv;
1068 sl->sl_next = softs->syncnattab[hv];
1069 softs->syncnattab[hv] = sl;
1076 sl->sl_num = softs->ipf_sync_num;
1077 MUTEX_EXIT(&softs->ipf_syncadd);
1102 MUTEX_ENTER(&softs->ipf_syncadd);
1103 sle = softs->synclog + softs->sl_idx++;
1116 MUTEX_EXIT(&softs->ipf_syncadd);
1140 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1151 lock = &softs->ipf_syncstate;
1153 lock = &softs->ipf_syncnat;
1158 MUTEX_ENTER(&softs->ipf_syncadd);
1159 slu = softs->syncupd + softs->su_idx;
1160 sl->sl_idx = softs->su_idx++;
1161 MUTEX_EXIT(&softs->ipf_syncadd);
1179 slu = softs->syncupd + sl->sl_idx;
1220 ipf_sync_flush_table(softs, tabsize, table)
1221 ipf_sync_softc_t *softs;
1246 softs->syncupd[sl->sl_idx].sup_hdr.sm_sl = NULL;
1274 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1292 MUTEX_ENTER(&softs->ipsl_mutex);
1293 i = (softs->sl_tail - softs->sl_idx) +
1294 (softs->su_tail - softs->su_idx);
1295 softs->sl_idx = 0;
1296 softs->su_idx = 0;
1297 softs->sl_tail = 0;
1298 softs->su_tail = 0;
1299 MUTEX_EXIT(&softs->ipsl_mutex);
1305 WRITE_ENTER(&softs->ipf_syncnat);
1306 i = ipf_sync_flush_table(softs, SYNC_NATTABSZ,
1307 softs->syncnattab);
1308 RWLOCK_EXIT(&softs->ipf_syncnat);
1314 WRITE_ENTER(&softs->ipf_syncstate);
1315 i = ipf_sync_flush_table(softs, SYNC_STATETABSZ,
1316 softs->syncstatetab);
1317 RWLOCK_EXIT(&softs->ipf_syncstate);
1351 ipf_sync_softc_t *softs = arg;
1352 return !((softs->sl_tail == softs->sl_idx) &&
1353 (softs->su_tail == softs->su_idx));
1396 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1398 softs->ipf_sync_events++;
1400 softs->ipf_sync_lastwakeup + softs->ipf_sync_wake_interval) ||
1401 (softs->ipf_sync_events > softs->ipf_sync_event_high_wm) ||
1402 ((softs->sl_tail - softs->sl_idx) >
1403 softs->ipf_sync_queue_high_wm) ||
1404 ((softs->su_tail - softs->su_idx) >
1405 softs->ipf_sync_queue_high_wm)) {
1423 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1425 softs->ipf_sync_events = 0;
1426 softs->ipf_sync_lastwakeup = softc->ipf_ticks;
1430 MUTEX_ENTER(&softs->ipsl_mutex);
1431 cv_signal(&softs->ipslwait);
1432 MUTEX_EXIT(&softs->ipsl_mutex);
1435 WAKEUP(&softs->sl_tail, 0);
1454 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1456 if ((softs->ipf_sync_events > 0) &&
1458 softs->ipf_sync_lastwakeup + softs->ipf_sync_wake_interval)) {