diff options
Diffstat (limited to 'net/xfrm/xfrm_output.c')
| -rw-r--r-- | net/xfrm/xfrm_output.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 662c83beb345..e5722c95b8bb 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c @@ -704,9 +704,13 @@ int xfrm_output(struct sock *sk, struct sk_buff *skb)  {  	struct net *net = dev_net(skb_dst(skb)->dev);  	struct xfrm_state *x = skb_dst(skb)->xfrm; +	int family;  	int err; -	switch (x->outer_mode.family) { +	family = (x->xso.type != XFRM_DEV_OFFLOAD_PACKET) ? x->outer_mode.family +		: skb_dst(skb)->ops->family; + +	switch (family) {  	case AF_INET:  		memset(IPCB(skb), 0, sizeof(*IPCB(skb)));  		IPCB(skb)->flags |= IPSKB_XFRM_TRANSFORMED;  |