diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 647ec24..71d316a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2470,7 +2470,7 @@ static void dev_gso_skb_destructor(struct sk_buff *skb) * This function segments the given skb and stores the list of segments * in skb->next. */ -static int dev_gso_segment(struct sk_buff *skb, netdev_features_t features) +int dev_gso_segment(struct sk_buff *skb, netdev_features_t features) { struct sk_buff *segs; @@ -2489,6 +2489,13 @@ static int dev_gso_segment(struct sk_buff *skb, netdev_features_t features) return 0; } +EXPORT_SYMBOL(dev_gso_segment); + +void dev_set_skb_destructor(struct sk_buff *skb) +{ + skb->destructor = DEV_GSO_CB(skb)->destructor; +} +EXPORT_SYMBOL(dev_set_skb_destructor); static netdev_features_t harmonize_features(struct sk_buff *skb, const struct net_device *dev, @@ -2556,9 +2563,10 @@ static inline int skb_needs_linearize(struct sk_buff *skb, !(features & NETIF_F_SG))); } -#ifdef CONFIG_ASF_EGRESS_QOS +#if defined(CONFIG_ASF_EGRESS_QOS) || defined(CONFIG_ASF_LINUX_QOS) /* Linux QoS hook to tranfer all packet to ASF QoS */ -static asf_qos_fn_hook *asf_qos_fn; +asf_qos_fn_hook *asf_qos_fn; +EXPORT_SYMBOL(asf_qos_fn); void asf_qos_fn_register(asf_qos_fn_hook *fn) { @@ -2848,7 +2856,7 @@ int dev_queue_xmit(struct sk_buff *skb) skb_update_prio(skb); -#ifdef CONFIG_ASF_EGRESS_QOS +#if defined(CONFIG_ASF_EGRESS_QOS) || defined(CONFIG_ASF_LINUX_QOS) if (asf_qos_fn) { rc = asf_qos_fn(skb); if (!rc) @@ -4445,7 +4453,9 @@ out: softnet_break: sd->time_squeeze++; +#ifndef CONFIG_PREEMPT_RT_FULL __raise_softirq_irqoff(NET_RX_SOFTIRQ); +#endif goto out; } |