• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7800-V1.0.2.28/package/qca-nss-ecm/src/

Lines Matching defs:utii

170 static void ecm_tracker_udp_datagram_discard(struct ecm_tracker_udp_internal_instance *utii, ecm_tracker_sender_type_t sender, int32_t n)
172 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
174 DEBUG_TRACE("%p: discard %u datagrams for %d\n", utii, n, sender);
186 spin_lock_bh(&utii->lock);
188 skb = utii->src_recvd_order;
189 DEBUG_ASSERT(skb, "%p: bad list\n", utii);
191 utii->src_recvd_order = skb->next;
192 if (!utii->src_recvd_order) {
193 DEBUG_ASSERT(utii->src_recvd_order_last == skb, "%p: bad list\n", utii);
194 utii->src_recvd_order_last = NULL;
196 utii->src_recvd_order->prev = NULL;
199 utii->src_count--;
200 DEBUG_ASSERT(utii->src_count >= 0, "%p: bad total\n", utii);
201 utii->src_bytes_total -= skb->truesize;
203 DEBUG_ASSERT(utii->src_bytes_total >= 0, "%p: bad bytes total\n", utii);
205 spin_unlock_bh(&utii->lock);
219 spin_lock_bh(&utii->lock);
221 skb = utii->dest_recvd_order;
222 DEBUG_ASSERT(skb, "%p: bad list\n", utii);
224 utii->dest_recvd_order = skb->next;
225 if (!utii->dest_recvd_order) {
226 DEBUG_ASSERT(utii->dest_recvd_order_last == skb, "%p: bad list\n", utii);
227 utii->dest_recvd_order_last = NULL;
229 utii->dest_recvd_order->prev = NULL;
232 utii->dest_count--;
233 DEBUG_ASSERT(utii->dest_count >= 0, "%p: bad total\n", utii);
234 utii->dest_bytes_total -= skb->truesize;
236 DEBUG_ASSERT(utii->dest_bytes_total >= 0, "%p: bad bytes total\n", utii);
238 spin_unlock_bh(&utii->lock);
249 void ecm_tracker_udp_discard_all(struct ecm_tracker_udp_internal_instance *utii)
251 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
256 DEBUG_TRACE("%p: destroy all\n", utii);
257 ecm_tracker_udp_datagram_discard(utii, ECM_TRACKER_SENDER_TYPE_SRC, utii->src_count);
258 ecm_tracker_udp_datagram_discard(utii, ECM_TRACKER_SENDER_TYPE_DEST, utii->dest_count);
267 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
268 ecm_tracker_udp_discard_all(utii);
275 static void ecm_tracker_udp_ref(struct ecm_tracker_udp_internal_instance *utii)
277 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
279 spin_lock_bh(&utii->lock);
281 utii->refs++;
282 DEBUG_ASSERT(utii->refs > 0, "%p: ref wrap", utii);
283 DEBUG_TRACE("%p: ref %d\n", utii, utii->refs);
285 spin_unlock_bh(&utii->lock);
293 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
294 ecm_tracker_udp_ref(utii);
300 static int ecm_tracker_udp_deref(struct ecm_tracker_udp_internal_instance *utii)
303 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
305 spin_lock_bh(&utii->lock);
306 utii->refs--;
307 refs = utii->refs;
308 DEBUG_ASSERT(utii->refs >= 0, "%p: ref wrap", utii);
309 DEBUG_TRACE("%p: deref %d\n", utii, utii->refs);
311 if (utii->refs > 0) {
312 spin_unlock_bh(&utii->lock);
315 spin_unlock_bh(&utii->lock);
317 DEBUG_TRACE("%p: final\n", utii);
323 ecm_tracker_udp_datagram_discard(utii, ECM_TRACKER_SENDER_TYPE_SRC, utii->src_count);
324 ecm_tracker_udp_datagram_discard(utii, ECM_TRACKER_SENDER_TYPE_DEST, utii->dest_count);
329 DEBUG_ASSERT(ecm_tracker_udp_count >= 0, "%p: tracker count wrap", utii);
332 DEBUG_INFO("%p: Udp tracker final\n", utii);
333 DEBUG_CLEAR_MAGIC(utii);
334 kfree(utii);
344 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
345 return ecm_tracker_udp_deref(utii);
353 static int32_t ecm_tracker_udp_datagram_count_get(struct ecm_tracker_udp_internal_instance *utii, ecm_tracker_sender_type_t sender)
357 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
362 spin_lock_bh(&utii->lock);
364 count = utii->src_count;
366 count = utii->dest_count;
368 spin_unlock_bh(&utii->lock);
370 DEBUG_TRACE("%p: datagram count get for %d is %d\n", utii, sender, count);
381 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
382 return ecm_tracker_udp_datagram_count_get(utii, sender);
391 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
393 ecm_tracker_udp_datagram_discard(utii, sender, n);
402 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
405 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
410 spin_lock_bh(&utii->lock);
412 skb = utii->src_recvd_order;
414 skb = utii->dest_recvd_order;
421 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
425 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
429 spin_unlock_bh(&utii->lock);
450 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
453 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
454 DEBUG_TRACE("%p: datagram %d read at offset %d for %d bytes for %d\n", utii, i, offset, size, sender);
459 spin_lock_bh(&utii->lock);
461 skb = utii->src_recvd_order;
463 skb = utii->dest_recvd_order;
470 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
474 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
481 spin_unlock_bh(&utii->lock);
503 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
506 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
508 spin_lock_bh(&utii->lock);
509 data_total = utii->src_bytes_total + utii->dest_bytes_total;
510 spin_unlock_bh(&utii->lock);
521 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
524 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
526 spin_lock_bh(&utii->lock);
527 data_limit = utii->data_limit;
528 spin_unlock_bh(&utii->lock);
539 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
541 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
543 spin_lock_bh(&utii->lock);
544 utii->data_limit = data_limit;
545 spin_unlock_bh(&utii->lock);
552 static bool ecm_tracker_udp_datagram_add(struct ecm_tracker_udp_internal_instance *utii, ecm_tracker_sender_type_t sender,
560 utii, skb, sender, ip_hdr->ip_header_length, ip_hdr->total_length,
568 DEBUG_WARN("%p: Failed to clone packet %p\n", utii, skb);
572 DEBUG_TRACE("%p: cloned %p to %p\n", utii, skb, skbc);
582 DEBUG_WARN("%p: Invalid headers\n", utii);
591 spin_lock_bh(&utii->lock);
592 DEBUG_ASSERT((utii->src_bytes_total + utii->dest_bytes_total + skbc->truesize) > 0, "%p: bad total\n", utii);
593 if ((utii->src_bytes_total + utii->dest_bytes_total + skbc->truesize) > utii->data_limit) {
594 DEBUG_TRACE("%p: over limit\n", utii);
595 spin_unlock_bh(&utii->lock);
604 DEBUG_TRACE("%p: over global limit\n", utii);
605 spin_unlock_bh(&utii->lock);
615 skbc->prev = utii->src_recvd_order_last;
616 utii->src_recvd_order_last = skbc;
620 DEBUG_ASSERT(utii->src_recvd_order == NULL, "%p: bad list\n", utii);
621 utii->src_recvd_order = skbc;
624 utii->src_count++;
625 DEBUG_ASSERT(utii->src_count > 0, "%p: bad total\n", utii);
626 utii->src_bytes_total += skbc->truesize;
627 spin_unlock_bh(&utii->lock);
632 skbc->prev = utii->dest_recvd_order_last;
633 utii->dest_recvd_order_last = skbc;
637 DEBUG_ASSERT(utii->dest_recvd_order == NULL, "%p: bad list\n", utii);
638 utii->dest_recvd_order = skbc;
641 utii->dest_count++;
642 DEBUG_ASSERT(utii->dest_count > 0, "%p: bad total\n", utii);
643 utii->dest_bytes_total += skbc->truesize;
644 spin_unlock_bh(&utii->lock);
654 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
660 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
666 DEBUG_WARN("%p: no ip_hdr for %p\n", utii, skb);
675 DEBUG_WARN("%p: not/invalid udp %d\n", utii, ip_hdr.protocol);
680 return ecm_tracker_udp_datagram_add(utii, sender, &ip_hdr, ecm_udp_header, udp_header, skb);
691 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
692 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
693 return ecm_tracker_udp_datagram_add(utii, sender, ip_hdr, ecm_udp_header, udp_header, skb);
704 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
709 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
710 DEBUG_TRACE("%p: datagram data %d read at offset %d for %d bytes for %d\n", utii, i, offset, size, sender);
715 spin_lock_bh(&utii->lock);
717 skb = utii->src_recvd_order;
719 skb = utii->dest_recvd_order;
726 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
730 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
736 DEBUG_CHECK_MAGIC(skb_cb, ECM_TRACKER_UDP_SKB_CB_MAGIC, "%p: invalid cb magic %p\n", utii, skb);
738 DEBUG_ASSERT(size <= skb_cb->data_size, "%p: size %d too large for skb %p at %u\n", utii, size, skb, skb_cb->data_size);
741 spin_unlock_bh(&utii->lock);
752 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
757 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
758 DEBUG_TRACE("%p: datagram %u data size get for %d\n", utii, i, sender);
763 spin_lock_bh(&utii->lock);
765 skb = utii->src_recvd_order;
767 skb = utii->dest_recvd_order;
774 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
778 DEBUG_ASSERT(skb, "%p: index bad\n", utii);
784 DEBUG_CHECK_MAGIC(skb_cb, ECM_TRACKER_UDP_SKB_CB_MAGIC, "%p: invalid cb magic %p\n", utii, skb);
786 spin_unlock_bh(&utii->lock);
798 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
799 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
804 spin_lock_bh(&utii->lock);
805 utii->sender_state[sender] = ECM_TRACKER_SENDER_STATE_ESTABLISHED;
806 spin_unlock_bh(&utii->lock);
816 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
817 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
818 spin_lock_bh(&utii->lock);
819 *src_state = utii->sender_state[ECM_TRACKER_SENDER_TYPE_SRC];
820 *dest_state = utii->sender_state[ECM_TRACKER_SENDER_TYPE_DEST];
821 *tg = utii->timer_group;
822 spin_unlock_bh(&utii->lock);
834 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)ti;
845 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
854 spin_lock_bh(&utii->lock);
856 src_count = utii->src_count;
857 src_bytes_total = utii->src_bytes_total;
858 dest_count = utii->dest_count;
859 dest_bytes_total = utii->dest_bytes_total;
860 data_limit = utii->data_limit;
862 sender_state[ECM_TRACKER_SENDER_TYPE_SRC] = utii->sender_state[ECM_TRACKER_SENDER_TYPE_SRC];
863 sender_state[ECM_TRACKER_SENDER_TYPE_DEST] = utii->sender_state[ECM_TRACKER_SENDER_TYPE_DEST];
864 timer_group = utii->timer_group;
865 spin_unlock_bh(&utii->lock);
910 struct ecm_tracker_udp_internal_instance *utii = (struct ecm_tracker_udp_internal_instance *)uti;
911 DEBUG_CHECK_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC, "%p: magic failed", utii);
912 DEBUG_TRACE("%p: init udp tracker\n", utii);
914 spin_lock_bh(&utii->lock);
916 utii->data_limit = data_limit;
924 utii->timer_group = ECM_DB_TIMER_GROUPS_CONNECTION_UDP_WKP_TIMEOUT;
925 spin_unlock_bh(&utii->lock);
928 utii->timer_group = ECM_DB_TIMER_GROUPS_CONNECTION_UDP_GENERIC_TIMEOUT;
929 spin_unlock_bh(&utii->lock);
938 struct ecm_tracker_udp_internal_instance *utii;
940 utii = (struct ecm_tracker_udp_internal_instance *)kzalloc(sizeof(struct ecm_tracker_udp_internal_instance), GFP_ATOMIC | __GFP_NOWARN);
941 if (!utii) {
946 utii->udp_base.base.ref = ecm_tracker_udp_ref_callback;
947 utii->udp_base.base.deref = ecm_tracker_udp_deref_callback;
948 utii->udp_base.base.state_update = ecm_tracker_udp_state_update_callback;
949 utii->udp_base.base.state_get = ecm_tracker_udp_state_get_callback;
951 utii->udp_base.base.datagram_count_get = ecm_tracker_udp_datagram_count_get_callback;
952 utii->udp_base.base.datagram_discard = ecm_tracker_udp_datagram_discard_callback;
953 utii->udp_base.base.datagram_read = ecm_tracker_udp_datagram_read_callback;
954 utii->udp_base.base.datagram_size_get = ecm_tracker_udp_datagram_size_get_callback;
955 utii->udp_base.base.datagram_add = ecm_tracker_udp_datagram_add_callback;
956 utii->udp_base.base.discard_all = ecm_tracker_udp_discard_all_callback;
957 utii->udp_base.base.data_total_get = ecm_tracker_udp_data_total_get_callback;
958 utii->udp_base.base.data_limit_get = ecm_tracker_udp_data_limit_get_callback;
959 utii->udp_base.base.data_limit_set = ecm_tracker_udp_data_limit_set_callback;
961 utii->udp_base.data_read = ecm_tracker_udp_data_read_callback;
962 utii->udp_base.data_size_get = ecm_tracker_udp_data_size_get_callback;
963 utii->udp_base.datagram_add = ecm_tracker_udp_datagram_add_checked_callback;
966 utii->udp_base.base.state_text_get = ecm_tracker_udp_state_text_get_callback;
969 spin_lock_init(&utii->lock);
971 utii->refs = 1;
972 DEBUG_SET_MAGIC(utii, ECM_TRACKER_UDP_INSTANCE_MAGIC);
976 DEBUG_ASSERT(ecm_tracker_udp_count > 0, "%p: udp tracker count wrap\n", utii);
979 DEBUG_TRACE("UDP tracker created %p\n", utii);
980 return (struct ecm_tracker_udp_instance *)utii;