--- zzzz-none-000/linux-4.19.183/include/linux/netdevice.h 2021-03-24 10:07:39.000000000 +0000 +++ bcm63-7530ax-756/linux-4.19.183/include/linux/netdevice.h 2023-06-28 08:54:20.000000000 +0000 @@ -25,6 +25,7 @@ #ifndef _LINUX_NETDEVICE_H #define _LINUX_NETDEVICE_H + #include #include #include @@ -53,6 +54,19 @@ #include #include + +#if defined(CONFIG_BCM_KF_NETDEV_EXT) +#include +#endif /* CONFIG_BCM_KF_NETDEV_EXT */ +/* Do not include avm_pa.h to avoid include cycle. Since we can't determine + * the size here we reserve some space, including some extra space for future + * extensions without having to rebuild the world. + * + * avm_pa contains a BUILD_BUG_ON() in case the reserve is too small. + */ +#define AVM_PA_DEV_INFO_DEV_RESERVE 32 +struct avm_pa_dev_info; + struct netpoll_info; struct device; struct phy_device; @@ -186,6 +200,16 @@ unsigned long tx_window_errors; unsigned long rx_compressed; unsigned long tx_compressed; +#if defined(CONFIG_BCM_KF_EXTSTATS) + unsigned long tx_multicast_packets; /* multicast packets transmitted */ + unsigned long rx_multicast_bytes; /* multicast bytes recieved */ + unsigned long tx_multicast_bytes; /* multicast bytes transmitted */ + unsigned long rx_broadcast_packets; /* broadcast packets recieved */ + unsigned long tx_broadcast_packets; /* broadcast packets transmitted */ + /* NOTE: Unicast packets are not counted but are instead calculated as needed + using total - (broadcast + multicast) */ + unsigned long rx_unknown_packets; /* unknown protocol packets recieved */ +#endif }; @@ -1791,6 +1815,11 @@ struct net_device_stats stats; + +#if defined(CONFIG_BCM_KF_NETDEV_EXT) + struct bcm_netdev_ext bcm_nd_ext; +#endif + atomic_long_t rx_dropped; atomic_long_t tx_dropped; atomic_long_t rx_nohandler; @@ -1894,7 +1923,10 @@ struct dn_dev __rcu *dn_ptr; #endif struct inet6_dev __rcu *ip6_ptr; -#if IS_ENABLED(CONFIG_AX25) +#if IS_ENABLED(CONFIG_AX25) || IS_ENABLED(CONFIG_AVM_ENHANCED) + /* reused by avm kdsldmod, + * field is visible by default in older kernels + */ void *ax25_ptr; #endif struct wireless_dev *ieee80211_ptr; @@ -1995,6 +2027,12 @@ struct pcpu_vstats __percpu *vstats; }; +#ifdef CONFIG_AVM_PA + u8 avm_pa[AVM_PA_DEV_INFO_DEV_RESERVE]; +#define AVM_PA_DEVINFO(dev) ((struct avm_pa_dev_info *) (dev)->avm_pa) +#else +#define AVM_PA_DEVINFO(dev) ((struct avm_pa_dev_info *) NULL) +#endif #if IS_ENABLED(CONFIG_GARP) struct garp_port __rcu *garp_port; #endif @@ -4247,6 +4285,9 @@ void *netdev_lower_get_first_private_rcu(struct net_device *dev); struct net_device *netdev_master_upper_dev_get(struct net_device *dev); struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev); +#if defined(CONFIG_BCM_KF_NETDEV_EXT) +struct net_device *bcm_netdev_master_upper_dev_get_nolock(struct net_device *dev); +#endif /* CONFIG_BCM_KF_NETDEV_EXT */ int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, struct netlink_ext_ack *extack); int netdev_master_upper_dev_link(struct net_device *dev, @@ -4602,6 +4643,7 @@ extern struct pernet_operations __net_initdata loopback_net_ops; + /* Logging, debugging and troubleshooting/diagnostic helpers. */ /* netdev_printk helpers, similar to dev_printk */