mirror of https://github.com/F-Stack/f-stack.git
137 lines
3.4 KiB
C
137 lines
3.4 KiB
C
|
/* SPDX-License-Identifier: BSD-3-Clause
|
||
|
* Copyright 2017 NXP
|
||
|
*/
|
||
|
|
||
|
#ifndef __SKELETON_RAWDEV_H__
|
||
|
#define __SKELETON_RAWDEV_H__
|
||
|
|
||
|
#include <rte_rawdev.h>
|
||
|
|
||
|
extern int skeleton_pmd_logtype;
|
||
|
|
||
|
#define SKELETON_PMD_LOG(level, fmt, args...) \
|
||
|
rte_log(RTE_LOG_ ## level, skeleton_pmd_logtype, "%s(): " fmt "\n", \
|
||
|
__func__, ##args)
|
||
|
|
||
|
#define SKELETON_PMD_FUNC_TRACE() SKELETON_PMD_LOG(DEBUG, ">>")
|
||
|
|
||
|
#define SKELETON_PMD_DEBUG(fmt, args...) \
|
||
|
SKELETON_PMD_LOG(DEBUG, fmt, ## args)
|
||
|
#define SKELETON_PMD_INFO(fmt, args...) \
|
||
|
SKELETON_PMD_LOG(INFO, fmt, ## args)
|
||
|
#define SKELETON_PMD_ERR(fmt, args...) \
|
||
|
SKELETON_PMD_LOG(ERR, fmt, ## args)
|
||
|
#define SKELETON_PMD_WARN(fmt, args...) \
|
||
|
SKELETON_PMD_LOG(WARNING, fmt, ## args)
|
||
|
/* Macros for self test application */
|
||
|
#define SKELETON_TEST_INFO SKELETON_PMD_INFO
|
||
|
#define SKELETON_TEST_DEBUG SKELETON_PMD_DEBUG
|
||
|
#define SKELETON_TEST_ERR SKELETON_PMD_ERR
|
||
|
#define SKELETON_TEST_WARN SKELETON_PMD_WARN
|
||
|
|
||
|
#define SKELETON_SELFTEST_ARG ("selftest")
|
||
|
|
||
|
#define SKELETON_VENDOR_ID 0x10
|
||
|
#define SKELETON_DEVICE_ID 0x01
|
||
|
|
||
|
#define SKELETON_MAJOR_VER 1
|
||
|
#define SKELETON_MINOR_VER 0
|
||
|
#define SKELETON_SUB_VER 0
|
||
|
|
||
|
#define SKELETON_MAX_QUEUES 1
|
||
|
|
||
|
enum skeleton_firmware_state {
|
||
|
SKELETON_FW_READY,
|
||
|
SKELETON_FW_LOADED,
|
||
|
SKELETON_FW_ERROR
|
||
|
};
|
||
|
|
||
|
enum skeleton_device_state {
|
||
|
SKELETON_DEV_RUNNING,
|
||
|
SKELETON_DEV_STOPPED
|
||
|
};
|
||
|
|
||
|
enum skeleton_queue_state {
|
||
|
SKELETON_QUEUE_DETACH,
|
||
|
SKELETON_QUEUE_ATTACH
|
||
|
};
|
||
|
|
||
|
#define SKELETON_QUEUE_DEF_DEPTH 10
|
||
|
#define SKELETON_QUEUE_MAX_DEPTH 25
|
||
|
|
||
|
struct skeleton_firmware_version_info {
|
||
|
uint8_t major;
|
||
|
uint8_t minor;
|
||
|
uint8_t subrel;
|
||
|
};
|
||
|
|
||
|
struct skeleton_firmware {
|
||
|
/**< Device firmware information */
|
||
|
struct skeleton_firmware_version_info firmware_version;
|
||
|
/**< Device state */
|
||
|
enum skeleton_firmware_state firmware_state;
|
||
|
|
||
|
};
|
||
|
|
||
|
#define SKELETON_MAX_ATTRIBUTES 10
|
||
|
#define SKELETON_ATTRIBUTE_NAME_MAX 20
|
||
|
|
||
|
struct skeleton_rawdev_attributes {
|
||
|
/**< Name of the attribute */
|
||
|
char *name;
|
||
|
/**< Value or reference of value of attribute */
|
||
|
uint64_t value;
|
||
|
};
|
||
|
|
||
|
/**< Device supports firmware loading/unloading */
|
||
|
#define SKELETON_CAPA_FW_LOAD 0x0001
|
||
|
/**< Device supports firmware reset */
|
||
|
#define SKELETON_CAPA_FW_RESET 0x0002
|
||
|
/**< Device support queue based communication */
|
||
|
#define SKELETON_CAPA_QUEUES 0x0004
|
||
|
/**< Default Capabilities: FW_LOAD, FW_RESET, QUEUES */
|
||
|
#define SKELETON_DEFAULT_CAPA 0x7
|
||
|
|
||
|
struct skeleton_rawdev_queue {
|
||
|
uint8_t state;
|
||
|
uint32_t depth;
|
||
|
};
|
||
|
|
||
|
struct skeleton_rawdev {
|
||
|
uint16_t device_id;
|
||
|
uint16_t vendor_id;
|
||
|
uint16_t num_queues;
|
||
|
/**< One of SKELETON_CAPA_* */
|
||
|
uint16_t capabilities;
|
||
|
/**< State of device; linked to firmware state */
|
||
|
enum skeleton_device_state device_state;
|
||
|
/**< Firmware configuration */
|
||
|
struct skeleton_firmware fw;
|
||
|
/**< Collection of all communication channels - which can be referred
|
||
|
* to as queues.
|
||
|
*/
|
||
|
struct skeleton_rawdev_queue queues[SKELETON_MAX_QUEUES];
|
||
|
/**< Global table containing various pre-defined and user-defined
|
||
|
* attributes.
|
||
|
*/
|
||
|
struct skeleton_rawdev_attributes attr[SKELETON_MAX_ATTRIBUTES];
|
||
|
struct rte_device *device;
|
||
|
};
|
||
|
|
||
|
struct skeleton_rawdev_conf {
|
||
|
uint16_t num_queues;
|
||
|
unsigned int capabilities;
|
||
|
enum skeleton_device_state device_state;
|
||
|
enum skeleton_firmware_state firmware_state;
|
||
|
};
|
||
|
|
||
|
static inline struct skeleton_rawdev *
|
||
|
skeleton_rawdev_get_priv(const struct rte_rawdev *rawdev)
|
||
|
{
|
||
|
return rawdev->dev_private;
|
||
|
}
|
||
|
|
||
|
int test_rawdev_skeldev(uint16_t dev_id);
|
||
|
|
||
|
#endif /* __SKELETON_RAWDEV_H__ */
|