blob: 4cd0df3a85f8c95d49272368c56011d4c0d229f9 [file] [log] [blame]
/*
* Copyright (c) 2017-2018 The Linux Foundation. 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
* @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
*/
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_ */