Re: [PATCH v4 bpf-next 2/8] drivers: net: turn on XDP features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> Lorenzo Bianconi <lorenzo@xxxxxxxxxx> writes:
> 
> > From: Marek Majtyka <alardam@xxxxxxxxx>
> > 
> > ...
> > 
> > diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > index e8ad5ea31aff..d3999db7c6a2 100644
> > --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> > @@ -597,7 +597,9 @@ static int ena_xdp_set(struct net_device *netdev,
> > struct netdev_bpf *bpf)
> >  				if (rc)
> >  					return rc;
> >  			}
> > +			xdp_features_set_redirect_target(netdev, false);
> >  		} else if (old_bpf_prog) {
> > + xdp_features_clear_redirect_target(netdev);
> >  			rc =  ena_destroy_and_free_all_xdp_queues(adapter);
> >  			if (rc)
> >  				return rc;
> > @@ -4103,6 +4105,8 @@ static void ena_set_conf_feat_params(struct
> > ena_adapter *adapter,
> >  	/* Set offload features */
> >  	ena_set_dev_offloads(feat, netdev);
> >   +	netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
> > NETDEV_XDP_ACT_REDIRECT;
> > +
> >  	adapter->max_mtu = feat->dev_attr.max_mtu;
> >  	netdev->max_mtu = adapter->max_mtu;
> >  	netdev->min_mtu = ENA_MIN_MTU;
> > 
> 
> Hi, thanks for the time you put in adjusting the ENA driver as well.

Hi Shay,

> 
> Why did you set NETDEV_XDP_ACT_NDO_XMIT dynamically for some drivers (like
> ENA and mlx5) and statically for others (like atlantic driver which also
> redirects packets only when XDP program is loaded) ?
> Is it only for the sake of notifying the user that an XDP program has been
> loaded ?

there are some drivers (e.g. mvneta) where NETDEV_XDP_ACT_NDO_XMIT is always
supported while there are other drivers (e.g. intel drivers) where it
depends on other configurations (e.g. if the driver needs to reserve
some queues for xdp).

Regards,
Lorenzo

> 
> Thanks,
> Shay
> 
> > ...
> > diff --git a/net/core/xdp.c b/net/core/xdp.c
> > index a5a7ecf6391c..82727b47259d 100644
> > --- a/net/core/xdp.c
> > +++ b/net/core/xdp.c
> > @@ -773,3 +773,21 @@ static int __init xdp_metadata_init(void)
> >  	return register_btf_kfunc_id_set(BPF_PROG_TYPE_XDP,
> > &xdp_metadata_kfunc_set);
> >  }
> >  late_initcall(xdp_metadata_init);
> > +
> > +void xdp_features_set_redirect_target(struct net_device *dev, bool
> > support_sg)
> > +{
> > +	dev->xdp_features |= NETDEV_XDP_ACT_NDO_XMIT;
> > +	if (support_sg)
> > +		dev->xdp_features |= NETDEV_XDP_ACT_NDO_XMIT_SG;
> > +
> > +	call_netdevice_notifiers(NETDEV_XDP_FEAT_CHANGE, dev);
> > +}
> > +EXPORT_SYMBOL_GPL(xdp_features_set_redirect_target);
> > +
> > +void xdp_features_clear_redirect_target(struct net_device *dev)
> > +{
> > +	dev->xdp_features &= ~(NETDEV_XDP_ACT_NDO_XMIT |
> > +			       NETDEV_XDP_ACT_NDO_XMIT_SG);
> > +	call_netdevice_notifiers(NETDEV_XDP_FEAT_CHANGE, dev);
> > +}
> > +EXPORT_SYMBOL_GPL(xdp_features_clear_redirect_target);
> 

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux