|
@@ -334,10 +334,15 @@ int dev_map_enqueue(struct bpf_dtab_netdev *dst, struct xdp_buff *xdp,
|
|
|
{
|
|
|
struct net_device *dev = dst->dev;
|
|
|
struct xdp_frame *xdpf;
|
|
|
+ int err;
|
|
|
|
|
|
if (!dev->netdev_ops->ndo_xdp_xmit)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
+ err = xdp_ok_fwd_dev(dev, xdp->data_end - xdp->data);
|
|
|
+ if (unlikely(err))
|
|
|
+ return err;
|
|
|
+
|
|
|
xdpf = convert_to_xdp_frame(xdp);
|
|
|
if (unlikely(!xdpf))
|
|
|
return -EOVERFLOW;
|
|
@@ -350,7 +355,7 @@ int dev_map_generic_redirect(struct bpf_dtab_netdev *dst, struct sk_buff *skb,
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
- err = __xdp_generic_ok_fwd_dev(skb, dst->dev);
|
|
|
+ err = xdp_ok_fwd_dev(dst->dev, skb->len);
|
|
|
if (unlikely(err))
|
|
|
return err;
|
|
|
skb->dev = dst->dev;
|