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: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
5f114163f2
commit
25393d3fc0
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,10 @@ config XFRM
|
|||
bool
|
||||
depends on NET
|
||||
|
||||
config XFRM_OFFLOAD
|
||||
bool
|
||||
depends on XFRM
|
||||
|
||||
config XFRM_ALGO
|
||||
tristate
|
||||
select XFRM
|
||||
|
|
Loading…
Reference in a new issue