mirror of
https://github.com/physwizz/a155-U-u1.git
synced 2025-09-26 19:04:54 +00:00
277 lines
6.6 KiB
C
277 lines
6.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* mddp_export.h - Public API/structure provided for external modules.
|
|
*
|
|
* Copyright (c) 2020 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef __MDDP_EXPORT_H
|
|
#define __MDDP_EXPORT_H
|
|
|
|
#include <linux/if.h>
|
|
|
|
#include "mddp_wifi_def.h"
|
|
//------------------------------------------------------------------------------
|
|
// Struct definition.
|
|
// -----------------------------------------------------------------------------
|
|
#define __MDDP_VERSION__ 2
|
|
#define MDDP_TAG_PATTERN 0x4646
|
|
|
|
#define MDDP_MAX_GET_BUF_SZ 256
|
|
|
|
enum mddp_state_e {
|
|
MDDP_STATE_UNINIT = 0,
|
|
MDDP_STATE_ENABLING,
|
|
MDDP_STATE_DEACTIVATED,
|
|
MDDP_STATE_ACTIVATING,
|
|
MDDP_STATE_ACTIVATED,
|
|
MDDP_STATE_DEACTIVATING,
|
|
MDDP_STATE_DISABLING,
|
|
MDDP_STATE_DISABLED,
|
|
|
|
MDDP_STATE_CNT,
|
|
MDDP_STATE_DUMMY = 0x7fff /* Make it a 2-byte enum. */
|
|
};
|
|
|
|
enum mddp_app_type_e {
|
|
MDDP_APP_TYPE_RESERVED_1 = 0,
|
|
MDDP_APP_TYPE_WH,
|
|
|
|
MDDP_APP_TYPE_CNT,
|
|
|
|
MDDP_APP_TYPE_ALL = 0xff,
|
|
MDDP_APP_TYPE_DUMMY = 0x7fff /* Mark it a 2-byte enum. */
|
|
};
|
|
|
|
struct mddp_drv_conf_t {
|
|
enum mddp_app_type_e app_type;
|
|
};
|
|
|
|
typedef int32_t (*drv_cbf_change_state_t)(
|
|
enum mddp_state_e state, void *buf, uint32_t *buf_len);
|
|
|
|
struct mddp_drv_handle_t {
|
|
/* MDDP invokes these APIs provided by driver. */
|
|
drv_cbf_change_state_t change_state;
|
|
|
|
/* Application layer handler. */
|
|
union {
|
|
struct mddpw_drv_handle_t *wifi_handle;
|
|
};
|
|
};
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Public function definition - For driver
|
|
// -----------------------------------------------------------------------------
|
|
int32_t mddp_drv_attach(
|
|
struct mddp_drv_conf_t *conf, struct mddp_drv_handle_t *handle);
|
|
void mddp_drv_detach(
|
|
struct mddp_drv_conf_t *conf, struct mddp_drv_handle_t *handle);
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Public function definition - For HIDL
|
|
// -----------------------------------------------------------------------------
|
|
/*
|
|
* MDDP DEV control code.
|
|
*/
|
|
#define MDDP_CMCMD_MAGIC 'P'
|
|
#define MDDP_CMCMD_DEV_REQ _IORW(MDDP_CMCMD_MAGIC, 0)
|
|
#define MDDP_CTRL_MSG_MCODE 0x2454
|
|
#define MDDP_CTRL_MSG_VERSION 1
|
|
|
|
enum mddp_dev_evt_type_e {
|
|
MDDP_DEV_EVT_NONE = 0,
|
|
MDDP_DEV_EVT_STARTED = 1,
|
|
MDDP_DEV_EVT_STOPPED_ERROR = 2,
|
|
MDDP_DEV_EVT_STOPPED_UNSUPPORTED = 3,
|
|
MDDP_DEV_EVT_SUPPORT_AVAILABLE = 4,
|
|
MDDP_DEV_EVT_STOPPED_LIMIT_REACHED = 5,
|
|
MDDP_DEV_EVT_CONNECT_UPDATE = 6,
|
|
MDDP_DEV_EVT_WARNING_REACHED = 7,
|
|
|
|
MDDP_DEV_EVENT_CNT,
|
|
MDDP_DEV_EVENT_DUMMY = 0x7fff /* Mark it a 2-byte enum */
|
|
};
|
|
|
|
enum mddp_ctrl_msg_e {
|
|
/* CMCMD Request */
|
|
MDDP_CMCMD_ENABLE_REQ = 0,
|
|
MDDP_CMCMD_DISABLE_REQ,
|
|
MDDP_CMCMD_ACT_REQ,
|
|
MDDP_CMCMD_DEACT_REQ,
|
|
MDDP_CMCMD_GET_OFFLOAD_STATS_REQ,
|
|
MDDP_CMCMD_SET_DATA_LIMIT_REQ,
|
|
MDDP_CMCMD_SET_CT_VALUE_REQ,
|
|
MDDP_CMCMD_SET_WARNING_AND_DATA_LIMIT_REQ,
|
|
|
|
/* CMCMD Response */
|
|
MDDP_CMCMD_RSP_BEGIN = 0x100,
|
|
MDDP_CMCMD_ENABLE_RSP = MDDP_CMCMD_RSP_BEGIN,
|
|
MDDP_CMCMD_DISABLE_RSP,
|
|
MDDP_CMCMD_ACT_RSP,
|
|
MDDP_CMCMD_DEACT_RSP,
|
|
MDDP_CMCMD_LIMIT_IND,
|
|
MDDP_CMCMD_CT_IND,
|
|
MDDP_CMCMD_WARNING_IND,
|
|
MDDP_CMCMD_RSP_END,
|
|
|
|
MDDP_CMCMD_DUMMY = 0x7fff /* Mark it a 2-byte enum */
|
|
};
|
|
|
|
enum mddp_f_e_tag_type_e {
|
|
MDDP_E_TAG_NONE = 0,
|
|
MDDP_E_TAG_MAC = 1,
|
|
};
|
|
|
|
/*
|
|
* MDDP control request structure.
|
|
*/
|
|
struct mddp_dev_req_common_t {
|
|
uint16_t mcode;
|
|
uint16_t version;
|
|
enum mddp_app_type_e app_type;
|
|
enum mddp_ctrl_msg_e msg;
|
|
uint32_t data_len;
|
|
uint8_t data[0];
|
|
};
|
|
|
|
struct mddp_dev_req_enable_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_req_disable_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_req_act_t {
|
|
uint8_t ul_dev_name[IFNAMSIZ];
|
|
uint8_t dl_dev_name[IFNAMSIZ];
|
|
};
|
|
|
|
struct mddp_dev_req_deact_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_req_set_data_limit_t {
|
|
uint8_t ul_dev_name[IFNAMSIZ];
|
|
uint64_t limit_size; /* Bytes */
|
|
};
|
|
|
|
struct mddp_dev_req_set_warning_and_data_limit_t {
|
|
uint8_t ul_dev_name[IFNAMSIZ];
|
|
uint64_t limit_size; /* Bytes */
|
|
uint64_t warning_size; /* Bytes */
|
|
};
|
|
|
|
struct mddp_dev_req_set_ct_value_t {
|
|
uint32_t udp_ct_timeout;
|
|
uint32_t tcp_ct_timeout;
|
|
};
|
|
|
|
/*
|
|
* MDDP control response structure.
|
|
*/
|
|
struct mddp_dev_rsp_common_t {
|
|
uint16_t mcode;
|
|
uint16_t status;
|
|
enum mddp_app_type_e app_type;
|
|
enum mddp_ctrl_msg_e msg;
|
|
uint32_t data_len;
|
|
uint8_t data[0];
|
|
};
|
|
|
|
struct mddp_dev_rsp_enable_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_rsp_disable_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_rsp_act_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
struct mddp_dev_rsp_deact_t {
|
|
uint32_t rsv;
|
|
};
|
|
|
|
/*
|
|
* MDDP data statistics structure.
|
|
*/
|
|
struct mddp_u_data_stats_t {
|
|
uint64_t total_tx_bytes;
|
|
uint64_t total_tx_pkts;
|
|
uint64_t tx_tcp_bytes;
|
|
uint64_t tx_tcp_pkts;
|
|
uint64_t tx_udp_bytes;
|
|
uint64_t tx_udp_pkts;
|
|
uint64_t tx_others_bytes;
|
|
uint64_t tx_others_pkts;
|
|
uint64_t total_rx_bytes;
|
|
uint64_t total_rx_pkts;
|
|
uint64_t rx_tcp_bytes;
|
|
uint64_t rx_tcp_pkts;
|
|
uint64_t rx_udp_bytes;
|
|
uint64_t rx_udp_pkts;
|
|
uint64_t rx_others_bytes;
|
|
uint64_t rx_others_pkts;
|
|
};
|
|
|
|
/*
|
|
* MDDP rule info. for connection track update
|
|
*/
|
|
struct mddp_ct_nat_table_t {
|
|
uint8_t private_ip[4];
|
|
uint8_t target_ip[4];
|
|
uint8_t public_ip[4];
|
|
uint16_t private_port;
|
|
uint16_t target_port;
|
|
uint16_t public_port;
|
|
uint8_t protocol;
|
|
uint8_t reserved;
|
|
uint32_t timestamp;
|
|
bool dst_nat;
|
|
};
|
|
|
|
#define MAX_CT_NAT_TABLE_NUM 64
|
|
struct mddp_ct_timeout_ind_t {
|
|
uint16_t entry_num;
|
|
struct mddp_ct_nat_table_t nat_table[MAX_CT_NAT_TABLE_NUM];
|
|
};
|
|
|
|
/*
|
|
* MDDP tag structure.
|
|
*/
|
|
struct mddp_f_tag_packet_t {
|
|
u_int16_t guard_pattern;
|
|
u_int8_t version;
|
|
u_int8_t tag_len; // extension tag included
|
|
struct {
|
|
u_int8_t tag_info;
|
|
u_int8_t reserved;
|
|
u_int16_t port;
|
|
u_int32_t lan_netif_id;
|
|
u_int32_t ip;
|
|
} v2;
|
|
};
|
|
|
|
/*
|
|
* Extended MDDP tag structure - COMMON
|
|
*/
|
|
struct mddp_f_e_tag_common_t {
|
|
u_int8_t type;
|
|
u_int8_t len;
|
|
u_int8_t value[0];
|
|
} __packed;
|
|
|
|
/*
|
|
* Extended MDDP tag structure - MAC
|
|
*/
|
|
struct mddp_f_e_tag_mac_t {
|
|
u_int8_t mac_addr[6];
|
|
u_int32_t access_cnt;
|
|
} __packed;
|
|
|
|
#endif /* __MDDP_EXPORT_H */
|