Daniel Borkmann says:
authorJakub Kicinski <kuba@kernel.org>
Sat, 11 Feb 2023 01:51:27 +0000 (17:51 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 Feb 2023 01:51:27 +0000 (17:51 -0800)
====================
pull-request: bpf-next 2023-02-11

We've added 96 non-merge commits during the last 14 day(s) which contain
a total of 152 files changed, 4884 insertions(+), 962 deletions(-).

There is a minor conflict in drivers/net/ethernet/intel/ice/ice_main.c
between commit 5b246e533d01 ("ice: split probe into smaller functions")
from the net-next tree and commit 66c0e13ad236 ("drivers: net: turn on
XDP features") from the bpf-next tree. Remove the hunk given ice_cfg_netdev()
is otherwise there a 2nd time, and add XDP features to the existing
ice_cfg_netdev() one:

        [...]
        ice_set_netdev_features(netdev);
        netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
                               NETDEV_XDP_ACT_XSK_ZEROCOPY;
        ice_set_ops(netdev);
        [...]

Stephen's merge conflict mail:
https://lore.kernel.org/bpf/20230207101951.21a114fa@canb.auug.org.au/

The main changes are:

1) Add support for BPF trampoline on s390x which finally allows to remove many
   test cases from the BPF CI's DENYLIST.s390x, from Ilya Leoshkevich.

2) Add multi-buffer XDP support to ice driver, from Maciej Fijalkowski.

3) Add capability to export the XDP features supported by the NIC.
   Along with that, add a XDP compliance test tool,
   from Lorenzo Bianconi & Marek Majtyka.

4) Add __bpf_kfunc tag for marking kernel functions as kfuncs,
   from David Vernet.

5) Add a deep dive documentation about the verifier's register
   liveness tracking algorithm, from Eduard Zingerman.

6) Fix and follow-up cleanups for resolve_btfids to be compiled
   as a host program to avoid cross compile issues,
   from Jiri Olsa & Ian Rogers.

7) Batch of fixes to the BPF selftest for xdp_hw_metadata which resulted
   when testing on different NICs, from Jesper Dangaard Brouer.

8) Fix libbpf to better detect kernel version code on Debian, from Hao Xiang.

9) Extend libbpf to add an option for when the perf buffer should
   wake up, from Jon Doron.

10) Follow-up fix on xdp_metadata selftest to just consume on TX
    completion, from Stanislav Fomichev.

11) Extend the kfuncs.rst document with description on kfunc
    lifecycle & stability expectations, from David Vernet.

12) Fix bpftool prog profile to skip attaching to offline CPUs,
    from Tonghao Zhang.

====================

Link: https://lore.kernel.org/r/20230211002037.8489-1-daniel@iogearbox.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
22 files changed:
1  2 
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/freescale/enetc/enetc_pf.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/ice/ice_ethtool.c
drivers/net/ethernet/intel/ice/ice_lib.c
drivers/net/ethernet/intel/ice/ice_main.c
drivers/net/ethernet/intel/igb/igb_main.c
drivers/net/ethernet/intel/igc/igc_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/marvell/mvneta.c
drivers/net/ethernet/mediatek/mtk_eth_soc.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/tun.c
drivers/net/virtio_net.c
include/linux/netdevice.h
kernel/bpf/btf.c
kernel/trace/bpf_trace.c
net/bpf/test_run.c
net/core/dev.c
net/core/xdp.c

@@@ -4510,116 -4619,6 +4526,118 @@@ static int ice_register_netdev(struct i
                return -EIO;
  
        err = register_netdev(vsi->netdev);
 +      if (err)
 +              return err;
 +
 +      set_bit(ICE_VSI_NETDEV_REGISTERED, vsi->state);
 +      netif_carrier_off(vsi->netdev);
 +      netif_tx_stop_all_queues(vsi->netdev);
 +
 +      return 0;
 +}
 +
 +static void ice_unregister_netdev(struct ice_vsi *vsi)
 +{
 +      if (!vsi || !vsi->netdev)
 +              return;
 +
 +      unregister_netdev(vsi->netdev);
 +      clear_bit(ICE_VSI_NETDEV_REGISTERED, vsi->state);
 +}
 +
 +/**
 + * ice_cfg_netdev - Allocate, configure and register a netdev
 + * @vsi: the VSI associated with the new netdev
 + *
 + * Returns 0 on success, negative value on failure
 + */
 +static int ice_cfg_netdev(struct ice_vsi *vsi)
 +{
 +      struct ice_netdev_priv *np;
 +      struct net_device *netdev;
 +      u8 mac_addr[ETH_ALEN];
 +
 +      netdev = alloc_etherdev_mqs(sizeof(*np), vsi->alloc_txq,
 +                                  vsi->alloc_rxq);
 +      if (!netdev)
 +              return -ENOMEM;
 +
 +      set_bit(ICE_VSI_NETDEV_ALLOCD, vsi->state);
 +      vsi->netdev = netdev;
 +      np = netdev_priv(netdev);
 +      np->vsi = vsi;
 +
 +      ice_set_netdev_features(netdev);
++      netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
++                             NETDEV_XDP_ACT_XSK_ZEROCOPY;
 +      ice_set_ops(netdev);
 +
 +      if (vsi->type == ICE_VSI_PF) {
 +              SET_NETDEV_DEV(netdev, ice_pf_to_dev(vsi->back));
 +              ether_addr_copy(mac_addr, vsi->port_info->mac.perm_addr);
 +              eth_hw_addr_set(netdev, mac_addr);
 +      }
 +
 +      netdev->priv_flags |= IFF_UNICAST_FLT;
 +
 +      /* Setup netdev TC information */
 +      ice_vsi_cfg_netdev_tc(vsi, vsi->tc_cfg.ena_tc);
 +
 +      netdev->max_mtu = ICE_MAX_MTU;
 +
 +      return 0;
 +}
 +
 +static void ice_decfg_netdev(struct ice_vsi *vsi)
 +{
 +      clear_bit(ICE_VSI_NETDEV_ALLOCD, vsi->state);
 +      free_netdev(vsi->netdev);
 +      vsi->netdev = NULL;
 +}
 +
 +static int ice_start_eth(struct ice_vsi *vsi)
 +{
 +      int err;
 +
 +      err = ice_init_mac_fltr(vsi->back);
 +      if (err)
 +              return err;
 +
 +      rtnl_lock();
 +      err = ice_vsi_open(vsi);
 +      rtnl_unlock();
 +
 +      return err;
 +}
 +
 +static int ice_init_eth(struct ice_pf *pf)
 +{
 +      struct ice_vsi *vsi = ice_get_main_vsi(pf);
 +      int err;
 +
 +      if (!vsi)
 +              return -EINVAL;
 +
 +      /* init channel list */
 +      INIT_LIST_HEAD(&vsi->ch_list);
 +
 +      err = ice_cfg_netdev(vsi);
 +      if (err)
 +              return err;
 +      /* Setup DCB netlink interface */
 +      ice_dcbnl_setup(vsi);
 +
 +      err = ice_init_mac_fltr(pf);
 +      if (err)
 +              goto err_init_mac_fltr;
 +
 +      err = ice_devlink_create_pf_port(pf);
 +      if (err)
 +              goto err_devlink_create_pf_port;
 +
 +      SET_NETDEV_DEVLINK_PORT(vsi->netdev, &pf->devlink_port);
 +
 +      err = ice_register_netdev(vsi);
        if (err)
                goto err_register_netdev;
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
diff --cc net/core/xdp.c
Simple merge