nss-drv: [11.4] sync more kernel 6.6 changes from 12.5

Mostly cosmetic changes, but also:

* Extend kernel version handling so kernels 6.1–6.14
  are supported (untested on > 6.6)
* Replace various `NSS_SUCCESS`/`NSS_FAILURE` return codes with
  `NSS_TX_SUCCESS`/`NSS_TX_FAILURE`
* Change di_data.response initialization in the dynamic interface
  to use NSS_CMN_RESPONSE_ACK.

Primary affects `0016-nss-drv-add-support-for-kernel-6.6.patch`, while
other patches were refreshed.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan 2025-04-09 15:02:15 -04:00
parent 8660c6d6e5
commit f3318298a7
4 changed files with 256 additions and 51 deletions

View File

@ -5,10 +5,48 @@
(((LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)))) || \
(((LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0)))) || \
-(((LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0))))))
+(((LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0))))))
+(((LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 14, 0))))))
#error "Check skb recycle code in this file to match Linux version"
#endif
@@ -1063,13 +1063,18 @@ static inline void nss_core_rx_pbuf(stru
*/
static inline void nss_core_set_skb_classify(struct sk_buff *nbuf)
{
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0))
#ifdef CONFIG_NET_CLS_ACT
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0))
- nbuf->tc_verd = SET_TC_NCLS_NSS(nbuf->tc_verd);
+ nbuf->tc_verd = SET_TC_NCLS_NSS(nbuf->tc_verd);
#else
- skb_set_tc_classify_offload(nbuf);
+ skb_set_tc_classify_offload(nbuf);
#endif
#endif
+#else
+ nss_warning("%px:API not supported on 6.6\n", nbuf);
+ nss_assert(0);
+#endif
}
/*
@@ -2609,6 +2614,16 @@ static inline bool nss_core_skb_can_reus
return false;
#endif
+ /*
+ * TODO: This check is only validated on kernel 6.6
+ * This needs to be validated on prior linux
+ * kernel versions.
+ */
+#ifdef CONFIG_SKB_EXTENSIONS
+ if (nbuf->active_extensions)
+ return false;
+#endif
+
return true;
}
--- a/nss_dynamic_interface.c
+++ b/nss_dynamic_interface.c
@@ -226,7 +226,7 @@ int nss_dynamic_interface_alloc_node(enu
@ -16,7 +54,7 @@
nss_ctx = (struct nss_ctx_instance *)&nss_top_main.nss[core_id];
di_data.if_num = -1;
- di_data.response = false;
+ di_data.response = -1;
+ di_data.response = NSS_CMN_RESPONSE_ACK;
init_completion(&di_data.complete);
nss_dynamic_interface_msg_init(&ndim, NSS_DYNAMIC_INTERFACE, NSS_DYNAMIC_INTERFACE_ALLOC_NODE,
@ -25,13 +63,13 @@
core_id = nss_top_main.dynamic_interface_table[type];
nss_ctx = (struct nss_ctx_instance *)&nss_top_main.nss[core_id];
- di_data.response = false;
+ di_data.response = -1;
+ di_data.response = NSS_CMN_RESPONSE_ACK;
init_completion(&di_data.complete);
if (nss_is_dynamic_interface(if_num) == false) {
--- a/nss_init.c
+++ b/nss_init.c
@@ -584,48 +584,12 @@ static struct ctl_table nss_general_tabl
@@ -584,48 +584,9 @@ static struct ctl_table nss_general_tabl
{ }
};
@ -80,13 +118,10 @@
+static struct ctl_table_header *nss_clock_header;
+static struct ctl_table_header *nss_skb_header;
+static struct ctl_table_header *nss_general_header;
+static struct ctl_table *nss_clock_table;
+static struct ctl_table *nss_skb_reuse_tabl;
+static struct ctl_table *nss_general_tabl;
/*
* nss_init()
@@ -748,7 +712,16 @@ nss_info("Init NSS driver");
@@ -748,7 +709,16 @@ nss_info("Init NSS driver");
/*
* Register sysctl table.
*/
@ -104,7 +139,7 @@
/*
* Registering sysctl for ipv4/6 specific config.
@@ -911,8 +884,18 @@ static void __exit nss_cleanup(void)
@@ -911,8 +881,18 @@ static void __exit nss_cleanup(void)
{
nss_info("Exit NSS driver");
@ -172,7 +207,66 @@
/*
--- a/nss_n2h.c
+++ b/nss_n2h.c
@@ -1859,36 +1859,6 @@ static struct ctl_table nss_n2h_table_mu
@@ -1155,11 +1155,11 @@ static nss_tx_status_t nss_n2h_mitigatio
}
up(&nss_n2h_mitigationcp[core_num].sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
failure:
up(&nss_n2h_mitigationcp[core_num].sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
static inline void nss_n2h_buf_pool_free(struct nss_n2h_buf_pool *buf_pool)
@@ -1240,10 +1240,10 @@ static nss_tx_status_t nss_n2h_buf_pool_
up(&nss_n2h_bufcp[core_num].sem);
} while(num_pages);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
failure:
up(&nss_n2h_bufcp[core_num].sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -1542,7 +1542,7 @@ static nss_tx_status_t nss_n2h_host_bp_c
if (nss_tx_status != NSS_TX_SUCCESS) {
nss_warning("%px: nss_tx error setting back pressure\n", nss_ctx);
up(&nss_n2h_host_bp_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -1552,7 +1552,7 @@ static nss_tx_status_t nss_n2h_host_bp_c
if (ret == 0) {
nss_warning("%px: Waiting for ack timed out\n", nss_ctx);
up(&nss_n2h_host_bp_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -1560,11 +1560,11 @@ static nss_tx_status_t nss_n2h_host_bp_c
*/
if (nss_n2h_host_bp_cfg_pvt.response == NSS_FAILURE) {
up(&nss_n2h_host_bp_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
up(&nss_n2h_host_bp_cfg_pvt.sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
}
/*
@@ -1859,38 +1859,9 @@ static struct ctl_table nss_n2h_table_mu
{ }
};
@ -208,8 +302,11 @@
-
static struct ctl_table_header *nss_n2h_header;
+
/*
@@ -2130,8 +2100,7 @@ void nss_n2h_single_core_register_sysctl
* nss_n2h_cfg_empty_pool_size()
* Config empty buffer pool
@@ -2130,8 +2101,7 @@ void nss_n2h_single_core_register_sysctl
/*
* Register sysctl table.
*/
@ -219,7 +316,7 @@
}
/*
@@ -2229,7 +2198,7 @@ void nss_n2h_multi_core_register_sysctl(
@@ -2229,7 +2199,7 @@ void nss_n2h_multi_core_register_sysctl(
/*
* Register sysctl table.
*/
@ -311,6 +408,98 @@
/*
--- a/nss_rps.c
+++ b/nss_rps.c
@@ -251,7 +251,7 @@ static nss_tx_status_t nss_rps_cfg(struc
nss_warning("%px: nss_tx error setting rps\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -261,7 +261,7 @@ static nss_tx_status_t nss_rps_cfg(struc
if (ret == 0) {
nss_warning("%px: Waiting for ack timed out\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -271,11 +271,11 @@ static nss_tx_status_t nss_rps_cfg(struc
*/
if (NSS_FAILURE == nss_rps_cfg_pvt.response) {
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
up(&nss_rps_cfg_pvt.sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
}
#ifdef NSS_DRV_IPV4_ENABLE
@@ -301,11 +301,11 @@ static nss_tx_status_t nss_rps_ipv4_hash
nss_warning("%px: nss_tx error setting rps\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
up(&nss_rps_cfg_pvt.sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
}
#endif
@@ -332,11 +332,11 @@ static nss_tx_status_t nss_rps_ipv6_hash
nss_warning("%px: nss_tx error setting rps\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
up(&nss_rps_cfg_pvt.sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
}
#endif
@@ -372,7 +372,7 @@ static nss_tx_status_t nss_rps_pri_map_c
nss_warning("%px: nss_tx error setting rps\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -382,7 +382,7 @@ static nss_tx_status_t nss_rps_pri_map_c
if (ret == 0) {
nss_warning("%px: Waiting for ack timed out\n", nss_ctx);
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
/*
@@ -392,11 +392,11 @@ static nss_tx_status_t nss_rps_pri_map_c
*/
if (NSS_FAILURE == nss_rps_cfg_pvt.response) {
up(&nss_rps_cfg_pvt.sem);
- return NSS_FAILURE;
+ return NSS_TX_FAILURE;
}
up(&nss_rps_cfg_pvt.sem);
- return NSS_SUCCESS;
+ return NSS_TX_SUCCESS;
}
/*
@@ -574,33 +574,6 @@ static struct ctl_table nss_rps_table[]
{ }
};
@ -610,10 +799,26 @@
default:
- index = NSS_PM_PERF_LEVEL_IDLE;
+ index = (nss_freq_scales_t)NSS_PM_PERF_LEVEL_IDLE;
+ index = NSS_FREQ_MID_SCALE;
}
-#if !defined(NSS_HAL_IPQ807x_SUPPORT)
nss_freq_sched_change(index, false);
#endif
--- a/nss_coredump.c
+++ b/nss_coredump.c
@@ -25,10 +25,11 @@
#include "nss_hal.h"
#include "nss_log.h"
#include <linux/kernel.h>
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0))
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0))
#include <linux/notifier.h> /* for panic_notifier_list */
#else
-#include <linux/panic_notifier.h>
+#include <linux/panic_notifier.h> /* for panic_notifier_list */
#endif
#include <linux/jiffies.h> /* for time */
#include "nss_tx_rx_common.h"

View File

@ -27,7 +27,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
--- a/nss_core.c
+++ b/nss_core.c
@@ -1421,6 +1421,8 @@ static inline void nss_core_handle_empty
@@ -1426,6 +1426,8 @@ static inline void nss_core_handle_empty
uint32_t count, uint32_t hlos_index,
uint16_t mask)
{
@ -36,7 +36,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
while (count) {
/*
* Since we only return the primary skb, we have no way to unmap
@@ -1474,7 +1476,9 @@ next:
@@ -1479,7 +1481,9 @@ next:
n2h_desc_ring->hlos_index = hlos_index;
if_map->n2h_hlos_index[NSS_IF_N2H_EMPTY_BUFFER_RETURN_QUEUE] = hlos_index;
@ -47,7 +47,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
}
@@ -1496,6 +1500,7 @@ static int32_t nss_core_handle_cause_que
@@ -1501,6 +1505,7 @@ static int32_t nss_core_handle_cause_que
struct nss_ctx_instance *nss_ctx = int_ctx->nss_ctx;
struct nss_meminfo_ctx *mem_ctx = &nss_ctx->meminfo_ctx;
struct nss_if_mem_map *if_map = mem_ctx->if_map;
@ -55,7 +55,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
qid = nss_core_cause_to_queue(cause);
@@ -1507,7 +1512,8 @@ static int32_t nss_core_handle_cause_que
@@ -1512,7 +1517,8 @@ static int32_t nss_core_handle_cause_que
n2h_desc_ring = &nss_ctx->n2h_desc_ring[qid];
desc_if = &n2h_desc_ring->desc_ring;
desc_ring = desc_if->desc;
@ -65,7 +65,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
nss_index = if_map->n2h_nss_index[qid];
@@ -1536,13 +1542,23 @@ static int32_t nss_core_handle_cause_que
@@ -1541,13 +1547,23 @@ static int32_t nss_core_handle_cause_que
start = hlos_index;
end = (hlos_index + count) & mask;
if (end > start) {
@ -92,7 +92,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
}
/*
@@ -1671,7 +1687,8 @@ next:
@@ -1676,7 +1692,8 @@ next:
n2h_desc_ring->hlos_index = hlos_index;
if_map->n2h_hlos_index[qid] = hlos_index;
@ -102,7 +102,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
return count;
@@ -1683,11 +1700,12 @@ next:
@@ -1688,11 +1705,12 @@ next:
*/
static void nss_core_init_nss(struct nss_ctx_instance *nss_ctx, struct nss_if_mem_map *if_map)
{
@ -116,7 +116,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
/*
@@ -1763,6 +1781,7 @@ static void nss_core_alloc_paged_buffers
@@ -1768,6 +1786,7 @@ static void nss_core_alloc_paged_buffers
uint16_t count, int16_t mask, int32_t hlos_index, uint32_t alloc_fail_count,
uint32_t buffer_type, uint32_t buffer_queue, uint32_t stats_index)
{
@ -124,7 +124,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct sk_buff *nbuf;
struct page *npage;
struct hlos_h2n_desc_rings *h2n_desc_ring = &nss_ctx->h2n_desc_rings[buffer_queue];
@@ -1832,7 +1851,9 @@ static void nss_core_alloc_paged_buffers
@@ -1837,7 +1856,9 @@ static void nss_core_alloc_paged_buffers
/*
* Flush the descriptor
*/
@ -135,7 +135,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
hlos_index = (hlos_index + 1) & (mask);
count--;
@@ -1846,7 +1867,8 @@ static void nss_core_alloc_paged_buffers
@@ -1851,7 +1872,8 @@ static void nss_core_alloc_paged_buffers
h2n_desc_ring->hlos_index = hlos_index;
if_map->h2n_hlos_index[buffer_queue] = hlos_index;
@ -145,7 +145,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
NSS_PKT_STATS_INC(&nss_top->stats_drv[stats_index]);
@@ -1859,7 +1881,7 @@ static void nss_core_alloc_paged_buffers
@@ -1864,7 +1886,7 @@ static void nss_core_alloc_paged_buffers
static void nss_core_alloc_jumbo_mru_buffers(struct nss_ctx_instance *nss_ctx, struct nss_if_mem_map *if_map,
int jumbo_mru, uint16_t count, int16_t mask, int32_t hlos_index)
{
@ -154,7 +154,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct sk_buff *nbuf;
struct hlos_h2n_desc_rings *h2n_desc_ring = &nss_ctx->h2n_desc_rings[NSS_IF_H2N_EMPTY_BUFFER_QUEUE];
struct h2n_desc_if_instance *desc_if = &h2n_desc_ring->desc_ring;
@@ -1906,7 +1928,9 @@ static void nss_core_alloc_jumbo_mru_buf
@@ -1911,7 +1933,9 @@ static void nss_core_alloc_jumbo_mru_buf
/*
* Flush the descriptor
*/
@ -165,7 +165,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
hlos_index = (hlos_index + 1) & (mask);
count--;
@@ -1920,7 +1944,8 @@ static void nss_core_alloc_jumbo_mru_buf
@@ -1925,7 +1949,8 @@ static void nss_core_alloc_jumbo_mru_buf
h2n_desc_ring->hlos_index = hlos_index;
if_map->h2n_hlos_index[NSS_IF_H2N_EMPTY_BUFFER_QUEUE] = hlos_index;
@ -175,7 +175,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
NSS_PKT_STATS_INC(&nss_top->stats_drv[NSS_DRV_STATS_TX_EMPTY]);
@@ -1933,6 +1958,7 @@ static void nss_core_alloc_jumbo_mru_buf
@@ -1938,6 +1963,7 @@ static void nss_core_alloc_jumbo_mru_buf
static void nss_core_alloc_max_avail_size_buffers(struct nss_ctx_instance *nss_ctx, struct nss_if_mem_map *if_map,
uint16_t max_buf_size, uint16_t count, int16_t mask, int32_t hlos_index)
{
@ -183,7 +183,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct hlos_h2n_desc_rings *h2n_desc_ring = &nss_ctx->h2n_desc_rings[NSS_IF_H2N_EMPTY_BUFFER_QUEUE];
struct h2n_desc_if_instance *desc_if = &h2n_desc_ring->desc_ring;
struct h2n_descriptor *desc_ring = desc_if->desc;
@@ -1940,6 +1966,7 @@ static void nss_core_alloc_max_avail_siz
@@ -1945,6 +1971,7 @@ static void nss_core_alloc_max_avail_siz
uint16_t payload_len = max_buf_size + NET_SKB_PAD;
uint16_t start = hlos_index;
uint16_t prev_hlos_index;
@ -191,7 +191,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
while (count) {
dma_addr_t buffer;
@@ -1992,13 +2019,26 @@ static void nss_core_alloc_max_avail_siz
@@ -1997,13 +2024,26 @@ static void nss_core_alloc_max_avail_siz
* Flush the descriptors, including the descriptor at prev_hlos_index.
*/
if (prev_hlos_index > start) {
@ -221,7 +221,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
}
/*
@@ -2009,7 +2049,8 @@ static void nss_core_alloc_max_avail_siz
@@ -2014,7 +2054,8 @@ static void nss_core_alloc_max_avail_siz
h2n_desc_ring->hlos_index = hlos_index;
if_map->h2n_hlos_index[NSS_IF_H2N_EMPTY_BUFFER_QUEUE] = hlos_index;
@ -231,7 +231,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
NSS_PKT_STATS_INC(&nss_top->stats_drv[NSS_DRV_STATS_TX_EMPTY]);
@@ -2022,6 +2063,7 @@ static void nss_core_alloc_max_avail_siz
@@ -2027,6 +2068,7 @@ static void nss_core_alloc_max_avail_siz
static inline void nss_core_handle_empty_buffer_sos(struct nss_ctx_instance *nss_ctx,
struct nss_if_mem_map *if_map, uint16_t max_buf_size)
{
@ -239,7 +239,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
uint16_t count, size, mask;
int32_t nss_index, hlos_index;
struct hlos_h2n_desc_rings *h2n_desc_ring = &nss_ctx->h2n_desc_rings[NSS_IF_H2N_EMPTY_BUFFER_QUEUE];
@@ -2032,7 +2074,8 @@ static inline void nss_core_handle_empty
@@ -2037,7 +2079,8 @@ static inline void nss_core_handle_empty
/*
* Check how many empty buffers could be filled in queue
*/
@ -249,7 +249,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
nss_index = if_map->h2n_nss_index[NSS_IF_H2N_EMPTY_BUFFER_QUEUE];
@@ -2077,6 +2120,7 @@ static inline void nss_core_handle_empty
@@ -2082,6 +2125,7 @@ static inline void nss_core_handle_empty
static inline void nss_core_handle_paged_empty_buffer_sos(struct nss_ctx_instance *nss_ctx,
struct nss_if_mem_map *if_map, uint16_t max_buf_size)
{
@ -257,7 +257,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
uint16_t count, size, mask;
int32_t nss_index, hlos_index;
struct hlos_h2n_desc_rings *h2n_desc_ring = &nss_ctx->h2n_desc_rings[NSS_IF_H2N_EMPTY_PAGED_BUFFER_QUEUE];
@@ -2084,7 +2128,8 @@ static inline void nss_core_handle_paged
@@ -2089,7 +2133,8 @@ static inline void nss_core_handle_paged
/*
* Check how many empty buffers could be filled in queue
*/
@ -267,7 +267,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_CORE_DSB();
nss_index = if_map->h2n_nss_index[NSS_IF_H2N_EMPTY_PAGED_BUFFER_QUEUE];
@@ -2652,9 +2697,11 @@ void nss_skb_reuse(struct sk_buff *nbuf)
@@ -2667,9 +2712,11 @@ void nss_skb_reuse(struct sk_buff *nbuf)
* Sends one skb to NSS FW
*/
static inline int32_t nss_core_send_buffer_simple_skb(struct nss_ctx_instance *nss_ctx,
@ -281,7 +281,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct h2n_descriptor *desc_ring = desc_if->desc;
struct h2n_descriptor *desc;
uint16_t bit_flags;
@@ -2708,7 +2755,8 @@ static inline int32_t nss_core_send_buff
@@ -2723,7 +2770,8 @@ static inline int32_t nss_core_send_buff
(nss_ptr_t)nbuf, (uint16_t)(nbuf->data - nbuf->head), nbuf->len,
sz, (uint32_t)nbuf->priority, mss, bit_flags);
@ -291,7 +291,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
/*
* We are done using the skb fields and can reuse it now
@@ -2732,7 +2780,8 @@ no_reuse:
@@ -2747,7 +2795,8 @@ no_reuse:
(nss_ptr_t)nbuf, (uint16_t)(nbuf->data - nbuf->head), nbuf->len,
(uint16_t)skb_end_offset(nbuf), (uint32_t)nbuf->priority, mss, bit_flags);
@ -301,7 +301,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_PKT_STATS_INC(&nss_ctx->nss_top->stats_drv[NSS_DRV_STATS_TX_SIMPLE]);
return 1;
@@ -2746,9 +2795,11 @@ no_reuse:
@@ -2761,9 +2810,11 @@ no_reuse:
* Used to differentiate from FRAGLIST
*/
static inline int32_t nss_core_send_buffer_nr_frags(struct nss_ctx_instance *nss_ctx,
@ -315,7 +315,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct h2n_descriptor *desc_ring = desc_if->desc;
struct h2n_descriptor *desc;
const skb_frag_t *frag;
@@ -2788,7 +2839,8 @@ static inline int32_t nss_core_send_buff
@@ -2803,7 +2854,8 @@ static inline int32_t nss_core_send_buff
(nss_ptr_t)NULL, nbuf->data - nbuf->head, nbuf->len - nbuf->data_len,
skb_end_offset(nbuf), (uint32_t)nbuf->priority, mss, bit_flags | H2N_BIT_FLAG_FIRST_SEGMENT);
@ -325,7 +325,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
/*
* Now handle rest of the fragments.
@@ -2812,7 +2864,8 @@ static inline int32_t nss_core_send_buff
@@ -2827,7 +2879,8 @@ static inline int32_t nss_core_send_buff
(nss_ptr_t)NULL, 0, skb_frag_size(frag), skb_frag_size(frag),
nbuf->priority, mss, bit_flags);
@ -335,7 +335,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
}
/*
@@ -2828,7 +2881,8 @@ static inline int32_t nss_core_send_buff
@@ -2843,7 +2896,8 @@ static inline int32_t nss_core_send_buff
desc->bit_flags &= ~(H2N_BIT_FLAG_DISCARD);
desc->opaque = (nss_ptr_t)nbuf;
@ -345,7 +345,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_PKT_STATS_INC(&nss_ctx->nss_top->stats_drv[NSS_DRV_STATS_TX_NR_FRAGS]);
return i+1;
@@ -2842,9 +2896,11 @@ static inline int32_t nss_core_send_buff
@@ -2857,9 +2911,11 @@ static inline int32_t nss_core_send_buff
* Used to differentiate from FRAGS
*/
static inline int32_t nss_core_send_buffer_fraglist(struct nss_ctx_instance *nss_ctx,
@ -359,7 +359,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
struct h2n_descriptor *desc_ring = desc_if->desc;
struct h2n_descriptor *desc;
dma_addr_t buffer;
@@ -2883,7 +2939,8 @@ static inline int32_t nss_core_send_buff
@@ -2898,7 +2954,8 @@ static inline int32_t nss_core_send_buff
(nss_ptr_t)nbuf, nbuf->data - nbuf->head, nbuf->len - nbuf->data_len,
skb_end_offset(nbuf), (uint32_t)nbuf->priority, mss, bit_flags | H2N_BIT_FLAG_FIRST_SEGMENT);
@ -369,7 +369,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
/*
* Walk the frag_list in nbuf
@@ -2936,7 +2993,8 @@ static inline int32_t nss_core_send_buff
@@ -2951,7 +3008,8 @@ static inline int32_t nss_core_send_buff
(nss_ptr_t)iter, iter->data - iter->head, iter->len - iter->data_len,
skb_end_offset(iter), iter->priority, mss, bit_flags);
@ -379,7 +379,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
i++;
}
@@ -2955,7 +3013,8 @@ static inline int32_t nss_core_send_buff
@@ -2970,7 +3028,8 @@ static inline int32_t nss_core_send_buff
* Update bit flag for last descriptor.
*/
desc->bit_flags |= H2N_BIT_FLAG_LAST_SEGMENT;
@ -389,7 +389,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
NSS_PKT_STATS_INC(&nss_ctx->nss_top->stats_drv[NSS_DRV_STATS_TX_FRAGLIST]);
return i+1;
@@ -3034,8 +3093,10 @@ int32_t nss_core_send_buffer(struct nss_
@@ -3049,8 +3108,10 @@ int32_t nss_core_send_buffer(struct nss_
* We need to work out if there's sufficent space in our transmit descriptor
* ring to place all the segments of a nbuf.
*/
@ -401,7 +401,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
nss_index = if_map->h2n_nss_index[qid];
h2n_desc_ring->nss_index_local = nss_index;
count = ((nss_index - hlos_index - 1) + size) & (mask);
@@ -3100,13 +3161,13 @@ int32_t nss_core_send_buffer(struct nss_
@@ -3115,13 +3176,13 @@ int32_t nss_core_send_buffer(struct nss_
count = 0;
if (likely((segments == 0) || is_bounce)) {
count = nss_core_send_buffer_simple_skb(nss_ctx, desc_if, if_num,
@ -418,7 +418,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
}
if (unlikely(count <= 0)) {
@@ -3130,7 +3191,8 @@ int32_t nss_core_send_buffer(struct nss_
@@ -3145,7 +3206,8 @@ int32_t nss_core_send_buffer(struct nss_
h2n_desc_ring->hlos_index = hlos_index;
if_map->h2n_hlos_index[qid] = hlos_index;

View File

@ -66,7 +66,7 @@
--- a/nss_core.c
+++ b/nss_core.c
@@ -2217,7 +2217,7 @@ static void nss_core_handle_cause_nonque
@@ -2222,7 +2222,7 @@ static void nss_core_handle_cause_nonque
nss_core_init_nss(nss_ctx, if_map);
nss_send_ddr_info(nss_ctx);

View File

@ -9,7 +9,7 @@
/*
* nss_core_update_max_ipv4_conn()
* Update the maximum number of configured IPv4 connections
@@ -2187,6 +2189,19 @@ static inline void nss_core_handle_tx_un
@@ -2192,6 +2194,19 @@ static inline void nss_core_handle_tx_un
nss_hal_disable_interrupt(nss_ctx, nss_ctx->int_ctx[0].shift_factor, NSS_N2H_INTR_TX_UNBLOCKED);
}
@ -29,7 +29,7 @@
/*
* nss_core_handle_cause_nonqueue()
* Handle non-queue interrupt causes (e.g. empty buffer SOS, Tx unblocked)
@@ -2255,6 +2270,9 @@ static void nss_core_handle_cause_nonque
@@ -2260,6 +2275,9 @@ static void nss_core_handle_cause_nonque
#endif
#endif
}