diff mbox series

[RFC,v1,210/256] cl8k: add tx/sw_txhdr.c

Message ID 20210617160223.160998-211-viktor.barna@celeno.com (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show
Series wireless: cl8k driver for Celeno IEEE 802.11ax devices | expand

Commit Message

Viktor Barna June 17, 2021, 4:01 p.m. UTC
From: Viktor Barna <viktor.barna@celeno.com>

(Part of the split. Please, take a look at the cover letter for more
details).

Signed-off-by: Viktor Barna <viktor.barna@celeno.com>
---
 .../net/wireless/celeno/cl8k/tx/sw_txhdr.c    | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 drivers/net/wireless/celeno/cl8k/tx/sw_txhdr.c

--
2.30.0
diff mbox series

Patch

diff --git a/drivers/net/wireless/celeno/cl8k/tx/sw_txhdr.c b/drivers/net/wireless/celeno/cl8k/tx/sw_txhdr.c
new file mode 100644
index 000000000000..3ba63ab9a335
--- /dev/null
+++ b/drivers/net/wireless/celeno/cl8k/tx/sw_txhdr.c
@@ -0,0 +1,40 @@ 
+// SPDX-License-Identifier: MIT
+/* Copyright(c) 2019-2021, Celeno Communications Ltd. */
+
+#include "tx/sw_txhdr.h"
+
+int cl_sw_txhdr_init(struct cl_hw *cl_hw)
+{
+       char sw_txhdr_cache_name[MODULE_NAME_LEN + 32] = {0};
+
+       snprintf(sw_txhdr_cache_name, sizeof(sw_txhdr_cache_name),
+                "%s_sw_txhdr_cache", THIS_MODULE->name);
+
+       cl_hw->sw_txhdr_cache = kmem_cache_create(sw_txhdr_cache_name,
+                                                 sizeof(struct cl_sw_txhdr),
+                                                 0,
+                                                 (SLAB_HWCACHE_ALIGN | SLAB_PANIC),
+                                                 NULL);
+
+       if (!cl_hw->sw_txhdr_cache) {
+               cl_dbg_verbose(cl_hw, "sw_txhdr_cache NULL\n");
+               return -1;
+       }
+
+       return 0;
+}
+
+void cl_sw_txhdr_deinit(struct cl_hw *cl_hw)
+{
+       kmem_cache_destroy(cl_hw->sw_txhdr_cache);
+}
+
+struct cl_sw_txhdr *cl_sw_txhdr_alloc(struct cl_hw *cl_hw)
+{
+       return kmem_cache_alloc(cl_hw->sw_txhdr_cache, GFP_ATOMIC);
+}
+
+void cl_sw_txhdr_free(struct cl_hw *cl_hw, struct cl_sw_txhdr *sw_txhdr)
+{
+       kmem_cache_free(cl_hw->sw_txhdr_cache, sw_txhdr);
+}