1*42e22086SApple OSS Distributions /* 2*42e22086SApple OSS Distributions * Copyright (c) 2000-2021 Apple Inc. All rights reserved. 3*42e22086SApple OSS Distributions * 4*42e22086SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*42e22086SApple OSS Distributions * 6*42e22086SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*42e22086SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*42e22086SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*42e22086SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*42e22086SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*42e22086SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*42e22086SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*42e22086SApple OSS Distributions * terms of an Apple operating system software license agreement. 14*42e22086SApple OSS Distributions * 15*42e22086SApple OSS Distributions * Please obtain a copy of the License at 16*42e22086SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*42e22086SApple OSS Distributions * 18*42e22086SApple OSS Distributions * The Original Code and all software distributed under the License are 19*42e22086SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*42e22086SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*42e22086SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*42e22086SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*42e22086SApple OSS Distributions * Please see the License for the specific language governing rights and 24*42e22086SApple OSS Distributions * limitations under the License. 25*42e22086SApple OSS Distributions * 26*42e22086SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*42e22086SApple OSS Distributions */ 28*42e22086SApple OSS Distributions /* 29*42e22086SApple OSS Distributions * Copyright (c) 1982, 1986, 1989, 1993 30*42e22086SApple OSS Distributions * The Regents of the University of California. All rights reserved. 31*42e22086SApple OSS Distributions * 32*42e22086SApple OSS Distributions * Redistribution and use in source and binary forms, with or without 33*42e22086SApple OSS Distributions * modification, are permitted provided that the following conditions 34*42e22086SApple OSS Distributions * are met: 35*42e22086SApple OSS Distributions * 1. Redistributions of source code must retain the above copyright 36*42e22086SApple OSS Distributions * notice, this list of conditions and the following disclaimer. 37*42e22086SApple OSS Distributions * 2. Redistributions in binary form must reproduce the above copyright 38*42e22086SApple OSS Distributions * notice, this list of conditions and the following disclaimer in the 39*42e22086SApple OSS Distributions * documentation and/or other materials provided with the distribution. 40*42e22086SApple OSS Distributions * 3. All advertising materials mentioning features or use of this software 41*42e22086SApple OSS Distributions * must display the following acknowledgement: 42*42e22086SApple OSS Distributions * This product includes software developed by the University of 43*42e22086SApple OSS Distributions * California, Berkeley and its contributors. 44*42e22086SApple OSS Distributions * 4. Neither the name of the University nor the names of its contributors 45*42e22086SApple OSS Distributions * may be used to endorse or promote products derived from this software 46*42e22086SApple OSS Distributions * without specific prior written permission. 47*42e22086SApple OSS Distributions * 48*42e22086SApple OSS Distributions * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 49*42e22086SApple OSS Distributions * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 50*42e22086SApple OSS Distributions * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 51*42e22086SApple OSS Distributions * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 52*42e22086SApple OSS Distributions * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 53*42e22086SApple OSS Distributions * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 54*42e22086SApple OSS Distributions * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 55*42e22086SApple OSS Distributions * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 56*42e22086SApple OSS Distributions * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 57*42e22086SApple OSS Distributions * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 58*42e22086SApple OSS Distributions * SUCH DAMAGE. 59*42e22086SApple OSS Distributions * 60*42e22086SApple OSS Distributions * From: @(#)if.h 8.1 (Berkeley) 6/10/93 61*42e22086SApple OSS Distributions * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.7 2001/07/24 19:10:18 brooks Exp $ 62*42e22086SApple OSS Distributions */ 63*42e22086SApple OSS Distributions 64*42e22086SApple OSS Distributions #ifndef _NET_IF_VAR_STATUS_H_ 65*42e22086SApple OSS Distributions #define _NET_IF_VAR_STATUS_H_ 66*42e22086SApple OSS Distributions 67*42e22086SApple OSS Distributions #include <machine/types.h> 68*42e22086SApple OSS Distributions #include <stdint.h> 69*42e22086SApple OSS Distributions 70*42e22086SApple OSS Distributions #pragma pack(4) 71*42e22086SApple OSS Distributions 72*42e22086SApple OSS Distributions /* 73*42e22086SApple OSS Distributions * Interface link status report -- includes statistics related to 74*42e22086SApple OSS Distributions * the link layer technology sent by the driver. The driver will monitor 75*42e22086SApple OSS Distributions * these statistics over an interval (3-4 secs) and will generate a report 76*42e22086SApple OSS Distributions * to the network stack. This will give first-hand information about the 77*42e22086SApple OSS Distributions * status of the first hop of the network path. The version and 78*42e22086SApple OSS Distributions * length values should be correct for the data to be processed correctly. 79*42e22086SApple OSS Distributions * The definitions are different for different kind of interfaces like 80*42e22086SApple OSS Distributions * Wifi, Cellular etc,. 81*42e22086SApple OSS Distributions */ 82*42e22086SApple OSS Distributions #define IF_CELLULAR_STATUS_REPORT_VERSION_1 1 83*42e22086SApple OSS Distributions #define IF_WIFI_STATUS_REPORT_VERSION_1 1 84*42e22086SApple OSS Distributions #define IF_CELLULAR_STATUS_REPORT_CURRENT_VERSION \ 85*42e22086SApple OSS Distributions IF_CELLULAR_STATUS_REPORT_VERSION_1 86*42e22086SApple OSS Distributions #define IF_WIFI_STATUS_REPORT_CURRENT_VERSION IF_WIFI_STATUS_REPORT_VERSION_1 87*42e22086SApple OSS Distributions /* 88*42e22086SApple OSS Distributions * For cellular interface -- 89*42e22086SApple OSS Distributions * There is no way to share common headers between the Baseband and 90*42e22086SApple OSS Distributions * the kernel. Any changes to this structure will need to be communicated 91*42e22086SApple OSS Distributions * to the Baseband team. It is better to use reserved space instead of 92*42e22086SApple OSS Distributions * changing the size or existing fields in the structure. 93*42e22086SApple OSS Distributions */ 94*42e22086SApple OSS Distributions struct if_cellular_status_v1 { 95*42e22086SApple OSS Distributions u_int32_t valid_bitmask; /* indicates which fields are valid */ 96*42e22086SApple OSS Distributions #define IF_CELL_LINK_QUALITY_METRIC_VALID 0x1 97*42e22086SApple OSS Distributions #define IF_CELL_UL_EFFECTIVE_BANDWIDTH_VALID 0x2 98*42e22086SApple OSS Distributions #define IF_CELL_UL_MAX_BANDWIDTH_VALID 0x4 99*42e22086SApple OSS Distributions #define IF_CELL_UL_MIN_LATENCY_VALID 0x8 100*42e22086SApple OSS Distributions #define IF_CELL_UL_EFFECTIVE_LATENCY_VALID 0x10 101*42e22086SApple OSS Distributions #define IF_CELL_UL_MAX_LATENCY_VALID 0x20 102*42e22086SApple OSS Distributions #define IF_CELL_UL_RETXT_LEVEL_VALID 0x40 103*42e22086SApple OSS Distributions #define IF_CELL_UL_BYTES_LOST_VALID 0x80 104*42e22086SApple OSS Distributions #define IF_CELL_UL_MIN_QUEUE_SIZE_VALID 0x100 105*42e22086SApple OSS Distributions #define IF_CELL_UL_AVG_QUEUE_SIZE_VALID 0x200 106*42e22086SApple OSS Distributions #define IF_CELL_UL_MAX_QUEUE_SIZE_VALID 0x400 107*42e22086SApple OSS Distributions #define IF_CELL_DL_EFFECTIVE_BANDWIDTH_VALID 0x800 108*42e22086SApple OSS Distributions #define IF_CELL_DL_MAX_BANDWIDTH_VALID 0x1000 109*42e22086SApple OSS Distributions #define IF_CELL_CONFIG_INACTIVITY_TIME_VALID 0x2000 110*42e22086SApple OSS Distributions #define IF_CELL_CONFIG_BACKOFF_TIME_VALID 0x4000 111*42e22086SApple OSS Distributions #define IF_CELL_UL_MSS_RECOMMENDED_VALID 0x8000 112*42e22086SApple OSS Distributions 113*42e22086SApple OSS Distributions u_int32_t link_quality_metric; 114*42e22086SApple OSS Distributions u_int32_t ul_effective_bandwidth; /* Measured uplink bandwidth based on current activity (bps) */ 115*42e22086SApple OSS Distributions u_int32_t ul_max_bandwidth; /* Maximum supported uplink bandwidth (bps) */ 116*42e22086SApple OSS Distributions u_int32_t ul_min_latency; /* min expected uplink latency for first hop (ms) */ 117*42e22086SApple OSS Distributions u_int32_t ul_effective_latency; /* current expected uplink latency for first hop (ms) */ 118*42e22086SApple OSS Distributions u_int32_t ul_max_latency; /* max expected uplink latency first hop (ms) */ 119*42e22086SApple OSS Distributions u_int32_t ul_retxt_level; /* Retransmission metric */ 120*42e22086SApple OSS Distributions #define IF_CELL_UL_RETXT_LEVEL_NONE 1 121*42e22086SApple OSS Distributions #define IF_CELL_UL_RETXT_LEVEL_LOW 2 122*42e22086SApple OSS Distributions #define IF_CELL_UL_RETXT_LEVEL_MEDIUM 3 123*42e22086SApple OSS Distributions #define IF_CELL_UL_RETXT_LEVEL_HIGH 4 124*42e22086SApple OSS Distributions u_int32_t ul_bytes_lost; /* % of total bytes lost on uplink in Q10 format */ 125*42e22086SApple OSS Distributions u_int32_t ul_min_queue_size; /* minimum bytes in queue */ 126*42e22086SApple OSS Distributions u_int32_t ul_avg_queue_size; /* average bytes in queue */ 127*42e22086SApple OSS Distributions u_int32_t ul_max_queue_size; /* maximum bytes in queue */ 128*42e22086SApple OSS Distributions u_int32_t dl_effective_bandwidth; /* Measured downlink bandwidth based on current activity (bps) */ 129*42e22086SApple OSS Distributions u_int32_t dl_max_bandwidth; /* Maximum supported downlink bandwidth (bps) */ 130*42e22086SApple OSS Distributions u_int32_t config_inactivity_time; /* ms */ 131*42e22086SApple OSS Distributions u_int32_t config_backoff_time; /* new connections backoff time in ms */ 132*42e22086SApple OSS Distributions #define IF_CELL_UL_MSS_RECOMMENDED_NONE 0x0 /* Use default */ 133*42e22086SApple OSS Distributions #define IF_CELL_UL_MSS_RECOMMENDED_MEDIUM 0x1 /* 1200 byte MSS */ 134*42e22086SApple OSS Distributions #define IF_CELL_UL_MSS_RECOMMENDED_LOW 0x2 /* 512 byte MSS */ 135*42e22086SApple OSS Distributions u_int16_t mss_recommended; 136*42e22086SApple OSS Distributions u_int16_t reserved_1; 137*42e22086SApple OSS Distributions u_int32_t reserved_2; 138*42e22086SApple OSS Distributions u_int64_t reserved_3; 139*42e22086SApple OSS Distributions u_int64_t reserved_4; 140*42e22086SApple OSS Distributions u_int64_t reserved_5; 141*42e22086SApple OSS Distributions u_int64_t reserved_6; 142*42e22086SApple OSS Distributions } __attribute__((packed)); 143*42e22086SApple OSS Distributions 144*42e22086SApple OSS Distributions struct if_cellular_status { 145*42e22086SApple OSS Distributions union { 146*42e22086SApple OSS Distributions struct if_cellular_status_v1 if_status_v1; 147*42e22086SApple OSS Distributions } if_cell_u; 148*42e22086SApple OSS Distributions }; 149*42e22086SApple OSS Distributions 150*42e22086SApple OSS Distributions /* 151*42e22086SApple OSS Distributions * These statistics will be provided by the Wifi driver periodically. 152*42e22086SApple OSS Distributions * After sending each report, the driver should start computing again 153*42e22086SApple OSS Distributions * for the next report duration so that the values represent the link 154*42e22086SApple OSS Distributions * status for one report duration. 155*42e22086SApple OSS Distributions */ 156*42e22086SApple OSS Distributions 157*42e22086SApple OSS Distributions struct if_wifi_status_v1 { 158*42e22086SApple OSS Distributions u_int32_t valid_bitmask; 159*42e22086SApple OSS Distributions #define IF_WIFI_LINK_QUALITY_METRIC_VALID 0x1 160*42e22086SApple OSS Distributions #define IF_WIFI_UL_EFFECTIVE_BANDWIDTH_VALID 0x2 161*42e22086SApple OSS Distributions #define IF_WIFI_UL_MAX_BANDWIDTH_VALID 0x4 162*42e22086SApple OSS Distributions #define IF_WIFI_UL_MIN_LATENCY_VALID 0x8 163*42e22086SApple OSS Distributions #define IF_WIFI_UL_EFFECTIVE_LATENCY_VALID 0x10 164*42e22086SApple OSS Distributions #define IF_WIFI_UL_MAX_LATENCY_VALID 0x20 165*42e22086SApple OSS Distributions #define IF_WIFI_UL_RETXT_LEVEL_VALID 0x40 166*42e22086SApple OSS Distributions #define IF_WIFI_UL_ERROR_RATE_VALID 0x80 167*42e22086SApple OSS Distributions #define IF_WIFI_UL_BYTES_LOST_VALID 0x100 168*42e22086SApple OSS Distributions #define IF_WIFI_DL_EFFECTIVE_BANDWIDTH_VALID 0x200 169*42e22086SApple OSS Distributions #define IF_WIFI_DL_MAX_BANDWIDTH_VALID 0x400 170*42e22086SApple OSS Distributions #define IF_WIFI_DL_MIN_LATENCY_VALID 0x800 171*42e22086SApple OSS Distributions #define IF_WIFI_DL_EFFECTIVE_LATENCY_VALID 0x1000 172*42e22086SApple OSS Distributions #define IF_WIFI_DL_MAX_LATENCY_VALID 0x2000 173*42e22086SApple OSS Distributions #define IF_WIFI_DL_ERROR_RATE_VALID 0x4000 174*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_FREQUENCY_VALID 0x8000 175*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_MULTICAST_RATE_VALID 0x10000 176*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_SCAN_COUNT_VALID 0x20000 177*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_SCAN_DURATION_VALID 0x40000 178*42e22086SApple OSS Distributions u_int32_t link_quality_metric; /* link quality metric */ 179*42e22086SApple OSS Distributions u_int32_t ul_effective_bandwidth; /* Measured uplink bandwidth based on current activity (bps) */ 180*42e22086SApple OSS Distributions u_int32_t ul_max_bandwidth; /* Maximum supported uplink bandwidth (bps) */ 181*42e22086SApple OSS Distributions u_int32_t ul_min_latency; /* min expected uplink latency for first hop (ms) */ 182*42e22086SApple OSS Distributions u_int32_t ul_effective_latency; /* current expected uplink latency for first hop (ms) */ 183*42e22086SApple OSS Distributions u_int32_t ul_max_latency; /* max expected uplink latency for first hop (ms) */ 184*42e22086SApple OSS Distributions u_int32_t ul_retxt_level; /* Retransmission metric */ 185*42e22086SApple OSS Distributions #define IF_WIFI_UL_RETXT_LEVEL_NONE 1 186*42e22086SApple OSS Distributions #define IF_WIFI_UL_RETXT_LEVEL_LOW 2 187*42e22086SApple OSS Distributions #define IF_WIFI_UL_RETXT_LEVEL_MEDIUM 3 188*42e22086SApple OSS Distributions #define IF_WIFI_UL_RETXT_LEVEL_HIGH 4 189*42e22086SApple OSS Distributions u_int32_t ul_bytes_lost; /* % of total bytes lost on uplink in Q10 format */ 190*42e22086SApple OSS Distributions u_int32_t ul_error_rate; /* % of bytes dropped on uplink after many retransmissions in Q10 format */ 191*42e22086SApple OSS Distributions u_int32_t dl_effective_bandwidth; /* Measured downlink bandwidth based on current activity (bps) */ 192*42e22086SApple OSS Distributions u_int32_t dl_max_bandwidth; /* Maximum supported downlink bandwidth (bps) */ 193*42e22086SApple OSS Distributions /* 194*42e22086SApple OSS Distributions * The download latency values indicate the time AP may have to wait for the 195*42e22086SApple OSS Distributions * driver to receive the packet. These values give the range of expected latency 196*42e22086SApple OSS Distributions * mainly due to co-existence events and channel hopping where the interface 197*42e22086SApple OSS Distributions * becomes unavailable. 198*42e22086SApple OSS Distributions */ 199*42e22086SApple OSS Distributions u_int32_t dl_min_latency; /* min expected latency for first hop in ms */ 200*42e22086SApple OSS Distributions u_int32_t dl_effective_latency; /* current expected latency for first hop in ms */ 201*42e22086SApple OSS Distributions u_int32_t dl_max_latency; /* max expected latency for first hop in ms */ 202*42e22086SApple OSS Distributions u_int32_t dl_error_rate; /* % of CRC or other errors in Q10 format */ 203*42e22086SApple OSS Distributions u_int32_t config_frequency; /* 2.4 or 5 GHz */ 204*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_FREQUENCY_2_4_GHZ 1 205*42e22086SApple OSS Distributions #define IF_WIFI_CONFIG_FREQUENCY_5_0_GHZ 2 206*42e22086SApple OSS Distributions u_int32_t config_multicast_rate; /* bps */ 207*42e22086SApple OSS Distributions u_int32_t scan_count; /* scan count during the previous period */ 208*42e22086SApple OSS Distributions u_int32_t scan_duration; /* scan duration in ms */ 209*42e22086SApple OSS Distributions u_int64_t reserved_1; 210*42e22086SApple OSS Distributions u_int64_t reserved_2; 211*42e22086SApple OSS Distributions u_int64_t reserved_3; 212*42e22086SApple OSS Distributions u_int64_t reserved_4; 213*42e22086SApple OSS Distributions } __attribute__((packed)); 214*42e22086SApple OSS Distributions 215*42e22086SApple OSS Distributions struct if_wifi_status { 216*42e22086SApple OSS Distributions union { 217*42e22086SApple OSS Distributions struct if_wifi_status_v1 if_status_v1; 218*42e22086SApple OSS Distributions } if_wifi_u; 219*42e22086SApple OSS Distributions }; 220*42e22086SApple OSS Distributions 221*42e22086SApple OSS Distributions struct if_link_status { 222*42e22086SApple OSS Distributions u_int32_t ifsr_version; /* version of this report */ 223*42e22086SApple OSS Distributions u_int32_t ifsr_len; /* length of the following struct */ 224*42e22086SApple OSS Distributions union { 225*42e22086SApple OSS Distributions struct if_cellular_status ifsr_cell; 226*42e22086SApple OSS Distributions struct if_wifi_status ifsr_wifi; 227*42e22086SApple OSS Distributions } ifsr_u; 228*42e22086SApple OSS Distributions }; 229*42e22086SApple OSS Distributions 230*42e22086SApple OSS Distributions /* 231*42e22086SApple OSS Distributions * This structure is used to define the parameters for advisory notifications 232*42e22086SApple OSS Distributions * on an interface. 233*42e22086SApple OSS Distributions */ 234*42e22086SApple OSS Distributions #pragma pack(push, 1) 235*42e22086SApple OSS Distributions enum ifnet_interface_advisory_version : uint8_t { 236*42e22086SApple OSS Distributions /* 237*42e22086SApple OSS Distributions * Initial version with interface advisory report for WiFi interface. 238*42e22086SApple OSS Distributions */ 239*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_VERSION_1 = 1, 240*42e22086SApple OSS Distributions #if XNU_KERNEL_PRIVATE 241*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_VERSION_MIN = IF_INTERFACE_ADVISORY_VERSION_1, 242*42e22086SApple OSS Distributions #endif /* XNU_KERNEL_PRIVATE */ 243*42e22086SApple OSS Distributions /* 244*42e22086SApple OSS Distributions * Reorganized the interface advisory structure to separate out 245*42e22086SApple OSS Distributions * WiFi and Cellular interface specific reports. 246*42e22086SApple OSS Distributions */ 247*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_VERSION_2 = 2, 248*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_VERSION_CURRENT = IF_INTERFACE_ADVISORY_VERSION_2, 249*42e22086SApple OSS Distributions #if XNU_KERNEL_PRIVATE 250*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_VERSION_MAX = IF_INTERFACE_ADVISORY_VERSION_2, 251*42e22086SApple OSS Distributions #endif /* XNU_KERNEL_PRIVATE */ 252*42e22086SApple OSS Distributions }; 253*42e22086SApple OSS Distributions 254*42e22086SApple OSS Distributions enum ifnet_interface_advisory_direction : uint8_t { 255*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_DIRECTION_TX = 1, 256*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_DIRECTION_RX = 2, 257*42e22086SApple OSS Distributions }; 258*42e22086SApple OSS Distributions 259*42e22086SApple OSS Distributions enum ifnet_interface_advisory_interface_type : uint8_t { 260*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_WIFI = 1, 261*42e22086SApple OSS Distributions #if XNU_KERNEL_PRIVATE 262*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_MIN = 263*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_WIFI, 264*42e22086SApple OSS Distributions #endif /* XNU_KERNEL_PRIVATE */ 265*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_CELL = 2, 266*42e22086SApple OSS Distributions #if XNU_KERNEL_PRIVATE 267*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_MAX = 268*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_INTERFACE_TYPE_CELL, 269*42e22086SApple OSS Distributions #endif /* XNU_KERNEL_PRIVATE */ 270*42e22086SApple OSS Distributions }; 271*42e22086SApple OSS Distributions 272*42e22086SApple OSS Distributions struct ifnet_interface_advisory_header { 273*42e22086SApple OSS Distributions /* The current structure version */ 274*42e22086SApple OSS Distributions enum ifnet_interface_advisory_version version; 275*42e22086SApple OSS Distributions /* Specifies if the advisory is for transmit or receive path */ 276*42e22086SApple OSS Distributions enum ifnet_interface_advisory_direction direction; 277*42e22086SApple OSS Distributions /* Interface type */ 278*42e22086SApple OSS Distributions enum ifnet_interface_advisory_interface_type interface_type; 279*42e22086SApple OSS Distributions /* reserved for future use */ 280*42e22086SApple OSS Distributions uint8_t reserved; 281*42e22086SApple OSS Distributions }; 282*42e22086SApple OSS Distributions 283*42e22086SApple OSS Distributions enum ifnet_interface_advisory_rate_trend : int32_t { 284*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_UP = INT32_MAX, 285*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_DOWN = INT32_MIN, 286*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_NEUTRAL = 0, 287*42e22086SApple OSS Distributions }; 288*42e22086SApple OSS Distributions 289*42e22086SApple OSS Distributions struct ifnet_interface_advisory_capacity { 290*42e22086SApple OSS Distributions /* 291*42e22086SApple OSS Distributions * suggestion for data rate change to keep the latency low. 292*42e22086SApple OSS Distributions * unit: bits per second (bps) 293*42e22086SApple OSS Distributions * NOTE: if the interface cannot provide suggestions in 294*42e22086SApple OSS Distributions * terms of bps, it should use the following values: 295*42e22086SApple OSS Distributions * INT32_MAX : ramp up 296*42e22086SApple OSS Distributions * INT32_MIN : ramp down 297*42e22086SApple OSS Distributions * 0 : neutral 298*42e22086SApple OSS Distributions */ 299*42e22086SApple OSS Distributions enum ifnet_interface_advisory_rate_trend rate_trend_suggestion; 300*42e22086SApple OSS Distributions /* 301*42e22086SApple OSS Distributions * Time of the issue of advisory. 302*42e22086SApple OSS Distributions * Timestamp should be in the host domain. 303*42e22086SApple OSS Distributions * unit: mach absolute time 304*42e22086SApple OSS Distributions */ 305*42e22086SApple OSS Distributions uint64_t timestamp; 306*42e22086SApple OSS Distributions /* 307*42e22086SApple OSS Distributions * Maximum theoretical bandwidth of the interface. 308*42e22086SApple OSS Distributions * unit: bits per second (bps) 309*42e22086SApple OSS Distributions */ 310*42e22086SApple OSS Distributions uint64_t max_bandwidth; 311*42e22086SApple OSS Distributions /* 312*42e22086SApple OSS Distributions * Total bytes sent or received on the interface. 313*42e22086SApple OSS Distributions * wrap around possible and the application should account for that. 314*42e22086SApple OSS Distributions * unit: byte 315*42e22086SApple OSS Distributions */ 316*42e22086SApple OSS Distributions uint64_t total_byte_count; 317*42e22086SApple OSS Distributions /* 318*42e22086SApple OSS Distributions * average throughput observed at the driver stack. 319*42e22086SApple OSS Distributions * unit: bits per second (bps) 320*42e22086SApple OSS Distributions */ 321*42e22086SApple OSS Distributions uint64_t average_throughput; 322*42e22086SApple OSS Distributions /* 323*42e22086SApple OSS Distributions * flushable queue size at the driver. 324*42e22086SApple OSS Distributions * should be set to UINT32_MAX if not available. 325*42e22086SApple OSS Distributions * unit: byte 326*42e22086SApple OSS Distributions */ 327*42e22086SApple OSS Distributions uint32_t flushable_queue_size; 328*42e22086SApple OSS Distributions /* 329*42e22086SApple OSS Distributions * non flushable queue size at the driver. 330*42e22086SApple OSS Distributions * should be set to UINT32_MAX if not available. 331*42e22086SApple OSS Distributions * unit: byte 332*42e22086SApple OSS Distributions */ 333*42e22086SApple OSS Distributions uint32_t non_flushable_queue_size; 334*42e22086SApple OSS Distributions /* 335*42e22086SApple OSS Distributions * average delay observed at the interface. 336*42e22086SApple OSS Distributions * unit: milliseconds (ms) 337*42e22086SApple OSS Distributions */ 338*42e22086SApple OSS Distributions uint32_t average_delay; 339*42e22086SApple OSS Distributions }; 340*42e22086SApple OSS Distributions 341*42e22086SApple OSS Distributions enum ifnet_interface_advisory_wifi_freq_band : uint8_t { 342*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_FREQ_BAND_NOT_AVAIL = 0, 343*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_FREQ_BAND_WIFI_24GHZ = 1, 344*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_FREQ_BAND_WIFI_5GHZ = 2, 345*42e22086SApple OSS Distributions IF_INTERFACE_ADVISORY_FREQ_BAND_WIFI_6GHZ = 3, 346*42e22086SApple OSS Distributions }; 347*42e22086SApple OSS Distributions 348*42e22086SApple OSS Distributions /* 349*42e22086SApple OSS Distributions * This structure is used to define the parameters for advisory notifications 350*42e22086SApple OSS Distributions * that are specific for WiFi interface. 351*42e22086SApple OSS Distributions */ 352*42e22086SApple OSS Distributions struct ifnet_interface_advisory_wifi_context { 353*42e22086SApple OSS Distributions /* 354*42e22086SApple OSS Distributions * Current frequency band (enumeration). 355*42e22086SApple OSS Distributions */ 356*42e22086SApple OSS Distributions enum ifnet_interface_advisory_wifi_freq_band frequency_band; 357*42e22086SApple OSS Distributions /* 358*42e22086SApple OSS Distributions * Intermittent WiFi state [true(1)/false(0)] 359*42e22086SApple OSS Distributions */ 360*42e22086SApple OSS Distributions uint8_t intermittent_state; 361*42e22086SApple OSS Distributions /* 362*42e22086SApple OSS Distributions * Estimated period for which intermittent state is expected to last. 363*42e22086SApple OSS Distributions * 1 tick -> 1 ms UNDEF => UINT16_MAX 364*42e22086SApple OSS Distributions */ 365*42e22086SApple OSS Distributions uint16_t estimated_intermittent_period; 366*42e22086SApple OSS Distributions /* 367*42e22086SApple OSS Distributions * Expected wifi outage period during intermittent state 368*42e22086SApple OSS Distributions * 1 tick -> 1 ms UNDEF => UINT16_MAX 369*42e22086SApple OSS Distributions */ 370*42e22086SApple OSS Distributions uint16_t single_outage_period; 371*42e22086SApple OSS Distributions /* 372*42e22086SApple OSS Distributions * WiFi-BT coexistence, 1-ON, 0-OFF 373*42e22086SApple OSS Distributions */ 374*42e22086SApple OSS Distributions uint8_t bt_coex; 375*42e22086SApple OSS Distributions /* 376*42e22086SApple OSS Distributions * on scale of 1 to 5 377*42e22086SApple OSS Distributions */ 378*42e22086SApple OSS Distributions uint8_t quality_score_delay; 379*42e22086SApple OSS Distributions /* 380*42e22086SApple OSS Distributions * on scale of 1 to 5 381*42e22086SApple OSS Distributions */ 382*42e22086SApple OSS Distributions uint8_t quality_score_loss; 383*42e22086SApple OSS Distributions /* 384*42e22086SApple OSS Distributions * on scale of 1 to 5 385*42e22086SApple OSS Distributions */ 386*42e22086SApple OSS Distributions uint8_t quality_score_channel; 387*42e22086SApple OSS Distributions /* 388*42e22086SApple OSS Distributions * bitmap of all radio contenders. 389*42e22086SApple OSS Distributions */ 390*42e22086SApple OSS Distributions #define IF_INTERFACE_ADVISORY_WIFI_RADIO_COEX_BT 0x01 391*42e22086SApple OSS Distributions #define IF_INTERFACE_ADVISORY_WIFI_RADIO_COEX_AWDL 0x02 392*42e22086SApple OSS Distributions uint8_t radio_coex; 393*42e22086SApple OSS Distributions /* 394*42e22086SApple OSS Distributions * time available to WiFi since last notification (in ms). 395*42e22086SApple OSS Distributions */ 396*42e22086SApple OSS Distributions uint16_t wlan_duty_cycle; 397*42e22086SApple OSS Distributions /* 398*42e22086SApple OSS Distributions * bitrate information for each queue (in Kbps). 399*42e22086SApple OSS Distributions */ 400*42e22086SApple OSS Distributions #define IF_INTERFACE_ADVISORY_WIFI_TX_QUEUE_COUNT 6 401*42e22086SApple OSS Distributions uint32_t wifi_observed_tx_bitrate[IF_INTERFACE_ADVISORY_WIFI_TX_QUEUE_COUNT]; 402*42e22086SApple OSS Distributions }; 403*42e22086SApple OSS Distributions 404*42e22086SApple OSS Distributions /* 405*42e22086SApple OSS Distributions * This structure is used to define the parameters for advisory notifications 406*42e22086SApple OSS Distributions * that are specific for Cellular interface. 407*42e22086SApple OSS Distributions */ 408*42e22086SApple OSS Distributions struct ifnet_interface_advisory_cell_context { 409*42e22086SApple OSS Distributions /* 410*42e22086SApple OSS Distributions * Radio Access Technology 411*42e22086SApple OSS Distributions */ 412*42e22086SApple OSS Distributions uint8_t radio_access_technology; 413*42e22086SApple OSS Distributions /* 414*42e22086SApple OSS Distributions * Received Reference Signal Received level (RSRP dBm) 415*42e22086SApple OSS Distributions */ 416*42e22086SApple OSS Distributions int16_t reference_signal_level; 417*42e22086SApple OSS Distributions /* 418*42e22086SApple OSS Distributions * Received Signal strength level (RSSI dBm) 419*42e22086SApple OSS Distributions */ 420*42e22086SApple OSS Distributions int16_t signal_level; 421*42e22086SApple OSS Distributions /* 422*42e22086SApple OSS Distributions * Received signal quality (SNR dB). 423*42e22086SApple OSS Distributions */ 424*42e22086SApple OSS Distributions int8_t signal_quality; 425*42e22086SApple OSS Distributions /* 426*42e22086SApple OSS Distributions * Uplink Block Error Rate % 427*42e22086SApple OSS Distributions */ 428*42e22086SApple OSS Distributions uint8_t uplink_bler; 429*42e22086SApple OSS Distributions /* 430*42e22086SApple OSS Distributions * Downlink Block Error Rate % 431*42e22086SApple OSS Distributions */ 432*42e22086SApple OSS Distributions uint8_t downlink_bler; 433*42e22086SApple OSS Distributions /* 434*42e22086SApple OSS Distributions * Bandwidth Limitation Type. I.e. TTI-B. 435*42e22086SApple OSS Distributions */ 436*42e22086SApple OSS Distributions uint8_t bandwidth_limitation_indication; 437*42e22086SApple OSS Distributions /* 438*42e22086SApple OSS Distributions * Discontinuous reception state: CDRX on/off. 439*42e22086SApple OSS Distributions */ 440*42e22086SApple OSS Distributions uint8_t cdrx_state; 441*42e22086SApple OSS Distributions /* 442*42e22086SApple OSS Distributions * Discontinuous reception cycle in ms. 443*42e22086SApple OSS Distributions */ 444*42e22086SApple OSS Distributions uint16_t cdrx_cycle; 445*42e22086SApple OSS Distributions /* 446*42e22086SApple OSS Distributions * Approximate outage period when not known 447*42e22086SApple OSS Distributions */ 448*42e22086SApple OSS Distributions uint16_t estimated_outage_period; 449*42e22086SApple OSS Distributions /* 450*42e22086SApple OSS Distributions * Cellular outage state: i.e. handover in progress. 451*42e22086SApple OSS Distributions * 0 - no outage 452*42e22086SApple OSS Distributions * 1 - outage. 453*42e22086SApple OSS Distributions */ 454*42e22086SApple OSS Distributions #define IF_INTERFACE_ADVISORY_CELL_OUTAGE_STATE_NO 0 455*42e22086SApple OSS Distributions #define IF_INTERFACE_ADVISORY_CELL_OUTAGE_STATE_YES 1 456*42e22086SApple OSS Distributions uint8_t outage_state; 457*42e22086SApple OSS Distributions /* 458*42e22086SApple OSS Distributions * padding for alignment. 459*42e22086SApple OSS Distributions */ 460*42e22086SApple OSS Distributions uint8_t __pad; 461*42e22086SApple OSS Distributions }; 462*42e22086SApple OSS Distributions 463*42e22086SApple OSS Distributions struct ifnet_interface_advisory { 464*42e22086SApple OSS Distributions union { 465*42e22086SApple OSS Distributions struct { /* version 1 structure (to be deprecated) */ 466*42e22086SApple OSS Distributions /* The current structure version */ 467*42e22086SApple OSS Distributions uint8_t version; 468*42e22086SApple OSS Distributions /* Specifies if the advisory is for transmit or receive path */ 469*42e22086SApple OSS Distributions uint8_t direction; 470*42e22086SApple OSS Distributions /* reserved for future use */ 471*42e22086SApple OSS Distributions uint16_t _reserved; 472*42e22086SApple OSS Distributions /* 473*42e22086SApple OSS Distributions * suggestion for data rate change to keep the latency low. 474*42e22086SApple OSS Distributions * unit: bits per second (bps) 475*42e22086SApple OSS Distributions * NOTE: if the interface cannot provide suggestions in terms of bps, 476*42e22086SApple OSS Distributions * it should use the following values: 477*42e22086SApple OSS Distributions * INT32_MAX : ramp up 478*42e22086SApple OSS Distributions * INT32_MIN : ramp down 479*42e22086SApple OSS Distributions * 0 : neutral 480*42e22086SApple OSS Distributions */ 481*42e22086SApple OSS Distributions int32_t rate_trend_suggestion; 482*42e22086SApple OSS Distributions /* 483*42e22086SApple OSS Distributions * Time of the issue of advisory. 484*42e22086SApple OSS Distributions * Timestamp should be in the host domain. 485*42e22086SApple OSS Distributions * unit: mach absolute time 486*42e22086SApple OSS Distributions */ 487*42e22086SApple OSS Distributions uint64_t timestamp; 488*42e22086SApple OSS Distributions /* 489*42e22086SApple OSS Distributions * Maximum theoretical bandwidth of the interface. 490*42e22086SApple OSS Distributions * unit: bits per second (bps) 491*42e22086SApple OSS Distributions */ 492*42e22086SApple OSS Distributions uint64_t max_bandwidth; 493*42e22086SApple OSS Distributions /* 494*42e22086SApple OSS Distributions * Total bytes sent or received on the interface. 495*42e22086SApple OSS Distributions * wrap around possible and the application should account for that. 496*42e22086SApple OSS Distributions * unit: byte 497*42e22086SApple OSS Distributions */ 498*42e22086SApple OSS Distributions uint64_t total_byte_count; 499*42e22086SApple OSS Distributions /* 500*42e22086SApple OSS Distributions * average throughput observed at the driver stack. 501*42e22086SApple OSS Distributions * unit: bits per second (bps) 502*42e22086SApple OSS Distributions */ 503*42e22086SApple OSS Distributions uint64_t average_throughput; 504*42e22086SApple OSS Distributions /* 505*42e22086SApple OSS Distributions * flushable queue size at the driver. 506*42e22086SApple OSS Distributions * should be set to UINT32_MAX if not available. 507*42e22086SApple OSS Distributions * unit: byte 508*42e22086SApple OSS Distributions */ 509*42e22086SApple OSS Distributions uint32_t flushable_queue_size; 510*42e22086SApple OSS Distributions /* 511*42e22086SApple OSS Distributions * non flushable queue size at the driver. 512*42e22086SApple OSS Distributions * should be set to UINT32_MAX if not available. 513*42e22086SApple OSS Distributions * unit: byte 514*42e22086SApple OSS Distributions */ 515*42e22086SApple OSS Distributions uint32_t non_flushable_queue_size; 516*42e22086SApple OSS Distributions /* 517*42e22086SApple OSS Distributions * average delay observed at the interface. 518*42e22086SApple OSS Distributions * unit: milliseconds (ms) 519*42e22086SApple OSS Distributions */ 520*42e22086SApple OSS Distributions uint32_t average_delay; 521*42e22086SApple OSS Distributions /* 522*42e22086SApple OSS Distributions * Current frequency band (enumeration). 523*42e22086SApple OSS Distributions */ 524*42e22086SApple OSS Distributions uint8_t frequency_band; 525*42e22086SApple OSS Distributions /* 526*42e22086SApple OSS Distributions * Intermittent WiFi state [true(1)/false(0)] 527*42e22086SApple OSS Distributions */ 528*42e22086SApple OSS Distributions uint8_t intermittent_state; 529*42e22086SApple OSS Distributions /* 530*42e22086SApple OSS Distributions * Estimated period for which intermittent state is expected to last. 531*42e22086SApple OSS Distributions * 1 tick -> 1 ms UNDEF => UINT16_MAX 532*42e22086SApple OSS Distributions */ 533*42e22086SApple OSS Distributions uint16_t estimated_intermittent_period; 534*42e22086SApple OSS Distributions /* 535*42e22086SApple OSS Distributions * Expected wifi outage period during intermittent state 536*42e22086SApple OSS Distributions * 1 tick -> 1 ms UNDEF => UINT16_MAX 537*42e22086SApple OSS Distributions */ 538*42e22086SApple OSS Distributions uint16_t single_outage_period; 539*42e22086SApple OSS Distributions 540*42e22086SApple OSS Distributions /* 541*42e22086SApple OSS Distributions * WiFi-BT coexistence, 1-ON, 0-OFF 542*42e22086SApple OSS Distributions */ 543*42e22086SApple OSS Distributions uint8_t bt_coex; 544*42e22086SApple OSS Distributions /* 545*42e22086SApple OSS Distributions * on scale of 1 to 5 546*42e22086SApple OSS Distributions */ 547*42e22086SApple OSS Distributions uint8_t quality_score_delay; 548*42e22086SApple OSS Distributions /* 549*42e22086SApple OSS Distributions * on scale of 1 to 5 550*42e22086SApple OSS Distributions */ 551*42e22086SApple OSS Distributions uint8_t quality_score_loss; 552*42e22086SApple OSS Distributions /* 553*42e22086SApple OSS Distributions * on scale of 1 to 5 554*42e22086SApple OSS Distributions */ 555*42e22086SApple OSS Distributions uint8_t quality_score_channel; 556*42e22086SApple OSS Distributions }; 557*42e22086SApple OSS Distributions 558*42e22086SApple OSS Distributions struct { /* version 2 structure */ 559*42e22086SApple OSS Distributions struct ifnet_interface_advisory_header header; 560*42e22086SApple OSS Distributions struct ifnet_interface_advisory_capacity capacity; 561*42e22086SApple OSS Distributions union { 562*42e22086SApple OSS Distributions struct ifnet_interface_advisory_wifi_context wifi_context; 563*42e22086SApple OSS Distributions struct ifnet_interface_advisory_cell_context cell_context; 564*42e22086SApple OSS Distributions }; 565*42e22086SApple OSS Distributions }; 566*42e22086SApple OSS Distributions }; 567*42e22086SApple OSS Distributions } __attribute__((aligned(sizeof(uint64_t)))); 568*42e22086SApple OSS Distributions #pragma pack(pop) 569*42e22086SApple OSS Distributions 570*42e22086SApple OSS Distributions /* 571*42e22086SApple OSS Distributions * Definitions related to traffic steering 572*42e22086SApple OSS Distributions */ 573*42e22086SApple OSS Distributions #pragma pack(push, 1) 574*42e22086SApple OSS Distributions 575*42e22086SApple OSS Distributions /* Supported types */ 576*42e22086SApple OSS Distributions /* Reserving 1 for link layer */ 577*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_TYPE_INET 2 578*42e22086SApple OSS Distributions 579*42e22086SApple OSS Distributions /* Supported flags */ 580*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_FLAG_INBOUND 0x0001 581*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_FLAG_OUTBOUND 0x0002 582*42e22086SApple OSS Distributions 583*42e22086SApple OSS Distributions struct ifnet_traffic_descriptor_common { 584*42e22086SApple OSS Distributions uint8_t itd_type; 585*42e22086SApple OSS Distributions uint8_t _reserved; 586*42e22086SApple OSS Distributions uint16_t itd_len; /* length of entire struct (common + td-specific) */ 587*42e22086SApple OSS Distributions uint32_t itd_flags; 588*42e22086SApple OSS Distributions }; 589*42e22086SApple OSS Distributions 590*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_IPVER 0x01 591*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_PROTO 0x02 592*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_LADDR 0x04 593*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_RADDR 0x08 594*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_LPORT 0x10 595*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_DESCRIPTOR_INET_RPORT 0x20 596*42e22086SApple OSS Distributions 597*42e22086SApple OSS Distributions struct ifnet_ip_addr { 598*42e22086SApple OSS Distributions union { 599*42e22086SApple OSS Distributions uint8_t addr8[16]; 600*42e22086SApple OSS Distributions uint16_t addr16[8]; 601*42e22086SApple OSS Distributions uint32_t addr32[4]; 602*42e22086SApple OSS Distributions }; 603*42e22086SApple OSS Distributions }; 604*42e22086SApple OSS Distributions #define iia_v4addr addr32[3] 605*42e22086SApple OSS Distributions 606*42e22086SApple OSS Distributions struct ifnet_traffic_descriptor_inet { 607*42e22086SApple OSS Distributions struct ifnet_traffic_descriptor_common inet_common; 608*42e22086SApple OSS Distributions uint8_t inet_mask; 609*42e22086SApple OSS Distributions uint8_t inet_ipver; /* IPVERSION or IPV6_VERSION */ 610*42e22086SApple OSS Distributions uint8_t inet_proto; /* IPPROTO_TCP or IPPROTO_UDP */ 611*42e22086SApple OSS Distributions uint8_t _reserved; 612*42e22086SApple OSS Distributions struct ifnet_ip_addr inet_laddr; 613*42e22086SApple OSS Distributions struct ifnet_ip_addr inet_raddr; 614*42e22086SApple OSS Distributions uint16_t inet_lport; 615*42e22086SApple OSS Distributions uint16_t inet_rport; 616*42e22086SApple OSS Distributions }; 617*42e22086SApple OSS Distributions 618*42e22086SApple OSS Distributions #define IFNET_TRAFFIC_RULE_ACTION_STEER 1 619*42e22086SApple OSS Distributions struct ifnet_traffic_rule_action { 620*42e22086SApple OSS Distributions uint8_t ra_type; 621*42e22086SApple OSS Distributions uint8_t _reserved; 622*42e22086SApple OSS Distributions uint16_t ra_len; 623*42e22086SApple OSS Distributions }; 624*42e22086SApple OSS Distributions 625*42e22086SApple OSS Distributions struct ifnet_traffic_rule_action_steer { 626*42e22086SApple OSS Distributions struct ifnet_traffic_rule_action ras_common; 627*42e22086SApple OSS Distributions uint64_t ras_qset_id; 628*42e22086SApple OSS Distributions }; 629*42e22086SApple OSS Distributions #pragma pack(pop) 630*42e22086SApple OSS Distributions 631*42e22086SApple OSS Distributions #pragma pack() 632*42e22086SApple OSS Distributions 633*42e22086SApple OSS Distributions #endif /* !_NET_IF_VAR_STATUS_H_ */ 634