xref: /xnu-12377.41.6/bsd/net/dlil_sysctl.h (revision bbb1b6f9e71b8cdde6e5cd6f4841f207dee3d828)
1*bbb1b6f9SApple OSS Distributions /*
2*bbb1b6f9SApple OSS Distributions  * Copyright (c) 1999-2024 Apple Inc. All rights reserved.
3*bbb1b6f9SApple OSS Distributions  *
4*bbb1b6f9SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*bbb1b6f9SApple OSS Distributions  *
6*bbb1b6f9SApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*bbb1b6f9SApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*bbb1b6f9SApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*bbb1b6f9SApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*bbb1b6f9SApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*bbb1b6f9SApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*bbb1b6f9SApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*bbb1b6f9SApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*bbb1b6f9SApple OSS Distributions  *
15*bbb1b6f9SApple OSS Distributions  * Please obtain a copy of the License at
16*bbb1b6f9SApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*bbb1b6f9SApple OSS Distributions  *
18*bbb1b6f9SApple OSS Distributions  * The Original Code and all software distributed under the License are
19*bbb1b6f9SApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*bbb1b6f9SApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*bbb1b6f9SApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*bbb1b6f9SApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*bbb1b6f9SApple OSS Distributions  * Please see the License for the specific language governing rights and
24*bbb1b6f9SApple OSS Distributions  * limitations under the License.
25*bbb1b6f9SApple OSS Distributions  *
26*bbb1b6f9SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*bbb1b6f9SApple OSS Distributions  */
28*bbb1b6f9SApple OSS Distributions /*
29*bbb1b6f9SApple OSS Distributions  * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
30*bbb1b6f9SApple OSS Distributions  * support for mandatory and extensible security protections.  This notice
31*bbb1b6f9SApple OSS Distributions  * is included in support of clause 2.2 (b) of the Apple Public License,
32*bbb1b6f9SApple OSS Distributions  * Version 2.0.
33*bbb1b6f9SApple OSS Distributions  */
34*bbb1b6f9SApple OSS Distributions #ifndef DLIL_SYSCTL_H
35*bbb1b6f9SApple OSS Distributions #define DLIL_SYSCTL_H
36*bbb1b6f9SApple OSS Distributions 
37*bbb1b6f9SApple OSS Distributions /*
38*bbb1b6f9SApple OSS Distributions  * Sysctl settings and metrics for DLIL.
39*bbb1b6f9SApple OSS Distributions  */
40*bbb1b6f9SApple OSS Distributions 
41*bbb1b6f9SApple OSS Distributions #if BSD_KERNEL_PRIVATE
42*bbb1b6f9SApple OSS Distributions 
43*bbb1b6f9SApple OSS Distributions #include <sys/kernel_types.h>
44*bbb1b6f9SApple OSS Distributions #include <net/if.h>
45*bbb1b6f9SApple OSS Distributions #include <net/dlil_var_private.h>
46*bbb1b6f9SApple OSS Distributions 
47*bbb1b6f9SApple OSS Distributions 
48*bbb1b6f9SApple OSS Distributions /******************************************************************************
49*bbb1b6f9SApple OSS Distributions * Section: DLIL send and receive queues.                                     *
50*bbb1b6f9SApple OSS Distributions ******************************************************************************/
51*bbb1b6f9SApple OSS Distributions 
52*bbb1b6f9SApple OSS Distributions #define IF_RCVQ_MINLEN  32
53*bbb1b6f9SApple OSS Distributions #define IF_RCVQ_MAXLEN  256
54*bbb1b6f9SApple OSS Distributions 
55*bbb1b6f9SApple OSS Distributions extern uint32_t if_sndq_maxlen;
56*bbb1b6f9SApple OSS Distributions extern uint32_t if_rcvq_maxlen;
57*bbb1b6f9SApple OSS Distributions extern uint32_t if_delaybased_queue; /* enable/disable*/
58*bbb1b6f9SApple OSS Distributions extern uint32_t ifnet_start_delayed;
59*bbb1b6f9SApple OSS Distributions extern uint32_t ifnet_delay_start_disabled;
60*bbb1b6f9SApple OSS Distributions extern uint32_t if_rcvq_burst_limit;
61*bbb1b6f9SApple OSS Distributions extern uint32_t if_rcvq_trim_pct;
62*bbb1b6f9SApple OSS Distributions extern struct chain_len_stats tx_chain_len_stats;
63*bbb1b6f9SApple OSS Distributions extern uint32_t tx_chain_len_count;
64*bbb1b6f9SApple OSS Distributions 
65*bbb1b6f9SApple OSS Distributions 
66*bbb1b6f9SApple OSS Distributions /******************************************************************************
67*bbb1b6f9SApple OSS Distributions * Section: DLIL opportunistic rx polling.                                    *
68*bbb1b6f9SApple OSS Distributions ******************************************************************************/
69*bbb1b6f9SApple OSS Distributions 
70*bbb1b6f9SApple OSS Distributions /* Input poll interval definitions */
71*bbb1b6f9SApple OSS Distributions #define IF_RXPOLL_INTERVALTIME_MIN      (1ULL * 1000)           /* 1 us */
72*bbb1b6f9SApple OSS Distributions #define IF_RXPOLL_INTERVALTIME          (1ULL * 1000 * 1000)    /* 1 ms */
73*bbb1b6f9SApple OSS Distributions 
74*bbb1b6f9SApple OSS Distributions extern uint32_t if_rxpoll;                   /* enable/disable */
75*bbb1b6f9SApple OSS Distributions extern uint32_t if_rxpoll_decay;
76*bbb1b6f9SApple OSS Distributions extern uint64_t if_rxpoll_mode_holdtime;
77*bbb1b6f9SApple OSS Distributions extern uint64_t if_rxpoll_sample_holdtime;
78*bbb1b6f9SApple OSS Distributions extern uint64_t if_rxpoll_interval_time;
79*bbb1b6f9SApple OSS Distributions extern uint32_t if_rxpoll_interval_pkts;
80*bbb1b6f9SApple OSS Distributions extern uint32_t if_sysctl_rxpoll_wlowat;
81*bbb1b6f9SApple OSS Distributions extern uint32_t if_sysctl_rxpoll_whiwat;
82*bbb1b6f9SApple OSS Distributions extern uint32_t if_rxpoll_max;
83*bbb1b6f9SApple OSS Distributions 
84*bbb1b6f9SApple OSS Distributions #if TEST_INPUT_THREAD_TERMINATION
85*bbb1b6f9SApple OSS Distributions extern uint32_t if_input_thread_termination_spin;
86*bbb1b6f9SApple OSS Distributions #endif /* TEST_INPUT_THREAD_TERMINATION */
87*bbb1b6f9SApple OSS Distributions 
88*bbb1b6f9SApple OSS Distributions extern uint32_t cur_dlil_input_threads;
89*bbb1b6f9SApple OSS Distributions 
90*bbb1b6f9SApple OSS Distributions 
91*bbb1b6f9SApple OSS Distributions /******************************************************************************
92*bbb1b6f9SApple OSS Distributions * Section: hardware-assisted checksum mechanism.                             *
93*bbb1b6f9SApple OSS Distributions ******************************************************************************/
94*bbb1b6f9SApple OSS Distributions 
95*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_tx;                  /* enable/disable */
96*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_rx;                  /* enable/disable */
97*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_in_invalidated;      /* Inbound packets with invalid hw cksum. */
98*bbb1b6f9SApple OSS Distributions 
99*bbb1b6f9SApple OSS Distributions 
100*bbb1b6f9SApple OSS Distributions /*
101*bbb1b6f9SApple OSS Distributions  * Hardware-assisted checksum debugging metrics.
102*bbb1b6f9SApple OSS Distributions  */
103*bbb1b6f9SApple OSS Distributions 
104*bbb1b6f9SApple OSS Distributions #define HWCKSUM_DBG_PARTIAL_FORCED      0x1  /* Forced partial checksum. */
105*bbb1b6f9SApple OSS Distributions #define HWCKSUM_DBG_PARTIAL_RXOFF_ADJ   0x2  /* Adjust start offset. */
106*bbb1b6f9SApple OSS Distributions #define HWCKSUM_DBG_FINALIZE_FORCED     0x10 /* Forced finalize. */
107*bbb1b6f9SApple OSS Distributions #define HWCKSUM_DBG_MASK \
108*bbb1b6f9SApple OSS Distributions 	(HWCKSUM_DBG_PARTIAL_FORCED | HWCKSUM_DBG_PARTIAL_RXOFF_ADJ |   \
109*bbb1b6f9SApple OSS Distributions 	HWCKSUM_DBG_FINALIZE_FORCED)
110*bbb1b6f9SApple OSS Distributions 
111*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_dbg;                        /* enable/disable */
112*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_dbg_mode;                   /* HWCKSUM_DBG_ bitmask */
113*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_partial_forced;         /* Packets forced using partial cksum. */
114*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_partial_forced_bytes;   /* Bytes forced using partial cksum. */
115*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_dbg_partial_rxoff_forced;   /* Forced partial cksum rx offset. */
116*bbb1b6f9SApple OSS Distributions extern uint32_t hwcksum_dbg_partial_rxoff_adj;      /* Adjusted partial cksum rx offset. */
117*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_verified;               /* Packets verified for having good cksum. */
118*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_bad_cksum;              /* Packets with bad hw cksum. */
119*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_bad_rxoff;              /* Packets with invalid rx offset. */
120*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_adjusted;               /* Packets with adjusted rx offset. */
121*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_finalized_hdr;          /* Finalized headers. */
122*bbb1b6f9SApple OSS Distributions extern uint64_t hwcksum_dbg_finalized_data;         /* Finalized payloads. */
123*bbb1b6f9SApple OSS Distributions 
124*bbb1b6f9SApple OSS Distributions 
125*bbb1b6f9SApple OSS Distributions /******************************************************************************
126*bbb1b6f9SApple OSS Distributions * Section: DLIL debugging, notifications and sanity checks                   *
127*bbb1b6f9SApple OSS Distributions ******************************************************************************/
128*bbb1b6f9SApple OSS Distributions 
129*bbb1b6f9SApple OSS Distributions extern uint32_t if_flowadv;                 /* enable/disable */
130*bbb1b6f9SApple OSS Distributions extern uint32_t threshold_notify;           /* enable/disable */
131*bbb1b6f9SApple OSS Distributions extern uint32_t threshold_interval;         /* in seconds */
132*bbb1b6f9SApple OSS Distributions extern struct net_api_stats net_api_stats;
133*bbb1b6f9SApple OSS Distributions extern int dlil_verbose;
134*bbb1b6f9SApple OSS Distributions extern uint32_t net_wake_pkt_debug;
135*bbb1b6f9SApple OSS Distributions 
136*bbb1b6f9SApple OSS Distributions #if IFNET_INPUT_SANITY_CHK
137*bbb1b6f9SApple OSS Distributions extern uint32_t dlil_input_sanity_check;
138*bbb1b6f9SApple OSS Distributions #endif /* IFNET_INPUT_SANITY_CHK */
139*bbb1b6f9SApple OSS Distributions 
140*bbb1b6f9SApple OSS Distributions 
141*bbb1b6f9SApple OSS Distributions 
142*bbb1b6f9SApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */
143*bbb1b6f9SApple OSS Distributions 
144*bbb1b6f9SApple OSS Distributions #endif /* DLIL_SYSCTL_H */
145