573 uint_t tcp_label_len; /* length of cached label */
574
575 /*
576 * tcp_closemp_used is protected by listener's tcp_eager_lock
577 * when used for eagers. When used for a tcp in TIME_WAIT state
578 * or in tcp_close(), it is not protected by any lock as we
579 * do not expect any other thread to use it concurrently.
580 * We do allow re-use of tcp_closemp in tcp_time_wait_collector()
581 * and tcp_close() but not concurrently.
582 */
583 boolean_t tcp_closemp_used;
584
585 /*
586 * previous and next eagers in the list of droppable eagers. See
587 * the comments before MAKE_DROPPABLE(). These pointers are
588 * protected by listener's tcp_eager_lock.
589 */
590 struct tcp_s *tcp_eager_prev_drop_q0;
591 struct tcp_s *tcp_eager_next_drop_q0;
592
593 /*
594 * Have we flow controlled xmitter?
595 * This variable can be modified outside the squeue and hence must
596 * not be declared as a bit field along with the rest that are
597 * modified only within the squeue.
598 * protected by the tcp_non_sq_lock lock.
599 */
600 boolean_t tcp_flow_stopped;
601
602 /*
603 * tcp_sodirect is used by tcp on the receive side to push mblk_t(s)
604 * directly to sockfs. Also, to schedule asynchronous copyout directly
605 * to a pending user-land uio buffer.
606 */
607 sodirect_t *tcp_sodirect;
608
609 #ifdef DEBUG
610 pc_t tcmp_stk[15];
611 #endif
612 } tcp_t;
|
573 uint_t tcp_label_len; /* length of cached label */
574
575 /*
576 * tcp_closemp_used is protected by listener's tcp_eager_lock
577 * when used for eagers. When used for a tcp in TIME_WAIT state
578 * or in tcp_close(), it is not protected by any lock as we
579 * do not expect any other thread to use it concurrently.
580 * We do allow re-use of tcp_closemp in tcp_time_wait_collector()
581 * and tcp_close() but not concurrently.
582 */
583 boolean_t tcp_closemp_used;
584
585 /*
586 * previous and next eagers in the list of droppable eagers. See
587 * the comments before MAKE_DROPPABLE(). These pointers are
588 * protected by listener's tcp_eager_lock.
589 */
590 struct tcp_s *tcp_eager_prev_drop_q0;
591 struct tcp_s *tcp_eager_next_drop_q0;
592
593 boolean_t tcp_dtrace_connect_established; /* trace this event */
594
595 /*
596 * Have we flow controlled xmitter?
597 * This variable can be modified outside the squeue and hence must
598 * not be declared as a bit field along with the rest that are
599 * modified only within the squeue.
600 * protected by the tcp_non_sq_lock lock.
601 */
602 boolean_t tcp_flow_stopped;
603
604 /*
605 * tcp_sodirect is used by tcp on the receive side to push mblk_t(s)
606 * directly to sockfs. Also, to schedule asynchronous copyout directly
607 * to a pending user-land uio buffer.
608 */
609 sodirect_t *tcp_sodirect;
610
611 #ifdef DEBUG
612 pc_t tcmp_stk[15];
613 #endif
614 } tcp_t;
|