/******************************************************************************
*
-* Copyright (c) 2019 Intel.
+* Copyright (c) 2021 Intel.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#else /* __KERNEL__ */
#include <sys/ioctl.h>
#include <stdint.h>
-
-#ifdef DPDK_WLS
#include <semaphore.h>
#include <rte_common.h>
#include <rte_atomic.h>
#include <rte_memzone.h>
-#endif /* DPDK_WLS */
#endif
#include "ttypes.h"
#ifdef _DEBUG_
#define WLS_DEBUG(format, args...) \
-do { \
+do \
+{ \
printk(KERN_INFO "wls debug: " format,##args); \
}while(0)
#else /*_DEBUG_*/
};
-#define WLS_US_CLIENTS_MAX 64
+#define WLS_RUP512B(x) (((x)+511)&(~511))
+#define WLS_RUP256B(x) (((x)+255)&(~255))
+#define WLS_RUP128B(x) (((x)+127)&(~127))
+#define WLS_RUP64B(x) (((x)+63)&(~63))
+#define WLS_RUP32B(x) (((x)+31)&(~31))
+#define WLS_RUP16B(x) (((x)+15)&(~15))
+#define WLS_RUP8B(x) (((x)+7)&(~7))
+#define WLS_RUP4B(x) (((x)+3)&(~3))
+#define WLS_RUP2B(x) (((x)+1)&(~1))
+
+#define WLS_US_CLIENTS_MAX 4
#define CACHE_LINE_SIZE 64 /**< Cache line size. */
#define CACHE_LINE_MASK (CACHE_LINE_SIZE-1) /**< Cache line mask. */
typedef struct hugepage_tabl_s
{
- union {
- void *pageVa;
- uint64_t padding_pageVa;
- };
+ uint64_t pageVa;
uint64_t pagePa;
}hugepage_tabl_t;
#define DMA_MAP_MAX_BLOCK_SIZE 64*1024
-#define MAX_N_HUGE_PAGES 512
-#define UL_FREE_BLOCK_QUEUE_SIZE 384
+#define MAX_N_HUGE_PAGES 32
+#define UL_FREE_BLOCK_QUEUE_SIZE 1200
-#define WLS_GET_QUEUE_N_ELEMENTS 384
-#define WLS_PUT_QUEUE_N_ELEMENTS 384
+#define WLS_GET_QUEUE_N_ELEMENTS 1024
+#define WLS_PUT_QUEUE_N_ELEMENTS 1024
-#ifdef DPDK_WLS
#define WLS_DEV_SHM_NAME_LEN RTE_MEMZONE_NAMESIZE
-#else
-#define WLS_DEV_SHM_NAME_LEN 256
-#endif
-#define FIFO_LEN 384
+#define FIFO_LEN 1024
typedef struct wls_wait_req_s {
uint64_t wls_us_kernel_va;
uint64_t nMsg;
}wls_wait_req_t;
-#ifdef DPDK_WLS
typedef struct wls_sema_priv_s
{
sem_t sem;
volatile V32 pid;
} wls_us_priv_t;
-#endif
-
typedef struct wls_us_ctx_s
{
union {
// dst userspace context address (local user sapce va)
volatile uint64_t dst_pa;
- uint32_t alloc_size;
-#ifdef DPDK_WLS
+ uint32_t nHugePage;
wls_us_priv_t wls_us_private;
-#else
- HANDLE wls_us_private;
-#endif
uint32_t mode;
uint32_t secmode;
char wls_dev_name[WLS_DEV_SHM_NAME_LEN];
uint64_t wls_us_kernel_va;
}wls_connect_req_t;
-#ifdef __KERNEL__
-
-typedef struct wls_sema_priv_s
-{
- wait_queue_head_t queue;
- atomic_t is_irq;
- wls_wait_req_t drv_block[FIFO_LEN];
- volatile unsigned int drv_block_put;
- volatile unsigned int drv_block_get;
-}wls_sema_priv_t;
-
-typedef struct wls_drv_ctx_s
-{
- uint32_t init_mask;
- uint32_t us_ctx_cout;
- wls_us_ctx_t* p_wls_us_ctx[WLS_US_CLIENTS_MAX];
- wls_us_ctx_t* p_wls_us_pa_ctx[WLS_US_CLIENTS_MAX];
- uint32_t nWlsClients;
-}wls_drv_ctx_t;
-
-#elif defined DPDK_WLS
-
typedef struct wls_drv_ctx_s
{
uint32_t init_mask;
wls_us_ctx_t p_wls_us_ctx[WLS_US_CLIENTS_MAX];
wls_us_ctx_t p_wls_us_pa_ctx[WLS_US_CLIENTS_MAX];
uint32_t nWlsClients;
+ uint32_t nMacBufferSize;
+ uint32_t nPhyBufferSize;
pthread_mutex_t mng_mutex;
}wls_drv_ctx_t;
-#endif
typedef struct wls_open_req_s {
uint64_t ctx;
uint64_t ctx_pa;
}wls_wake_up_req_t;
-#define SYS_CPU_CLOCK (2300000000L)
-#define CLOCK_PER_MS (SYS_CPU_CLOCK/1000)
-#define CLOCK_PER_US (SYS_CPU_CLOCK/1000000)
-
-static inline uint64_t
-wls_rdtsc(void)
+static inline uint64_t wls_rdtsc(void)
{
union {
uint64_t tsc_64;
return tsc.tsc_64;
}
-static inline uint64_t rdtsc_ticks_diff(unsigned long curr, unsigned long prev)
-{
- if (curr >= prev)
- return (unsigned long)(curr - prev);
- else
- return (unsigned long)(0xFFFFFFFFFFFFFFFF - prev + curr);
-}
-
-void wls_show_data(void* ptr, unsigned int size);
-void *wls_get_sh_ctx(void);
-void *wls_get_sh_ctx_pa(void);
-
#endif /* __WLS_H__*/