From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/include/linux/netdevice.h | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 94 insertions(+), 0 deletions(-) diff --git a/kernel/include/linux/netdevice.h b/kernel/include/linux/netdevice.h index 7e7a003..d25e9aa 100644 --- a/kernel/include/linux/netdevice.h +++ b/kernel/include/linux/netdevice.h @@ -41,6 +41,7 @@ #endif #include <net/netprio_cgroup.h> #include <net/xdp.h> +#include <net/netoob.h> #include <linux/netdev_features.h> #include <linux/neighbour.h> @@ -296,6 +297,7 @@ __LINK_STATE_LINKWATCH_PENDING, __LINK_STATE_DORMANT, __LINK_STATE_TESTING, + __LINK_STATE_OOB, }; @@ -1534,6 +1536,13 @@ ANDROID_KABI_RESERVE(6); ANDROID_KABI_RESERVE(7); ANDROID_KABI_RESERVE(8); +#ifdef CONFIG_NET_OOB + struct sk_buff * (*ndo_alloc_oob_skb)(struct net_device *dev, + dma_addr_t *dma_addr); + void (*ndo_free_oob_skb)(struct net_device *dev, + struct sk_buff *skb, + dma_addr_t dma_addr); +#endif }; /** @@ -1725,6 +1734,7 @@ * @tlsdev_ops: Transport Layer Security offload operations * @header_ops: Includes callbacks for creating,parsing,caching,etc * of Layer 2 headers. + * @net_oob_context: Out-of-band networking context (oob stage diversion) * * @flags: Interface flags (a la BSD) * @priv_flags: Like 'flags' but invisible to userspace, @@ -1982,6 +1992,10 @@ #if IS_ENABLED(CONFIG_TLS_DEVICE) const struct tlsdev_ops *tlsdev_ops; +#endif + +#ifdef CONFIG_NET_OOB + struct oob_netdev_context oob_context; #endif const struct header_ops *header_ops; @@ -4190,6 +4204,86 @@ void netif_device_attach(struct net_device *dev); +#ifdef CONFIG_NET_OOB + +static inline bool netif_oob_diversion(const struct net_device *dev) +{ + return test_bit(__LINK_STATE_OOB, &dev->state); +} + +static inline void netif_enable_oob_diversion(struct net_device *dev) +{ + return set_bit(__LINK_STATE_OOB, &dev->state); +} + +static inline void netif_disable_oob_diversion(struct net_device *dev) +{ + clear_bit(__LINK_STATE_OOB, &dev->state); + smp_mb__after_atomic(); +} + +int netif_xmit_oob(struct sk_buff *skb); + +static inline bool netdev_is_oob_capable(struct net_device *dev) +{ + return !!(dev->oob_context.flags & IFF_OOB_CAPABLE); +} + +static inline void netdev_enable_oob_port(struct net_device *dev) +{ + dev->oob_context.flags |= IFF_OOB_PORT; +} + +static inline void netdev_disable_oob_port(struct net_device *dev) +{ + dev->oob_context.flags &= ~IFF_OOB_PORT; +} + +static inline bool netdev_is_oob_port(struct net_device *dev) +{ + return !!(dev->oob_context.flags & IFF_OOB_PORT); +} + +static inline struct sk_buff *netdev_alloc_oob_skb(struct net_device *dev, + dma_addr_t *dma_addr) +{ + return dev->netdev_ops->ndo_alloc_oob_skb(dev, dma_addr); +} + +static inline void netdev_free_oob_skb(struct net_device *dev, + struct sk_buff *skb, + dma_addr_t dma_addr) +{ + dev->netdev_ops->ndo_free_oob_skb(dev, skb, dma_addr); +} + +#else + +static inline bool netif_oob_diversion(const struct net_device *dev) +{ + return false; +} + +static inline bool netdev_is_oob_capable(struct net_device *dev) +{ + return false; +} + +static inline void netdev_enable_oob_port(struct net_device *dev) +{ +} + +static inline void netdev_disable_oob_port(struct net_device *dev) +{ +} + +static inline bool netdev_is_oob_port(struct net_device *dev) +{ + return false; +} + +#endif + /* * Network interface message level settings */ -- Gitblit v1.6.2