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