blob: a18c716ed77613b69cc24573d2407734689ae597 [file] [log] [blame]
/*
* HND Run Time Environment ioctl.
*
* Copyright (C) 2020, Broadcom.
*
* Unless you and Broadcom execute a separate written software license
* agreement governing use of this software, this software is licensed to you
* under the terms of the GNU General Public License version 2 (the "GPL"),
* available at http://www.broadcom.com/licenses/GPLv2.php, with the
* following added to such license:
*
* As a special exception, the copyright holders of this software give you
* permission to link this software with independent modules, and to copy and
* distribute the resulting executable under terms of your choice, provided that
* you also meet, for each linked independent module, the terms and conditions of
* the license of that module. An independent module is a module which is not
* derived from this software. The special exception does not apply to any
* modifications of the software.
*
*
* <<Broadcom-WL-IPTag/Dual:>>
*/
#ifndef _dngl_ioctl_h_
#define _dngl_ioctl_h_
/* ==== Dongle IOCTLs i.e. non-d11 IOCTLs ==== */
#ifndef _rte_ioctl_h_
/* ================================================================ */
/* These are the existing ioctls moved from src/include/rte_ioctl.h */
/* ================================================================ */
/* RTE IOCTL definitions for generic ether devices */
#define RTEIOCTLSTART 0x8901
#define RTEGHWADDR 0x8901
#define RTESHWADDR 0x8902
#define RTEGMTU 0x8903
#define RTEGSTATS 0x8904
#define RTEGALLMULTI 0x8905
#define RTESALLMULTI 0x8906
#define RTEGPROMISC 0x8907
#define RTESPROMISC 0x8908
#define RTESMULTILIST 0x8909
#define RTEGUP 0x890A
#define RTEGPERMADDR 0x890B
#define RTEDEVPWRSTCHG 0x890C /* Device pwr state change for PCIedev */
#define RTEDEVPMETOGGLE 0x890D /* Toggle PME# to wake up the host */
#define RTEDEVTIMESYNC 0x890E /* Device TimeSync */
#define RTEDEVDSNOTIFY 0x890F /* Bus DS state notification */
#define RTED11DMALPBK_INIT 0x8910 /* D11 DMA loopback init */
#define RTED11DMALPBK_UNINIT 0x8911 /* D11 DMA loopback uninit */
#define RTED11DMALPBK_RUN 0x8912 /* D11 DMA loopback run */
#define RTEDEVTSBUFPOST 0x8913 /* Async interface for tsync buffer post */
#define RTED11DMAHOSTLPBK_RUN 0x8914 /* D11 DMA host memory loopback run */
#define RTEDEVGETTSF 0x8915 /* Get device TSF */
#define RTEDURATIONUNIT 0x8916 /* Duration unit */
#define RTEWRITE_WAR_REGS 0x8917 /* write workaround regs */
#define RTEDEVRMPMK 0x8918 /* Remove PMK */
#define RTEDEVDBGVAL 0x8919 /* Set debug val */
/* Ensure last RTE IOCTL define val is assigned to RTEIOCTLEND */
#define RTEIOCTLEND 0x8919 /* LAST RTE IOCTL value */
#define RTE_IOCTL_QUERY 0x00
#define RTE_IOCTL_SET 0x01
#define RTE_IOCTL_OVL_IDX_MASK 0x1e
#define RTE_IOCTL_OVL_RSV 0x20
#define RTE_IOCTL_OVL 0x40
#define RTE_IOCTL_OVL_IDX_SHIFT 1
enum hnd_ioctl_cmd {
HND_RTE_DNGL_IS_SS = 1, /* true if device connected at super speed */
/* PCIEDEV specific wl <--> bus ioctls */
BUS_GET_VAR = 2,
BUS_SET_VAR = 3,
BUS_FLUSH_RXREORDER_Q = 4,
BUS_SET_LTR_STATE = 5,
BUS_FLUSH_CHAINED_PKTS = 6,
BUS_SET_COPY_COUNT = 7,
BUS_UPDATE_FLOW_PKTS_MAX = 8,
BUS_UPDATE_EXTRA_TXLFRAGS = 9,
BUS_UPDATE_FRWD_RESRV_BUFCNT = 10,
BUS_PCIE_CONFIG_ACCESS = 11,
BUS_HC_EVENT_MASK_UPDATE = 12,
BUS_SET_MAC_WAKE_STATE = 13,
BUS_FRWD_PKT_RXCMPLT = 14,
BUS_PCIE_LATENCY_ENAB = 15, /* to enable latency feature in pcie */
BUS_GET_MAXITEMS = 16,
BUS_SET_BUS_CSO_CAP = 17, /* Update the CSO cap from wl layer to bus layer */
BUS_DUMP_RX_DMA_STALL_RELATED_INFO = 18,
BUS_UPDATE_RESVPOOL_STATE = 19 /* Update resvpool state */
};
#define SDPCMDEV_SET_MAXTXPKTGLOM 1
#define RTE_MEMUSEINFO_VER 0x00
typedef struct memuse_info {
uint16 ver; /* version of this struct */
uint16 len; /* length in bytes of this structure */
uint32 tot; /* Total memory */
uint32 text_len; /* Size of Text segment memory */
uint32 data_len; /* Size of Data segment memory */
uint32 bss_len; /* Size of BSS segment memory */
uint32 arena_size; /* Total Heap size */
uint32 arena_free; /* Heap memory available or free */
uint32 inuse_size; /* Heap memory currently in use */
uint32 inuse_hwm; /* High watermark of memory - reclaimed memory */
uint32 inuse_overhead; /* tally of allocated mem_t blocks */
uint32 inuse_total; /* Heap in-use + Heap overhead memory */
uint32 free_lwm; /* Least free size since reclaim */
uint32 mf_count; /* Malloc failure count */
} memuse_info_t;
/* Different DMA loopback modes */
#define M2M_DMA_LOOPBACK 0 /* PCIE M2M mode */
#define D11_DMA_LOOPBACK 1 /* PCIE M2M and D11 mode without ucode */
#define BMC_DMA_LOOPBACK 2 /* PCIE M2M and D11 mode with ucode */
#define M2M_NON_DMA_LOOPBACK 3 /* Non DMA(indirect) mode */
#define D11_DMA_HOST_MEM_LPBK 4 /* D11 mode */
#define M2M_DMA_WRITE_TO_RAM 6 /* PCIE M2M write to specific memory mode */
#define M2M_DMA_READ_FROM_RAM 7 /* PCIE M2M read from specific memory mode */
#define D11_DMA_WRITE_TO_RAM 8 /* D11 write to specific memory mode */
#define D11_DMA_READ_FROM_RAM 9 /* D11 read from specific memory mode */
/* For D11 DMA loopback test */
typedef struct d11_dmalpbk_init_args {
uint8 core_num;
uint8 lpbk_mode;
} d11_dmalpbk_init_args_t;
typedef struct d11_dmalpbk_args {
uint8 *buf;
int32 len;
void *p;
uint8 core_num;
uint8 pad[3];
} d11_dmalpbk_args_t;
typedef enum wl_config_var {
WL_VAR_TX_PKTFETCH_INDUCE = 1,
WL_VAR_LAST
} wl_config_var_t;
typedef struct wl_config_buf {
wl_config_var_t var;
uint32 val;
} wl_config_buf_t;
/* ================================================================ */
/* These are the existing ioctls moved from src/include/rte_ioctl.h */
/* ================================================================ */
#endif /* _rte_ioctl_h_ */
/* MPU test iovar version */
#define MPU_TEST_STRUCT_VER 0
/* MPU test OP */
#define MPU_TEST_OP_READ 0
#define MPU_TEST_OP_WRITE 1
#define MPU_TEST_OP_EXECUTE 2
/* Debug iovar for MPU testing */
typedef struct mpu_test_args {
/* version control */
uint16 ver;
uint16 len; /* the length of this structure */
/* data */
uint32 addr;
uint8 op; /* see MPU_TEST_OP_XXXX */
uint8 rsvd;
uint16 size; /* valid for read/write */
uint8 val[];
} mpu_test_args_t;
#endif /* _dngl_ioctl_h_ */