diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ethtool.h | 9 | ||||
-rw-r--r-- | include/net/netfilter/nft_fib.h | 2 | ||||
-rw-r--r-- | include/net/udp.h | 9 |
3 files changed, 18 insertions, 2 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index e6ebc9761822..95991e4300bf 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -260,6 +260,15 @@ bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32, * will remain unchanged. * Returns a negative error code or zero. An error code must be returned * if at least one unsupported change was requested. + * @get_rxfh_context: Get the contents of the RX flow hash indirection table, + * hash key, and/or hash function assiciated to the given rss context. + * Returns a negative error code or zero. + * @set_rxfh_context: Create, remove and configure RSS contexts. Allows setting + * the contents of the RX flow hash indirection table, hash key, and/or + * hash function associated to the given context. Arguments which are set + * to %NULL or zero will remain unchanged. + * Returns a negative error code or zero. An error code must be returned + * if at least one unsupported change was requested. * @get_channels: Get number of channels. * @set_channels: Set number of channels. Returns a negative error code or * zero. diff --git a/include/net/netfilter/nft_fib.h b/include/net/netfilter/nft_fib.h index a88f92737308..e4c4d8eaca8c 100644 --- a/include/net/netfilter/nft_fib.h +++ b/include/net/netfilter/nft_fib.h @@ -34,5 +34,5 @@ void nft_fib6_eval(const struct nft_expr *expr, struct nft_regs *regs, const struct nft_pktinfo *pkt); void nft_fib_store_result(void *reg, const struct nft_fib *priv, - const struct nft_pktinfo *pkt, int index); + const struct net_device *dev); #endif diff --git a/include/net/udp.h b/include/net/udp.h index d8ce937bc395..dbe030da20a1 100644 --- a/include/net/udp.h +++ b/include/net/udp.h @@ -471,12 +471,19 @@ void udpv6_encap_enable(void); static inline struct sk_buff *udp_rcv_segment(struct sock *sk, struct sk_buff *skb, bool ipv4) { + netdev_features_t features = NETIF_F_SG; struct sk_buff *segs; + /* Avoid csum recalculation by skb_segment unless userspace explicitly + * asks for the final checksum values + */ + if (!inet_get_convert_csum(sk)) + features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; + /* the GSO CB lays after the UDP one, no need to save and restore any * CB fragment */ - segs = __skb_gso_segment(skb, NETIF_F_SG, false); + segs = __skb_gso_segment(skb, features, false); if (unlikely(IS_ERR_OR_NULL(segs))) { int segs_nr = skb_shinfo(skb)->gso_segs; |