nss-packages-LiBwrt/qca-nss-clients/patches-11.4/0018-kernel-6.1-support.patch
2025-11-04 13:19:44 +08:00

301 lines
12 KiB
Diff

--- a/gre/test/nss_connmgr_gre_test.c
+++ b/gre/test/nss_connmgr_gre_test.c
@@ -223,7 +223,7 @@ static int nss_connmgr_gre_test_show_pro
*/
static int nss_connmgr_gre_test_open_proc(struct inode *inode, struct file *filp)
{
- return single_open(filp, nss_connmgr_gre_test_show_proc, PDE_DATA(inode));
+ return single_open(filp, nss_connmgr_gre_test_show_proc, pde_data(inode));
}
/*
--- a/gre/nss_connmgr_gre.c
+++ b/gre/nss_connmgr_gre.c
@@ -279,10 +279,10 @@ static struct rtnl_link_stats64 *nss_con
#else
start = u64_stats_fetch_begin_irq(&tstats->syncp);
#endif
- rx_packets = tstats->rx_packets;
- tx_packets = tstats->tx_packets;
- rx_bytes = tstats->rx_bytes;
- tx_bytes = tstats->tx_bytes;
+ rx_packets = u64_stats_read(&tstats->rx_packets);
+ tx_packets = u64_stats_read(&tstats->tx_packets);
+ rx_bytes = u64_stats_read(&tstats->rx_bytes);
+ tx_bytes = u64_stats_read(&tstats->tx_bytes);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
} while (u64_stats_fetch_retry_bh(&tstats->syncp, start));
#else
@@ -697,11 +697,11 @@ static void nss_connmgr_gre_event_receiv
tstats = this_cpu_ptr(dev->tstats);
u64_stats_update_begin(&tstats->syncp);
if (interface_type == NSS_DYNAMIC_INTERFACE_TYPE_GRE_INNER) {
- tstats->tx_packets += stats->tx_packets;
- tstats->tx_bytes += stats->tx_bytes;
+ u64_stats_add(&tstats->tx_packets, stats->tx_packets);
+ u64_stats_add(&tstats->tx_bytes, stats->tx_bytes);
} else if (interface_type == NSS_DYNAMIC_INTERFACE_TYPE_GRE_OUTER) {
- tstats->rx_packets += stats->rx_packets;
- tstats->rx_bytes += stats->rx_bytes;
+ u64_stats_add(&tstats->rx_packets, stats->rx_packets);
+ u64_stats_add(&tstats->rx_bytes, stats->rx_bytes);
}
u64_stats_update_end(&tstats->syncp);
dev->stats.rx_dropped += nss_cmn_rx_dropped_sum(stats);
--- a/tunipip6/nss_connmgr_tunipip6.c
+++ b/tunipip6/nss_connmgr_tunipip6.c
@@ -353,11 +353,11 @@ static void nss_tunipip6_update_dev_stat
memset(&stats, 0, sizeof(stats));
if (interface_type == NSS_DYNAMIC_INTERFACE_TYPE_TUNIPIP6_INNER) {
- stats.tx_packets = sync_stats->node_stats.tx_packets;
- stats.tx_bytes = sync_stats->node_stats.tx_bytes;
+ u64_stats_set(&stats.tx_packets, sync_stats->node_stats.tx_packets);
+ u64_stats_set(&stats.tx_bytes, sync_stats->node_stats.tx_bytes);
} else if (interface_type == NSS_DYNAMIC_INTERFACE_TYPE_TUNIPIP6_OUTER) {
- stats.rx_packets = sync_stats->node_stats.rx_packets;
- stats.rx_bytes = sync_stats->node_stats.rx_bytes;
+ u64_stats_set(&stats.rx_packets, sync_stats->node_stats.rx_packets);
+ u64_stats_set(&stats.rx_bytes, sync_stats->node_stats.rx_bytes);
} else {
nss_tunipip6_warning("%px: Invalid interface type received from NSS\n", dev);
return;
--- a/nss_qdisc/igs/nss_mirred.c
+++ b/nss_qdisc/igs/nss_mirred.c
@@ -317,7 +317,7 @@ static int nss_mirred_act(struct sk_buff
* Update the last use of action.
*/
tcf_lastuse_update(&act->tcf_tm);
- bstats_cpu_update(this_cpu_ptr(act->common.cpu_bstats), skb);
+ bstats_update(this_cpu_ptr(act->common.cpu_bstats), skb);
rcu_read_lock();
retval = READ_ONCE(act->tcf_action);
--- a/nss_qdisc/nss_qdisc.h
+++ b/nss_qdisc/nss_qdisc.h
@@ -188,7 +188,7 @@ struct nss_qdisc {
/* Shaper configure callback for reading shaper specific
* responses (e.g. memory size).
*/
- struct gnet_stats_basic_packed bstats; /* Basic class statistics */
+ struct gnet_stats_basic_sync bstats; /* Basic class statistics */
struct gnet_stats_queue qstats; /* Qstats for use by classes */
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0))
atomic_t refcnt; /* Reference count for class use */
@@ -445,7 +445,7 @@ extern void nss_qdisc_stop_basic_stats_p
* Wrapper around gnet_stats_copy_basic()
*/
extern int nss_qdisc_gnet_stats_copy_basic(struct Qdisc *sch,
- struct gnet_dump *d, struct gnet_stats_basic_packed *b);
+ struct gnet_dump *d, struct gnet_stats_basic_sync *b);
/*
* nss_qdisc_gnet_stats_copy_queue()
--- a/nss_qdisc/igs/nss_ifb.c
+++ b/nss_qdisc/igs/nss_ifb.c
@@ -544,8 +544,10 @@ static void nss_ifb_update_dev_stats(str
* post shaping. Therefore IFB interface's stats should be updated
* with NSS firmware's IFB TX stats only.
*/
- stats.rx_packets = stats.tx_packets = node_stats->tx_packets;
- stats.rx_bytes = stats.tx_bytes = node_stats->tx_bytes;
+ u64_stats_set(&stats.rx_packets, node_stats->tx_packets);
+ u64_stats_set(&stats.tx_packets, node_stats->tx_packets);
+ u64_stats_set(&stats.rx_bytes, node_stats->tx_bytes);
+ u64_stats_set(&stats.tx_bytes, node_stats->tx_bytes);
dev->stats.rx_dropped = dev->stats.tx_dropped += sync_stats->igs_stats.tx_dropped;
u64_stats_update_end(&stats.syncp);
--- a/nss_qdisc/nss_qdisc.c
+++ b/nss_qdisc/nss_qdisc.c
@@ -14,6 +14,7 @@
**************************************************************************
*/
+#include "net/gen_stats.h"
#include <nss_api_if.h>
#include "nss_qdisc.h"
#include "nss_fifo.h"
@@ -2173,7 +2174,7 @@ int __nss_qdisc_init(struct Qdisc *sch,
* This is to prevent mixing NSS and PPE qdisc with linux qdisc.
*/
if ((parent != TC_H_ROOT) && (root->ops->owner != THIS_MODULE)) {
- nss_qdisc_warning("NSS qdisc %px (type %d) used along with non-nss qdiscs,"
+ nss_qdisc_info("NSS qdisc %px (type %d) used along with non-nss qdiscs,"
" or the interface is currently down", nq->qdisc, nq->type);
}
@@ -2562,7 +2563,7 @@ static void nss_qdisc_basic_stats_callba
{
struct nss_qdisc *nq = (struct nss_qdisc *)app_data;
struct Qdisc *qdisc = nq->qdisc;
- struct gnet_stats_basic_packed *bstats;
+ struct gnet_stats_basic_sync *bstats;
struct gnet_stats_queue *qstats;
struct nss_shaper_node_stats_response *response;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0))
@@ -2601,8 +2602,8 @@ static void nss_qdisc_basic_stats_callba
* Update qdisc->bstats
*/
spin_lock_bh(&nq->lock);
- bstats->bytes += (__u64)response->sn_stats.delta.dequeued_bytes;
- bstats->packets += response->sn_stats.delta.dequeued_packets;
+ u64_stats_add(&bstats->bytes, (__u64)response->sn_stats.delta.dequeued_bytes);
+ u64_stats_add(&bstats->packets, response->sn_stats.delta.dequeued_packets);
/*
* Update qdisc->qstats
@@ -2762,12 +2763,14 @@ void nss_qdisc_stop_basic_stats_polling(
* Wrapper around gnet_stats_copy_basic()
*/
int nss_qdisc_gnet_stats_copy_basic(struct Qdisc *sch, struct gnet_dump *d,
- struct gnet_stats_basic_packed *b)
+ struct gnet_stats_basic_sync *b)
{
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3, 18, 0))
return gnet_stats_copy_basic(d, b);
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
return gnet_stats_copy_basic(d, NULL, b);
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0))
+ return gnet_stats_copy_basic(d, NULL, b, true);
#else
return gnet_stats_copy_basic(qdisc_root_sleeping_running(sch), d, NULL, b);
#endif
@@ -2798,7 +2801,6 @@ static int nss_qdisc_if_event_cb(struct
struct net_device *br;
struct Qdisc *br_qdisc;
int if_num, br_num;
- struct nss_qdisc *nq;
dev = nss_qdisc_get_dev(ptr);
if (!dev) {
@@ -2841,8 +2843,6 @@ static int nss_qdisc_if_event_cb(struct
break;
}
- nq = (struct nss_qdisc *)qdisc_priv(br_qdisc);
-
/*
* Call attach or detach according as per event type.
*/
--- a/vxlanmgr/nss_vxlanmgr_tunnel.c
+++ b/vxlanmgr/nss_vxlanmgr_tunnel.c
@@ -465,8 +465,8 @@ static void nss_vxlanmgr_tunnel_inner_st
tstats = this_cpu_ptr(dev->tstats);
u64_stats_update_begin(&tstats->syncp);
- tstats->tx_packets += stats->node_stats.tx_packets;
- tstats->tx_bytes += stats->node_stats.tx_bytes;
+ u64_stats_add(&tstats->tx_packets, stats->node_stats.tx_packets);
+ u64_stats_add(&tstats->tx_bytes, stats->node_stats.tx_bytes);
u64_stats_update_end(&tstats->syncp);
netdev_stats->tx_dropped += dropped;
dev_put(dev);
@@ -503,8 +503,8 @@ static void nss_vxlanmgr_tunnel_outer_st
tstats = this_cpu_ptr(dev->tstats);
u64_stats_update_begin(&tstats->syncp);
- tstats->rx_packets += stats->node_stats.tx_packets;
- tstats->rx_bytes += stats->node_stats.tx_bytes;
+ u64_stats_add(&tstats->rx_packets, stats->node_stats.tx_packets);
+ u64_stats_add(&tstats->rx_bytes, stats->node_stats.tx_bytes);
u64_stats_update_end(&tstats->syncp);
netdev_stats->rx_dropped += dropped;
dev_put(dev);
--- a/pvxlanmgr/nss_pvxlanmgr.c
+++ b/pvxlanmgr/nss_pvxlanmgr.c
@@ -177,7 +177,7 @@ static struct rtnl_link_stats64 *nss_pvx
* Netdev seems to be incrementing rx_dropped because we don't give IP header.
* So reset it as it's of no use for us.
*/
- atomic_long_set(&dev->rx_dropped, 0);
+ atomic_long_set(&(dev)->stats.__rx_dropped, 0);
priv = netdev_priv(dev);
memset(stats, 0, sizeof(struct rtnl_link_stats64));
memcpy(stats, &priv->stats, sizeof(struct rtnl_link_stats64));
@@ -305,9 +305,9 @@ static void nss_pvxlanmgr_dummy_netdev_s
dev->priv_destructor = NULL;
#endif
- memcpy(dev->dev_addr, "\x00\x00\x00\x00\x00\x00", dev->addr_len);
- memset(dev->broadcast, 0xff, dev->addr_len);
- memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
+ const uint8_t mac_addr[ETH_ALEN] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+ eth_hw_addr_set(dev, mac_addr);
+ eth_broadcast_addr(dev->broadcast);
}
/*
--- a/clmapmgr/nss_clmapmgr.c
+++ b/clmapmgr/nss_clmapmgr.c
@@ -103,7 +103,7 @@ static struct rtnl_link_stats64 *nss_clm
* Netdev seems to be incrementing rx_dropped because we don't give IP header.
* So reset it as it's of no use for us.
*/
- atomic_long_set(&dev->rx_dropped, 0);
+ atomic_long_set(&(dev)->stats.__rx_dropped, 0);
priv = netdev_priv(dev);
memset(stats, 0, sizeof(struct rtnl_link_stats64));
memcpy(stats, &priv->stats, sizeof(struct rtnl_link_stats64));
--- a/tls/nss_tlsmgr_tun.c
+++ b/tls/nss_tlsmgr_tun.c
@@ -185,7 +185,7 @@ static void nss_tlsmgr_tun_setup(struct
/*
* Get the MAC address from the ethernet device
*/
- random_ether_addr(dev->dev_addr);
+ eth_random_addr((u8 *) dev->dev_addr);
memset(dev->broadcast, 0xff, dev->addr_len);
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
--- a/netlink/nss_nlgre_redir_cmn.c
+++ b/netlink/nss_nlgre_redir_cmn.c
@@ -384,7 +384,7 @@ static int nss_nlgre_redir_cmn_set_mac_a
return -EINVAL;
}
- memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+ memcpy((void *) dev->dev_addr, addr->sa_data, ETH_ALEN);
return 0;
}
--- a/nss_connmgr_tun6rd.c
+++ b/nss_connmgr_tun6rd.c
@@ -101,10 +101,10 @@ static void nss_tun6rd_update_dev_stats(
u64_stats_init(&stats.syncp);
u64_stats_update_begin(&stats.syncp);
- stats.rx_packets = sync_stats->node_stats.rx_packets;
- stats.rx_bytes = sync_stats->node_stats.rx_bytes;
- stats.tx_packets = sync_stats->node_stats.tx_packets;
- stats.tx_bytes = sync_stats->node_stats.tx_bytes;
+ u64_stats_set(&stats.rx_packets, sync_stats->node_stats.rx_packets);
+ u64_stats_set(&stats.rx_bytes, sync_stats->node_stats.rx_bytes);
+ u64_stats_set(&stats.tx_packets, sync_stats->node_stats.tx_packets);
+ u64_stats_set(&stats.tx_bytes, sync_stats->node_stats.tx_bytes);
u64_stats_update_end(&stats.syncp);
#else
struct nss_tun6rd_stats stats;
--- a/ipsecmgr/v1.0/nss_ipsecmgr.c
+++ b/ipsecmgr/v1.0/nss_ipsecmgr.c
@@ -445,7 +445,7 @@ static void nss_ipsecmgr_tunnel_setup(st
/*
* get the MAC address from the ethernet device
*/
- random_ether_addr(dev->dev_addr);
+ eth_random_addr((u8 *) dev->dev_addr);
memset(dev->broadcast, 0xff, dev->addr_len);
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
--- a/ipsecmgr/v2.0/nss_ipsecmgr_tunnel.c
+++ b/ipsecmgr/v2.0/nss_ipsecmgr_tunnel.c
@@ -445,7 +445,7 @@ static void nss_ipsecmgr_tunnel_setup(st
/*
* Get the MAC address from the ethernet device
*/
- random_ether_addr(dev->dev_addr);
+ eth_random_addr((u8 *) dev->dev_addr);
memset(dev->broadcast, 0xff, dev->addr_len);
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);