Initial commit

This commit is contained in:
domenico
2025-06-24 13:14:22 +02:00
commit 4002f145fc
9002 changed files with 1731834 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=qca-nss-crypto
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-crypto
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=e7651c2986d30b5e8ca5ad6b9a72c47febdf3cca
include $(INCLUDE_DIR)/package.mk
ifeq ($(CONFIG_TARGET_ipq),y)
subtarget:=$(SUBTARGET)
else
subtarget:=$(CONFIG_TARGET_BOARD)
endif
# v1.0 is for Akronite
# v2.0 is for Hawkeye/Cypress/Maple
ifneq (, $(findstring $(subtarget), "ipq807x" "ipq807x_64" "ipq60xx" "ipq60xx_64" "ipq50xx" "ipq50xx_64"))
NSS_CRYPTO_DIR:=v2.0
else
NSS_CRYPTO_DIR:=v1.0
endif
define KernelPackage/qca-nss-crypto/Default
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=@TARGET_ipq806x||TARGET_ipq_ipq806x||TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_64||TARGET_ipq807x||TARGET_ipq807x_64||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64||TARGET_ipq_ipq60xx||TARGET_ipq_ipq60xx_64 \
+kmod-qca-nss-drv @!LINUX_3_18
endef
define KernelPackage/qca-nss-crypto
$(call KernelPackage/qca-nss-crypto/Default)
TITLE:=Kernel driver for NSS crypto driver
FILES:=$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/src/qca-nss-crypto.ko \
$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/tool/qca-nss-crypto-tool.ko
AUTOLOAD:=$(call AutoLoad,52,qca-nss-crypto)
endef
define KernelPackage/qca-nss-crypto/Description
This package contains a NSS crypto driver for QCA chipset
endef
define Build/InstallDev/qca-nss-crypto
$(INSTALL_DIR) $(1)/usr/include/qca-nss-crypto
$(CP) $(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/include/* $(1)/usr/include/qca-nss-crypto
endef
define Build/InstallDev
$(call Build/InstallDev/qca-nss-crypto,$(1))
endef
EXTRA_CFLAGS+= \
-DCONFIG_NSS_DEBUG_LEVEL=4 \
-I$(STAGING_DIR)/usr/include/qca-nss-crypto \
-I$(STAGING_DIR)/usr/include/qca-nss-drv \
-I$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/include \
-I$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/src
define Build/Compile
$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
$(KERNEL_MAKE_FLAGS) \
$(PKG_MAKE_FLAGS) \
M="$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
NSS_CRYPTO_DIR=$(NSS_CRYPTO_DIR) \
SoC="$(subtarget)" \
modules
endef
$(eval $(call KernelPackage,qca-nss-crypto))

View File

@@ -0,0 +1,42 @@
--- a/v1.0/tool/nss_crypto_bench.c
+++ b/v1.0/tool/nss_crypto_bench.c
@@ -75,8 +75,8 @@ static DECLARE_WAIT_QUEUE_HEAD(tx_comp);
static DECLARE_WAIT_QUEUE_HEAD(tx_start);
static struct task_struct *tx_thread = NULL;
-static struct timeval init_time;
-static struct timeval comp_time;
+static struct timespec64 init_time;
+static struct timespec64 comp_time;
static spinlock_t op_lock;
static nss_crypto_handle_t crypto_hdl;
@@ -782,7 +782,7 @@ static int crypto_bench_tx(void *arg)
crypto_bench_debug("#");
/* get start time */
- do_gettimeofday(&init_time);
+ ktime_get_real_ts64(&init_time);
/**
* Request submission
@@ -812,8 +812,8 @@ static int crypto_bench_tx(void *arg)
* Calculate time and output the Mbps
*/
- init_usecs = (init_time.tv_sec * 1000 * 1000) + init_time.tv_usec;
- comp_usecs = (comp_time.tv_sec * 1000 * 1000) + comp_time.tv_usec;
+ init_usecs = (init_time.tv_sec * 1000 * 1000) + (init_time.tv_nsec / NSEC_PER_USEC);
+ comp_usecs = (comp_time.tv_sec * 1000 * 1000) + (comp_time.tv_nsec / NSEC_PER_USEC);
delta_usecs = comp_usecs - init_usecs;
reqs_completed = param.num_reqs - atomic_read(&tx_reqs);
@@ -870,7 +870,7 @@ static void crypto_bench_done(struct nss
nss_crypto_buf_free(crypto_hdl, buf);
if (atomic_dec_and_test(&tx_reqs)) {
- do_gettimeofday(&comp_time);
+ ktime_get_real_ts64(&comp_time);
wake_up_interruptible(&tx_comp);
param.num_loops--;

View File

@@ -0,0 +1,57 @@
--- a/v1.0/src/nss_crypto_if.c
+++ b/v1.0/src/nss_crypto_if.c
@@ -370,15 +370,16 @@ void nss_crypto_transform_done(struct ne
struct nss_crypto_buf *buf = (struct nss_crypto_buf *)skb->data;
struct nss_crypto_buf_node *entry;
void *addr;
+ struct device *cdev = gbl_crypto_ctrl.eng[0].dev;
if (likely(buf->data_in == buf->data_out)) {
- dma_unmap_single(NULL, buf->data_in, buf->data_len, DMA_BIDIRECTIONAL);
+ dma_unmap_single(cdev, buf->data_in, buf->data_len, DMA_BIDIRECTIONAL);
} else {
- dma_unmap_single(NULL, buf->data_in, buf->data_len, DMA_TO_DEVICE);
- dma_unmap_single(NULL, buf->data_out, buf->data_len, DMA_FROM_DEVICE);
+ dma_unmap_single(cdev, buf->data_in, buf->data_len, DMA_TO_DEVICE);
+ dma_unmap_single(cdev, buf->data_out, buf->data_len, DMA_FROM_DEVICE);
}
- dma_unmap_single(NULL, buf->iv_addr, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
+ dma_unmap_single(cdev, buf->iv_addr, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
addr = phys_to_virt(buf->iv_addr);
entry = container_of(addr, struct nss_crypto_buf_node, results);
@@ -531,6 +532,7 @@ nss_crypto_status_t nss_crypto_transform
uint32_t paddr;
void *vaddr;
size_t len;
+ struct device *cdev = gbl_crypto_ctrl.eng[0].dev;
if (!buf->cb_fn) {
nss_crypto_warn("%p:no buffer(%p) callback present\n", crypto, buf);
@@ -544,7 +546,7 @@ nss_crypto_status_t nss_crypto_transform
*/
vaddr = (void *)buf->data_in;
len = buf->data_len;
- paddr = dma_map_single(NULL, vaddr, len, DMA_TO_DEVICE);
+ paddr = dma_map_single(cdev, vaddr, len, DMA_TO_DEVICE);
buf->data_in = paddr;
if (vaddr == (void *)buf->data_out) {
@@ -555,14 +557,14 @@ nss_crypto_status_t nss_crypto_transform
*/
vaddr = (void *)buf->data_out;
len = buf->data_len;
- paddr = dma_map_single(NULL, vaddr, len, DMA_FROM_DEVICE);
+ paddr = dma_map_single(cdev, vaddr, len, DMA_FROM_DEVICE);
buf->data_out = paddr;
}
/*
* We need to map the results into IV
*/
- paddr = dma_map_single(NULL, entry->results, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
+ paddr = dma_map_single(cdev, entry->results, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
buf->hash_addr = paddr;
buf->iv_addr = paddr;