Skip to content

Commit

Permalink
tgupdate: merge t/DO-NOT-MERGE-git-markup-end-common-net-net-next int…
Browse files Browse the repository at this point in the history
…o t/DO-NOT-MERGE-git-markup-net-next base

Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>

# Conflicts:
#	net/wireless/nl80211.c
  • Loading branch information
matttbe committed Mar 13, 2023
2 parents 11a1b7f + 51a9ea8 commit a95a213
Show file tree
Hide file tree
Showing 30 changed files with 290 additions and 145 deletions.
3 changes: 3 additions & 0 deletions .mailmap
Expand Up @@ -210,6 +210,9 @@ Jens Axboe <axboe@suse.de>
Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net>
Jessica Zhang <quic_jesszhan@quicinc.com> <jesszhan@codeaurora.org>
Jiri Pirko <jiri@resnulli.us> <jiri@nvidia.com>
Jiri Pirko <jiri@resnulli.us> <jiri@mellanox.com>
Jiri Pirko <jiri@resnulli.us> <jpirko@redhat.com>
Jiri Slaby <jirislaby@kernel.org> <jirislaby@gmail.com>
Jiri Slaby <jirislaby@kernel.org> <jslaby@novell.com>
Jiri Slaby <jirislaby@kernel.org> <jslaby@suse.com>
Expand Down
1 change: 1 addition & 0 deletions Documentation/netlink/specs/netdev.yaml
Expand Up @@ -9,6 +9,7 @@ definitions:
-
type: flags
name: xdp-act
render-max: true
entries:
-
name: basic
Expand Down
6 changes: 3 additions & 3 deletions MAINTAINERS
Expand Up @@ -5971,7 +5971,7 @@ F: include/linux/dm-*.h
F: include/uapi/linux/dm-*.h

DEVLINK
M: Jiri Pirko <jiri@nvidia.com>
M: Jiri Pirko <jiri@resnulli.us>
L: netdev@vger.kernel.org
S: Supported
F: Documentation/networking/devlink
Expand Down Expand Up @@ -15079,7 +15079,7 @@ F: Documentation/hwmon/nzxt-smart2.rst
F: drivers/hwmon/nzxt-smart2.c

OBJAGG
M: Jiri Pirko <jiri@nvidia.com>
M: Jiri Pirko <jiri@resnulli.us>
L: netdev@vger.kernel.org
S: Supported
F: include/linux/objagg.h
Expand Down Expand Up @@ -15853,7 +15853,7 @@ F: drivers/video/logo/logo_parisc*
F: include/linux/hp_sdc.h

PARMAN
M: Jiri Pirko <jiri@nvidia.com>
M: Jiri Pirko <jiri@resnulli.us>
L: netdev@vger.kernel.org
S: Supported
F: include/linux/parman.h
Expand Down
15 changes: 12 additions & 3 deletions drivers/net/ethernet/amazon/ena/ena_ethtool.c
Expand Up @@ -850,11 +850,20 @@ static int ena_set_channels(struct net_device *netdev,
struct ena_adapter *adapter = netdev_priv(netdev);
u32 count = channels->combined_count;
/* The check for max value is already done in ethtool */
if (count < ENA_MIN_NUM_IO_QUEUES ||
(ena_xdp_present(adapter) &&
!ena_xdp_legal_queue_count(adapter, count)))
if (count < ENA_MIN_NUM_IO_QUEUES)
return -EINVAL;

if (!ena_xdp_legal_queue_count(adapter, count)) {
if (ena_xdp_present(adapter))
return -EINVAL;

xdp_clear_features_flag(netdev);
} else {
xdp_set_features_flag(netdev,
NETDEV_XDP_ACT_BASIC |
NETDEV_XDP_ACT_REDIRECT);
}

return ena_update_queue_count(adapter, count);
}

Expand Down
6 changes: 4 additions & 2 deletions drivers/net/ethernet/amazon/ena/ena_netdev.c
Expand Up @@ -4105,8 +4105,6 @@ 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;
Expand Down Expand Up @@ -4393,6 +4391,10 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)

ena_config_debug_area(adapter);

if (ena_xdp_legal_queue_count(adapter, adapter->num_io_queues))
netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
NETDEV_XDP_ACT_REDIRECT;

memcpy(adapter->netdev->perm_addr, adapter->mac_addr, netdev->addr_len);

netif_carrier_off(netdev);
Expand Down
17 changes: 11 additions & 6 deletions drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c
Expand Up @@ -735,12 +735,17 @@ static int nicvf_set_channels(struct net_device *dev,
if (channel->tx_count > nic->max_queues)
return -EINVAL;

if (nic->xdp_prog &&
((channel->tx_count + channel->rx_count) > nic->max_queues)) {
netdev_err(nic->netdev,
"XDP mode, RXQs + TXQs > Max %d\n",
nic->max_queues);
return -EINVAL;
if (channel->tx_count + channel->rx_count > nic->max_queues) {
if (nic->xdp_prog) {
netdev_err(nic->netdev,
"XDP mode, RXQs + TXQs > Max %d\n",
nic->max_queues);
return -EINVAL;
}

xdp_clear_features_flag(nic->netdev);
} else if (!pass1_silicon(nic->pdev)) {
xdp_set_features_flag(dev, NETDEV_XDP_ACT_BASIC);
}

if (if_up)
Expand Down
4 changes: 3 additions & 1 deletion drivers/net/ethernet/cavium/thunder/nicvf_main.c
Expand Up @@ -2218,7 +2218,9 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
netdev->netdev_ops = &nicvf_netdev_ops;
netdev->watchdog_timeo = NICVF_TX_TIMEOUT;

netdev->xdp_features = NETDEV_XDP_ACT_BASIC;
if (!pass1_silicon(nic->pdev) &&
nic->rx_queues + nic->tx_queues <= nic->max_queues)
netdev->xdp_features = NETDEV_XDP_ACT_BASIC;

/* MTU range: 64 - 9200 */
netdev->min_mtu = NIC_HW_MIN_FRS;
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/intel/i40e/i40e_main.c
Expand Up @@ -15525,6 +15525,7 @@ static int i40e_init_recovery_mode(struct i40e_pf *pf, struct i40e_hw *hw)
int err;
int v_idx;

pci_set_drvdata(pf->pdev, pf);
pci_save_state(pf->pdev);

/* set up periodic task facility */
Expand Down
15 changes: 12 additions & 3 deletions drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
Expand Up @@ -4996,6 +4996,14 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)

for (i = 0; i < priv->port_count; i++) {
port = priv->port_list[i];
if (percpu && port->ntxqs >= num_possible_cpus() * 2)
xdp_set_features_flag(port->dev,
NETDEV_XDP_ACT_BASIC |
NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_NDO_XMIT);
else
xdp_clear_features_flag(port->dev);

mvpp2_swf_bm_pool_init(port);
if (status[i])
mvpp2_open(port->dev);
Expand Down Expand Up @@ -6871,13 +6879,14 @@ static int mvpp2_port_probe(struct platform_device *pdev,

if (!port->priv->percpu_pools)
mvpp2_set_hw_csum(port, port->pool_long->id);
else if (port->ntxqs >= num_possible_cpus() * 2)
dev->xdp_features = NETDEV_XDP_ACT_BASIC |
NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_NDO_XMIT;

dev->vlan_features |= features;
netif_set_tso_max_segs(dev, MVPP2_MAX_TSO_SEGS);

dev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_NDO_XMIT;

dev->priv_flags |= IFF_UNICAST_FLT;

/* MTU range: 68 - 9704 */
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/mellanox/mlx5/core/en.h
Expand Up @@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
void mlx5e_rx_dim_work(struct work_struct *work);
void mlx5e_tx_dim_work(struct work_struct *work);

void mlx5e_set_xdp_feature(struct net_device *netdev);
netdev_features_t mlx5e_features_check(struct sk_buff *skb,
struct net_device *netdev,
netdev_features_t features);
Expand Down
10 changes: 9 additions & 1 deletion drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
Expand Up @@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
struct mlx5e_priv *priv = netdev_priv(netdev);
struct mlx5_core_dev *mdev = priv->mdev;
struct mlx5e_params new_params;
int err;

if (enable) {
/* Checking the regular RQ here; mlx5e_validate_xsk_param called
Expand All @@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
mlx5e_set_rq_type(mdev, &new_params);

return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
if (err)
return err;

/* update XDP supported features */
mlx5e_set_xdp_feature(netdev);

return 0;
}

static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
Expand Down
37 changes: 26 additions & 11 deletions drivers/net/ethernet/mellanox/mlx5/core/en_main.c
Expand Up @@ -4004,6 +4004,25 @@ static int mlx5e_handle_feature(struct net_device *netdev,
return 0;
}

void mlx5e_set_xdp_feature(struct net_device *netdev)
{
struct mlx5e_priv *priv = netdev_priv(netdev);
struct mlx5e_params *params = &priv->channels.params;
xdp_features_t val;

if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
xdp_clear_features_flag(netdev);
return;
}

val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_XSK_ZEROCOPY |
NETDEV_XDP_ACT_NDO_XMIT;
if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC)
val |= NETDEV_XDP_ACT_RX_SG;
xdp_set_features_flag(netdev, val);
}

int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
{
netdev_features_t oper_features = features;
Expand All @@ -4030,6 +4049,9 @@ int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
return -EINVAL;
}

/* update XDP supported features */
mlx5e_set_xdp_feature(netdev);

return 0;
}

Expand Down Expand Up @@ -4761,13 +4783,6 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
if (old_prog)
bpf_prog_put(old_prog);

if (reset) {
if (prog)
xdp_features_set_redirect_target(netdev, true);
else
xdp_features_clear_redirect_target(netdev);
}

if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
goto unlock;

Expand Down Expand Up @@ -5163,13 +5178,10 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
netdev->features |= NETIF_F_HIGHDMA;
netdev->features |= NETIF_F_HW_VLAN_STAG_FILTER;

netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_XSK_ZEROCOPY |
NETDEV_XDP_ACT_RX_SG;

netdev->priv_flags |= IFF_UNICAST_FLT;

netif_set_tso_max_size(netdev, GSO_MAX_SIZE);
mlx5e_set_xdp_feature(netdev);
mlx5e_set_netdev_dev_addr(netdev);
mlx5e_macsec_build_netdev(priv);
mlx5e_ipsec_build_netdev(priv);
Expand Down Expand Up @@ -5241,6 +5253,9 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);

mlx5e_health_create_reporters(priv);
/* update XDP supported features */
mlx5e_set_xdp_feature(netdev);

return 0;
}

Expand Down
3 changes: 3 additions & 0 deletions drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
Expand Up @@ -747,6 +747,9 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
/* RQ */
mlx5e_build_rq_params(mdev, params);

/* update XDP supported features */
mlx5e_set_xdp_feature(netdev);

/* CQ moderation params */
params->rx_dim_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ipvlan/ipvlan_l3s.c
Expand Up @@ -101,6 +101,7 @@ static unsigned int ipvlan_nf_input(void *priv, struct sk_buff *skb,
goto out;

skb->dev = addr->master->dev;
skb->skb_iif = skb->dev->ifindex;
len = skb->len + ETH_HLEN;
ipvlan_count_rx(addr->master, len, true, false);
out:
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/phy/nxp-c45-tja11xx.c
Expand Up @@ -79,7 +79,7 @@
#define SGMII_ABILITY BIT(0)

#define VEND1_MII_BASIC_CONFIG 0xAFC6
#define MII_BASIC_CONFIG_REV BIT(8)
#define MII_BASIC_CONFIG_REV BIT(4)
#define MII_BASIC_CONFIG_SGMII 0x9
#define MII_BASIC_CONFIG_RGMII 0x7
#define MII_BASIC_CONFIG_RMII 0x5
Expand Down
42 changes: 38 additions & 4 deletions drivers/net/veth.c
Expand Up @@ -1257,6 +1257,26 @@ static int veth_enable_range_safe(struct net_device *dev, int start, int end)
return 0;
}

static void veth_set_xdp_features(struct net_device *dev)
{
struct veth_priv *priv = netdev_priv(dev);
struct net_device *peer;

peer = rcu_dereference(priv->peer);
if (peer && peer->real_num_tx_queues <= dev->real_num_rx_queues) {
xdp_features_t val = NETDEV_XDP_ACT_BASIC |
NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_RX_SG;

if (priv->_xdp_prog || veth_gro_requested(dev))
val |= NETDEV_XDP_ACT_NDO_XMIT |
NETDEV_XDP_ACT_NDO_XMIT_SG;
xdp_set_features_flag(dev, val);
} else {
xdp_clear_features_flag(dev);
}
}

static int veth_set_channels(struct net_device *dev,
struct ethtool_channels *ch)
{
Expand Down Expand Up @@ -1323,6 +1343,12 @@ static int veth_set_channels(struct net_device *dev,
if (peer)
netif_carrier_on(peer);
}

/* update XDP supported features */
veth_set_xdp_features(dev);
if (peer)
veth_set_xdp_features(peer);

return err;

revert:
Expand Down Expand Up @@ -1489,7 +1515,10 @@ static int veth_set_features(struct net_device *dev,
err = veth_napi_enable(dev);
if (err)
return err;

xdp_features_set_redirect_target(dev, true);
} else {
xdp_features_clear_redirect_target(dev);
veth_napi_del(dev);
}
return 0;
Expand Down Expand Up @@ -1570,10 +1599,15 @@ static int veth_xdp_set(struct net_device *dev, struct bpf_prog *prog,
peer->hw_features &= ~NETIF_F_GSO_SOFTWARE;
peer->max_mtu = max_mtu;
}

xdp_features_set_redirect_target(dev, true);
}

if (old_prog) {
if (!prog) {
if (!veth_gro_requested(dev))
xdp_features_clear_redirect_target(dev);

if (dev->flags & IFF_UP)
veth_disable_xdp(dev);

Expand Down Expand Up @@ -1686,10 +1720,6 @@ static void veth_setup(struct net_device *dev)
dev->hw_enc_features = VETH_FEATURES;
dev->mpls_features = NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE;
netif_set_tso_max_size(dev, GSO_MAX_SIZE);

dev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |
NETDEV_XDP_ACT_NDO_XMIT_SG;
}

/*
Expand Down Expand Up @@ -1857,6 +1887,10 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
goto err_queues;

veth_disable_gro(dev);
/* update XDP supported features */
veth_set_xdp_features(dev);
veth_set_xdp_features(peer);

return 0;

err_queues:
Expand Down

0 comments on commit a95a213

Please sign in to comment.