/* * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ /** * DOC: Declare various struct, macros which shall be used in * pmo lphb offload feature. * * Note: This file shall not contain public API's prototype/declarations. * */ #ifndef _WLAN_PMO_LPHB_PUBLIC_STRUCT_H_ #define _WLAN_PMO_LPHB_PUBLIC_STRUCT_H_ #include "wlan_pmo_common_public_struct.h" #define PMO_SIR_LPHB_FILTER_LEN 64 /** * enum lphb_ind_type -Low power heart beat indication type * @pmo_lphb_set_en_param_indid: lphb enable indication * @pmo_lphb_set_tcp_pararm_indid: lphb tcp param indication * @pmo_lphb_set_tcp_pkt_filter_indid: lphb tcp packet filter indication * @pmo_lphb_set_udp_pararm_indid: lphb udp param indication * @pmo_lphb_set_udp_pkt_filter_indid: lphb udp packet filter indication * @pmo_lphb_set_network_info_indid: lphb network information indication */ enum lphb_ind_type { pmo_lphb_set_en_param_indid, pmo_lphb_set_tcp_pararm_indid, pmo_lphb_set_tcp_pkt_filter_indid, pmo_lphb_set_udp_pararm_indid, pmo_lphb_set_udp_pkt_filter_indid, pmo_lphb_set_network_info_indid, }; /** * struct pmo_lphb_enable_req -Low power heart beat enable request * @enable: lphb enable request * @item: request item * @session: lphb session */ struct pmo_lphb_enable_req { uint8_t enable; uint8_t item; uint8_t session; }; /** * struct pmo_lphb_tcp_params - Low power heart beat tcp params * @srv_ip: source ip address * @dev_ip: destination ip address * @src_port: source port * @dst_port: destination port * @timeout: tcp timeout value * @session: session on which lphb needs to be configured * @gateway_mac: gateway mac address * @time_period_sec: time period in seconds * @tcp_sn: tcp sequence number */ struct pmo_lphb_tcp_params { uint32_t srv_ip; uint32_t dev_ip; uint16_t src_port; uint16_t dst_port; uint16_t timeout; uint8_t session; struct qdf_mac_addr gateway_mac; uint16_t time_period_sec; uint32_t tcp_sn; }; /** * struct pmo_lphb_tcp_filter_req - Low power heart beat tcp filter request * @length: length of filter * @offset: offset of filter * @session: session on which lphb needs to be configured * @filter: filter buffer */ struct pmo_lphb_tcp_filter_req { uint16_t length; uint8_t offset; uint8_t session; uint8_t filter[PMO_SIR_LPHB_FILTER_LEN]; }; /** * struct pmo_lphb_udp_params - Low power heart beat udp params * @srv_ip: source ip address * @dev_ip: destination ip address * @src_port: source port * @dst_port: destination port * @interval: time period in seconds * @timeout: tcp timeout value * @session: session on which lphb needs to be configured * @gateway_mac: gateway mac address */ struct pmo_lphb_udp_params { uint32_t srv_ip; uint32_t dev_ip; uint16_t src_port; uint16_t dst_port; uint16_t interval; uint16_t timeout; uint8_t session; struct qdf_mac_addr gateway_mac; }; /** * struct pmo_lphb_udp_filter_req - Low power heart beat udp filter request * @length: length of filter * @offset: offset of filter * @session: session on which lphb needs to be configured * @filter: filter buffer */ struct pmo_lphb_udp_filter_req { uint16_t length; uint8_t offset; uint8_t session; uint8_t filter[PMO_SIR_LPHB_FILTER_LEN]; }; /** * struct pmo_lphb_req - Low power heart beat request * @cmd: lphb command type * @dummy: whether dummy or not * @params: based on command lphb request buffer */ struct pmo_lphb_req { uint16_t cmd; uint16_t dummy; union { struct pmo_lphb_enable_req lphb_enable_req; struct pmo_lphb_tcp_params lphb_tcp_params; struct pmo_lphb_tcp_filter_req lphb_tcp_filter_req; struct pmo_lphb_udp_params lphb_udp_params; struct pmo_lphb_udp_filter_req lphb_udp_filter_req; } params; }; /** * struct pmo_lphb_rsp - Low power heart beat response * @session_idx: session id * @protocol_type: tell protocol type * @event_reason: carry reason of lphb event */ struct pmo_lphb_rsp { uint8_t session_idx; uint8_t protocol_type; /*TCP or UDP */ uint8_t event_reason; }; /* * Define typedef for lphb callback when fwr send response */ typedef void (*pmo_lphb_callback)(void *cb_ctx, struct pmo_lphb_rsp *ind_param); #endif /* end of _WLAN_PMO_LPHB_PUBLIC_STRUCT_H_ */