blob: 7601bf2d0830faeccf56ee26afcee349ce43a183 [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.wifi;
import android.hardware.wifi.WifiDebugPacketFateFrameType;
/**
* Information regarding the frame transmitted/received.
*/
@VintfStability
parcelable WifiDebugPacketFateFrameInfo {
/**
* The type of MAC-layer frame that this frame_info holds.
* - For data frames, use FRAME_TYPE_ETHERNET_II.
* - For management frames, use FRAME_TYPE_80211_MGMT.
* - If the type of the frame is unknown, use FRAME_TYPE_UNKNOWN.
*/
WifiDebugPacketFateFrameType frameType;
/**
* The number of bytes included in |frameContent|.
* If the frame contents are missing (e.g. RX frame dropped in firmware),
* |frameLen| must be set to 0.
*/
long frameLen;
/**
* Host clock when this frame was received by the driver (either outbound
* from the host network stack, or inbound from the firmware).
* - The timestamp must be taken from a clock which includes time the host
* spent suspended (e.g. ktime_get_boottime()).
* - If no host timestamp is available (e.g. RX frame was dropped in firmware),
* this field must be set to 0.
*/
long driverTimestampUsec;
/**
* Firmware clock when this frame was received by the firmware
* (either outbound from the host, or inbound from a remote station).
* - The timestamp must be taken from a clock which includes time firmware
* spent suspended (if applicable).
* - If no firmware timestamp is available (e.g. TX frame was dropped by the
* driver), then this field must be set to 0.
* - Consumers of |frameInfo| must not assume any synchronization between
* the driver and firmware clocks.
*/
long firmwareTimestampUsec;
/**
* Actual frame content. This is the raw bytes of the corresponding packet.
* - Should be provided for TX frames originated by the host.
* - Should be provided for RX frames received by the driver.
* - Optionally provided for TX frames originated by firmware.
* (At discretion of HAL implementation.)
* - Optionally provided for RX frames dropped in firmware.
* (At discretion of HAL implementation.)
* - If frame content is not provided, |frameLen| must be set to 0.
*/
byte[] frameContent;
}