Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25393d3f authored by Steffen Klassert's avatar Steffen Klassert
Browse files

net: Prepare gro for packet consuming gro callbacks



The upcomming IPsec ESP gro callbacks will consume the skb,
so prepare for that.

Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent 5f114163
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -352,6 +352,7 @@ enum gro_result {
	GRO_HELD,
	GRO_NORMAL,
	GRO_DROP,
	GRO_CONSUMED,
};
typedef enum gro_result gro_result_t;

@@ -2661,10 +2662,18 @@ static inline void skb_gro_remcsum_cleanup(struct sk_buff *skb,
	remcsum_unadjust((__sum16 *)ptr, grc->delta);
}

#ifdef CONFIG_XFRM_OFFLOAD
static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp, int flush)
{
	if (PTR_ERR(pp) != -EINPROGRESS)
		NAPI_GRO_CB(skb)->flush |= flush;
}
#else
static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp, int flush)
{
	NAPI_GRO_CB(skb)->flush |= flush;
}
#endif

static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
				  unsigned short type,
+7 −0
Original line number Diff line number Diff line
@@ -4505,6 +4505,11 @@ static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff
	if (&ptype->list == head)
		goto normal;

	if (IS_ERR(pp) && PTR_ERR(pp) == -EINPROGRESS) {
		ret = GRO_CONSUMED;
		goto ok;
	}

	same_flow = NAPI_GRO_CB(skb)->same_flow;
	ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED;

@@ -4609,6 +4614,7 @@ static gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)

	case GRO_HELD:
	case GRO_MERGED:
	case GRO_CONSUMED:
		break;
	}

@@ -4680,6 +4686,7 @@ static gro_result_t napi_frags_finish(struct napi_struct *napi,
		break;

	case GRO_MERGED:
	case GRO_CONSUMED:
		break;
	}

+4 −0
Original line number Diff line number Diff line
@@ -5,6 +5,10 @@ config XFRM
       bool
       depends on NET

config XFRM_OFFLOAD
       bool
       depends on XFRM

config XFRM_ALGO
	tristate
	select XFRM