mirror of
https://github.com/breeze303/openwrt-ipq.git
synced 2025-12-16 12:11:06 +00:00
ath11k_nss: Fix iface stats showing up as 0
Generic ndo_get_stats64 was removed in kernel > 6.9. This ends up
breaking interface stats on NSS builds.
```
phy0-ap0 Link encap:Ethernet HWaddr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:841 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
phy1-ap0 Link encap:Ethernet HWaddr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
```
Until a better workaround is implemented revert the following patch.
```
commit c018411d355518a0b2a304d7543564cdd1b808b6
Author: Breno Leitao <leitao@debian.org>
AuthorDate: Fri Jun 7 03:20:44 2024 -0700
Commit: Johannes Berg <johannes.berg@intel.com>
CommitDate: Wed Jun 12 13:04:24 2024 +0200
wifi: mac80211: Remove generic .ndo_get_stats64
Commit 3e2f544dd8a33 ("net: get stats64 if device if driver is
configured") moved the callback to dev_get_tstats64() to net core, so,
unless the driver is doing some custom stats collection, it does not
need to set .ndo_get_stats64.
Since this driver is now relying in NETDEV_PCPU_STAT_TSTATS, then, it
doesn't need to set the dev_get_tstats64() generic .ndo_get_stats64
function pointer.
In this driver specifically, .ndo_get_stats64 basically points to
dev_fetch_sw_netstats(). Now it will point to dev_get_tstats64(), which
calls netdev_stats_to_stats64() and dev_fetch_sw_netstats().
netdev_stats_to_stats64() seems irrelevant for this driver.
```
Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
parent
351bd2c673
commit
b442af7eb3
@ -0,0 +1,39 @@
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -832,6 +832,12 @@ static void ieee80211_uninit(struct net_
|
||||
ieee80211_teardown_sdata(IEEE80211_DEV_TO_SUB_IF(dev));
|
||||
}
|
||||
|
||||
+static void
|
||||
+ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
||||
+{
|
||||
+ dev_fetch_sw_netstats(stats, dev->tstats);
|
||||
+}
|
||||
+
|
||||
static int ieee80211_netdev_setup_tc(struct net_device *dev,
|
||||
enum tc_setup_type type, void *type_data)
|
||||
{
|
||||
@@ -848,6 +854,7 @@ static const struct net_device_ops ieee8
|
||||
.ndo_start_xmit = ieee80211_subif_start_xmit,
|
||||
.ndo_set_rx_mode = ieee80211_set_multicast_list,
|
||||
.ndo_set_mac_address = ieee80211_change_mac,
|
||||
+ .ndo_get_stats64 = ieee80211_get_stats64,
|
||||
.ndo_setup_tc = ieee80211_netdev_setup_tc,
|
||||
};
|
||||
|
||||
@@ -887,6 +894,7 @@ static const struct net_device_ops ieee8
|
||||
.ndo_set_rx_mode = ieee80211_set_multicast_list,
|
||||
.ndo_set_mac_address = ieee80211_change_mac,
|
||||
.ndo_select_queue = ieee80211_monitor_select_queue,
|
||||
+ .ndo_get_stats64 = ieee80211_get_stats64,
|
||||
};
|
||||
|
||||
static int ieee80211_netdev_fill_forward_path(struct net_device_path_ctx *ctx,
|
||||
@@ -954,6 +962,7 @@ static const struct net_device_ops ieee8
|
||||
.ndo_start_xmit = ieee80211_subif_start_xmit_8023,
|
||||
.ndo_set_rx_mode = ieee80211_set_multicast_list,
|
||||
.ndo_set_mac_address = ieee80211_change_mac,
|
||||
+ .ndo_get_stats64 = ieee80211_get_stats64,
|
||||
.ndo_fill_forward_path = ieee80211_netdev_fill_forward_path,
|
||||
.ndo_setup_tc = ieee80211_netdev_setup_tc,
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user