|
@@ -2479,6 +2479,7 @@ static int pktgen_output_ipsec(struct sk_buff *skb, struct pktgen_dev *pkt_dev)
|
|
|
{
|
|
|
struct xfrm_state *x = pkt_dev->flows[pkt_dev->curfl].x;
|
|
|
int err = 0;
|
|
|
+ struct net *net = dev_net(pkt_dev->odev);
|
|
|
|
|
|
if (!x)
|
|
|
return 0;
|
|
@@ -2488,12 +2489,15 @@ static int pktgen_output_ipsec(struct sk_buff *skb, struct pktgen_dev *pkt_dev)
|
|
|
return 0;
|
|
|
|
|
|
err = x->outer_mode->output(x, skb);
|
|
|
- if (err)
|
|
|
+ if (err) {
|
|
|
+ XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTSTATEMODEERROR);
|
|
|
goto error;
|
|
|
+ }
|
|
|
err = x->type->output(x, skb);
|
|
|
- if (err)
|
|
|
+ if (err) {
|
|
|
+ XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTSTATEPROTOERROR);
|
|
|
goto error;
|
|
|
-
|
|
|
+ }
|
|
|
spin_lock_bh(&x->lock);
|
|
|
x->curlft.bytes += skb->len;
|
|
|
x->curlft.packets++;
|