Lines Matching defs:softs
161 ipf_sync_softc_t *softs;
163 KMALLOC(softs, ipf_sync_softc_t *);
164 if (softs == NULL) {
169 bzero((char *)softs, sizeof(*softs));
171 softs->ipf_sync_log_sz = SYNCLOG_SZ;
172 softs->ipf_sync_nat_tab_sz = SYNC_STATETABSZ;
173 softs->ipf_sync_state_tab_sz = SYNC_STATETABSZ;
174 softs->ipf_sync_event_high_wm = SYNCLOG_SZ * 100 / 90; /* 90% */
175 softs->ipf_sync_queue_high_wm = SYNCLOG_SZ * 100 / 90; /* 90% */
177 return softs;
192 ipf_sync_softc_t *softs = arg;
194 KMALLOCS(softs->synclog, synclogent_t *,
195 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
196 if (softs->synclog == NULL)
198 bzero((char *)softs->synclog,
199 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
201 KMALLOCS(softs->syncupd, syncupdent_t *,
202 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
203 if (softs->syncupd == NULL)
205 bzero((char *)softs->syncupd,
206 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
208 KMALLOCS(softs->syncstatetab, synclist_t **,
209 softs->ipf_sync_state_tab_sz * sizeof(*softs->syncstatetab));
210 if (softs->syncstatetab == NULL)
212 bzero((char *)softs->syncstatetab,
213 softs->ipf_sync_state_tab_sz * sizeof(*softs->syncstatetab));
215 KMALLOCS(softs->syncnattab, synclist_t **,
216 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
217 if (softs->syncnattab == NULL)
219 bzero((char *)softs->syncnattab,
220 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
222 softs->ipf_sync_num = 1;
223 softs->ipf_sync_wrap = 0;
224 softs->sl_idx = 0;
225 softs->su_idx = 0;
226 softs->sl_tail = 0;
227 softs->su_tail = 0;
228 softs->ipf_sync_events = 0;
229 softs->ipf_sync_lastwakeup = 0;
233 cv_init(&softs->ipslwait, "ipsl condvar", CV_DRIVER, NULL);
235 RWLOCK_INIT(&softs->ipf_syncstate, "add things to state sync table");
236 RWLOCK_INIT(&softs->ipf_syncnat, "add things to nat sync table");
237 MUTEX_INIT(&softs->ipf_syncadd, "add things to sync table");
238 MUTEX_INIT(&softs->ipsl_mutex, "read ring lock");
240 softs->ipf_sync_inited = 1;
257 ipf_sync_softc_t *softs = arg;
259 if (softs->syncnattab != NULL) {
260 ipf_sync_flush_table(softs, softs->ipf_sync_nat_tab_sz,
261 softs->syncnattab);
262 KFREES(softs->syncnattab,
263 softs->ipf_sync_nat_tab_sz * sizeof(*softs->syncnattab));
264 softs->syncnattab = NULL;
267 if (softs->syncstatetab != NULL) {
268 ipf_sync_flush_table(softs, softs->ipf_sync_state_tab_sz,
269 softs->syncstatetab);
270 KFREES(softs->syncstatetab,
271 softs->ipf_sync_state_tab_sz *
272 sizeof(*softs->syncstatetab));
273 softs->syncstatetab = NULL;
276 if (softs->syncupd != NULL) {
277 KFREES(softs->syncupd,
278 softs->ipf_sync_log_sz * sizeof(*softs->syncupd));
279 softs->syncupd = NULL;
282 if (softs->synclog != NULL) {
283 KFREES(softs->synclog,
284 softs->ipf_sync_log_sz * sizeof(*softs->synclog));
285 softs->synclog = NULL;
288 if (softs->ipf_sync_inited == 1) {
289 MUTEX_DESTROY(&softs->ipsl_mutex);
290 MUTEX_DESTROY(&softs->ipf_syncadd);
291 RW_DESTROY(&softs->ipf_syncnat);
292 RW_DESTROY(&softs->ipf_syncstate);
293 softs->ipf_sync_inited = 0;
302 ipf_sync_softc_t *softs = arg;
304 KFREE(softs);
430 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
453 if (softs->ipf_sync_debug > 2)
464 if (softs->ipf_sync_debug > 8)
471 if (softs->ipf_sync_debug > 2)
479 if (softs->ipf_sync_debug > 2)
487 if (softs->ipf_sync_debug > 2)
496 if (softs->ipf_sync_debug > 2)
505 if (softs->ipf_sync_debug > 2)
519 if (softs->ipf_sync_debug > 2)
531 if (softs->ipf_sync_debug > 2)
537 if (softs->ipf_sync_debug > 7)
545 if (softs->ipf_sync_debug > 7)
551 if (softs->ipf_sync_debug > 2)
577 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
591 MUTEX_ENTER(&softs->ipsl_mutex);
592 while ((softs->sl_tail == softs->sl_idx) &&
593 (softs->su_tail == softs->su_idx)) {
596 if (!cv_wait_sig(&softs->ipslwait, &softs->ipsl_mutex.ipf_lk)) {
597 MUTEX_EXIT(&softs->ipsl_mutex);
606 l = get_sleep_lock(&softs->sl_tail);
607 err = sleep(&softs->sl_tail, PZERO+1);
609 MUTEX_EXIT(&softs->ipsl_mutex);
617 err = mpsleep(&softs->sl_tail, PSUSP|PCATCH, "ipl sleep", 0,
618 &softs->ipsl_mutex, MS_LOCK_SIMPLE);
624 MUTEX_EXIT(&softs->ipsl_mutex);
625 err = SLEEP(&softs->sl_tail, "ipl sleep");
630 MUTEX_ENTER(&softs->ipsl_mutex);
637 while ((softs->sl_tail < softs->sl_idx) &&
639 sl = softs->synclog + softs->sl_tail++;
640 MUTEX_EXIT(&softs->ipsl_mutex);
644 MUTEX_ENTER(&softs->ipsl_mutex);
647 while ((softs->su_tail < softs->su_idx) &&
649 su = softs->syncupd + softs->su_tail;
650 softs->su_tail++;
651 MUTEX_EXIT(&softs->ipsl_mutex);
655 MUTEX_ENTER(&softs->ipsl_mutex);
659 if (softs->sl_tail == softs->sl_idx)
660 softs->sl_tail = softs->sl_idx = 0;
661 if (softs->su_tail == softs->su_idx)
662 softs->su_tail = softs->su_idx = 0;
663 MUTEX_EXIT(&softs->ipsl_mutex);
684 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
692 hv = sp->sm_num & (softs->ipf_sync_state_tab_sz - 1);
733 if (softs->ipf_sync_debug > 4)
743 WRITE_ENTER(&softs->ipf_syncstate);
746 sl->sl_pnext = softs->syncstatetab + hv;
747 sl->sl_next = softs->syncstatetab[hv];
748 if (softs->syncstatetab[hv] != NULL)
749 softs->syncstatetab[hv]->sl_pnext = &sl->sl_next;
750 softs->syncstatetab[hv] = sl;
751 MUTEX_DOWNGRADE(&softs->ipf_syncstate);
766 if (softs->ipf_sync_debug > 4)
771 READ_ENTER(&softs->ipf_syncstate);
772 for (sl = softs->syncstatetab[hv]; (sl != NULL);
777 if (softs->ipf_sync_debug > 1)
780 RWLOCK_EXIT(&softs->ipf_syncstate);
788 if (softs->ipf_sync_debug > 6)
814 if (softs->ipf_sync_debug > 6)
830 RWLOCK_EXIT(&softs->ipf_syncstate);
833 if (softs->ipf_sync_debug > 6)
849 ipf_sync_del(ipf_sync_softc_t *softs, synclist_t *sl)
855 softs->syncupd[sl->sl_idx].sup_hdr.sm_sl = NULL;
869 ipf_sync_softc_t *softs = arg;
871 WRITE_ENTER(&softs->ipf_syncstate);
872 ipf_sync_del(softs, sl);
873 RWLOCK_EXIT(&softs->ipf_syncstate);
888 ipf_sync_softc_t *softs = arg;
890 WRITE_ENTER(&softs->ipf_syncnat);
891 ipf_sync_del(softs, sl);
892 RWLOCK_EXIT(&softs->ipf_syncnat);
912 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
919 READ_ENTER(&softs->ipf_syncnat);
952 sl->sl_pnext = softs->syncnattab + hv;
953 sl->sl_next = softs->syncnattab[hv];
954 if (softs->syncnattab[hv] != NULL)
955 softs->syncnattab[hv]->sl_pnext = &sl->sl_next;
956 softs->syncnattab[hv] = sl;
964 for (sl = softs->syncnattab[hv]; (sl != NULL);
993 RWLOCK_EXIT(&softs->ipf_syncnat);
1012 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1017 if (softs->sl_idx == softs->ipf_sync_log_sz)
1023 MUTEX_ENTER(&softs->ipf_syncadd);
1029 softs->ipf_sync_num++;
1030 if (softs->ipf_sync_num == 0) {
1031 softs->ipf_sync_num = 1;
1032 softs->ipf_sync_wrap++;
1046 hv = softs->ipf_sync_num & (softs->ipf_sync_state_tab_sz - 1);
1047 while (softs->ipf_sync_wrap != 0) {
1048 for (ss = softs->syncstatetab[hv]; ss; ss = ss->sl_next)
1049 if (ss->sl_hdr.sm_num == softs->ipf_sync_num)
1053 softs->ipf_sync_num++;
1054 hv = softs->ipf_sync_num &
1055 (softs->ipf_sync_state_tab_sz - 1);
1057 sl->sl_pnext = softs->syncstatetab + hv;
1058 sl->sl_next = softs->syncstatetab[hv];
1059 softs->syncstatetab[hv] = sl;
1063 hv = softs->ipf_sync_num & (softs->ipf_sync_nat_tab_sz - 1);
1064 while (softs->ipf_sync_wrap != 0) {
1065 for (ss = softs->syncnattab[hv]; ss; ss = ss->sl_next)
1066 if (ss->sl_hdr.sm_num == softs->ipf_sync_num)
1070 softs->ipf_sync_num++;
1071 hv = softs->ipf_sync_num &
1072 (softs->ipf_sync_nat_tab_sz - 1);
1074 sl->sl_pnext = softs->syncnattab + hv;
1075 sl->sl_next = softs->syncnattab[hv];
1076 softs->syncnattab[hv] = sl;
1083 sl->sl_num = softs->ipf_sync_num;
1084 MUTEX_EXIT(&softs->ipf_syncadd);
1109 MUTEX_ENTER(&softs->ipf_syncadd);
1110 sle = softs->synclog + softs->sl_idx++;
1123 MUTEX_EXIT(&softs->ipf_syncadd);
1144 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1155 lock = &softs->ipf_syncstate;
1157 lock = &softs->ipf_syncnat;
1162 MUTEX_ENTER(&softs->ipf_syncadd);
1163 slu = softs->syncupd + softs->su_idx;
1164 sl->sl_idx = softs->su_idx++;
1165 MUTEX_EXIT(&softs->ipf_syncadd);
1183 slu = softs->syncupd + sl->sl_idx;
1224 ipf_sync_flush_table(ipf_sync_softc_t *softs, int tabsize, synclist_t **table)
1247 softs->syncupd[sl->sl_idx].sup_hdr.sm_sl = NULL;
1271 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1289 MUTEX_ENTER(&softs->ipsl_mutex);
1290 i = (softs->sl_tail - softs->sl_idx) +
1291 (softs->su_tail - softs->su_idx);
1292 softs->sl_idx = 0;
1293 softs->su_idx = 0;
1294 softs->sl_tail = 0;
1295 softs->su_tail = 0;
1296 MUTEX_EXIT(&softs->ipsl_mutex);
1302 WRITE_ENTER(&softs->ipf_syncnat);
1303 i = ipf_sync_flush_table(softs, SYNC_NATTABSZ,
1304 softs->syncnattab);
1305 RWLOCK_EXIT(&softs->ipf_syncnat);
1311 WRITE_ENTER(&softs->ipf_syncstate);
1312 i = ipf_sync_flush_table(softs, SYNC_STATETABSZ,
1313 softs->syncstatetab);
1314 RWLOCK_EXIT(&softs->ipf_syncstate);
1347 ipf_sync_softc_t *softs = arg;
1348 return !((softs->sl_tail == softs->sl_idx) &&
1349 (softs->su_tail == softs->su_idx));
1390 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1392 softs->ipf_sync_events++;
1394 softs->ipf_sync_lastwakeup + softs->ipf_sync_wake_interval) ||
1395 (softs->ipf_sync_events > softs->ipf_sync_event_high_wm) ||
1396 ((softs->sl_tail - softs->sl_idx) >
1397 softs->ipf_sync_queue_high_wm) ||
1398 ((softs->su_tail - softs->su_idx) >
1399 softs->ipf_sync_queue_high_wm)) {
1416 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1418 softs->ipf_sync_events = 0;
1419 softs->ipf_sync_lastwakeup = softc->ipf_ticks;
1423 MUTEX_ENTER(&softs->ipsl_mutex);
1424 cv_signal(&softs->ipslwait);
1425 MUTEX_EXIT(&softs->ipsl_mutex);
1428 WAKEUP(&softs->sl_tail, 0);
1446 ipf_sync_softc_t *softs = softc->ipf_sync_soft;
1448 if ((softs->ipf_sync_events > 0) &&
1450 softs->ipf_sync_lastwakeup + softs->ipf_sync_wake_interval)) {