Merge branch 'net-mlx5-misc-changes-2025-07-09'
Tariq Toukan says: ==================== net/mlx5: misc changes 2025-07-09 This series contains misc enhancements to the mlx5 driver. ==================== Link: https://patch.msgid.link/1752009387-13300-1-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -383,7 +383,6 @@ enum {
|
||||
MLX5E_SQ_STATE_RECOVERING,
|
||||
MLX5E_SQ_STATE_IPSEC,
|
||||
MLX5E_SQ_STATE_DIM,
|
||||
MLX5E_SQ_STATE_VLAN_NEED_L2_INLINE,
|
||||
MLX5E_SQ_STATE_PENDING_XSK_TX,
|
||||
MLX5E_SQ_STATE_PENDING_TLS_RX_RESYNC,
|
||||
MLX5E_NUM_SQ_STATES, /* Must be kept last */
|
||||
|
||||
@@ -340,8 +340,6 @@ static int mlx5e_ptp_alloc_txqsq(struct mlx5e_ptp *c, int txq_ix,
|
||||
sq->stats = &c->priv->ptp_stats.sq[tc];
|
||||
sq->ptpsq = ptpsq;
|
||||
INIT_WORK(&sq->recover_work, mlx5e_tx_err_cqe_work);
|
||||
if (!MLX5_CAP_ETH(mdev, wqe_vlan_insert))
|
||||
set_bit(MLX5E_SQ_STATE_VLAN_NEED_L2_INLINE, &sq->state);
|
||||
sq->stop_room = param->stop_room;
|
||||
sq->ptp_cyc2time = mlx5_sq_ts_translator(mdev);
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ static const char * const sq_sw_state_type_name[] = {
|
||||
[MLX5E_SQ_STATE_RECOVERING] = "recovering",
|
||||
[MLX5E_SQ_STATE_IPSEC] = "ipsec",
|
||||
[MLX5E_SQ_STATE_DIM] = "dim",
|
||||
[MLX5E_SQ_STATE_VLAN_NEED_L2_INLINE] = "vlan_need_l2_inline",
|
||||
[MLX5E_SQ_STATE_PENDING_XSK_TX] = "pending_xsk_tx",
|
||||
[MLX5E_SQ_STATE_PENDING_TLS_RX_RESYNC] = "pending_tls_rx_resync",
|
||||
};
|
||||
|
||||
@@ -571,8 +571,6 @@ void mlx5e_rx_res_channels_activate(struct mlx5e_rx_res *res, struct mlx5e_chann
|
||||
|
||||
for (ix = 0; ix < nch; ix++)
|
||||
mlx5e_rx_res_channel_activate_direct(res, chs, ix);
|
||||
for (ix = nch; ix < res->max_nch; ix++)
|
||||
mlx5e_rx_res_channel_deactivate_direct(res, ix);
|
||||
|
||||
if (res->features & MLX5E_RX_RES_FEATURE_PTP) {
|
||||
u32 rqn;
|
||||
@@ -595,7 +593,7 @@ void mlx5e_rx_res_channels_deactivate(struct mlx5e_rx_res *res)
|
||||
|
||||
mlx5e_rx_res_rss_disable(res);
|
||||
|
||||
for (ix = 0; ix < res->max_nch; ix++)
|
||||
for (ix = 0; ix < res->rss_nch; ix++)
|
||||
mlx5e_rx_res_channel_deactivate_direct(res, ix);
|
||||
|
||||
if (res->features & MLX5E_RX_RES_FEATURE_PTP) {
|
||||
|
||||
@@ -94,29 +94,30 @@ mlx5e_tc_act_vlan_add_push_action(struct mlx5e_priv *priv,
|
||||
struct net_device **out_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct net_device *vlan_dev = *out_dev;
|
||||
struct flow_action_entry vlan_act = {
|
||||
.id = FLOW_ACTION_VLAN_PUSH,
|
||||
.vlan.vid = vlan_dev_vlan_id(vlan_dev),
|
||||
.vlan.proto = vlan_dev_vlan_proto(vlan_dev),
|
||||
.vlan.prio = 0,
|
||||
};
|
||||
int err;
|
||||
do {
|
||||
struct net_device *vlan_dev = *out_dev;
|
||||
struct flow_action_entry vlan_act = {
|
||||
.id = FLOW_ACTION_VLAN_PUSH,
|
||||
.vlan.vid = vlan_dev_vlan_id(vlan_dev),
|
||||
.vlan.proto = vlan_dev_vlan_proto(vlan_dev),
|
||||
.vlan.prio = 0,
|
||||
};
|
||||
int err;
|
||||
|
||||
err = parse_tc_vlan_action(priv, &vlan_act, attr->esw_attr, &attr->action, extack, NULL);
|
||||
if (err)
|
||||
return err;
|
||||
err = parse_tc_vlan_action(priv, &vlan_act, attr->esw_attr,
|
||||
&attr->action, extack, NULL);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
rcu_read_lock();
|
||||
*out_dev = dev_get_by_index_rcu(dev_net(vlan_dev), dev_get_iflink(vlan_dev));
|
||||
rcu_read_unlock();
|
||||
if (!*out_dev)
|
||||
return -ENODEV;
|
||||
rcu_read_lock();
|
||||
*out_dev = dev_get_by_index_rcu(dev_net(vlan_dev),
|
||||
dev_get_iflink(vlan_dev));
|
||||
rcu_read_unlock();
|
||||
if (!*out_dev)
|
||||
return -ENODEV;
|
||||
} while (is_vlan_dev(*out_dev));
|
||||
|
||||
if (is_vlan_dev(*out_dev))
|
||||
err = mlx5e_tc_act_vlan_add_push_action(priv, attr, out_dev, extack);
|
||||
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@@ -1195,6 +1195,7 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft,
|
||||
struct flow_action_entry *meta_action;
|
||||
unsigned long cookie = flow->cookie;
|
||||
struct mlx5_ct_entry *entry;
|
||||
bool has_nat;
|
||||
int err;
|
||||
|
||||
meta_action = mlx5_tc_ct_get_ct_metadata_action(flow_rule);
|
||||
@@ -1236,6 +1237,8 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft,
|
||||
err = mlx5_tc_ct_rule_to_tuple_nat(&entry->tuple_nat, flow_rule);
|
||||
if (err)
|
||||
goto err_set;
|
||||
has_nat = memcmp(&entry->tuple, &entry->tuple_nat,
|
||||
sizeof(entry->tuple));
|
||||
|
||||
spin_lock_bh(&ct_priv->ht_lock);
|
||||
|
||||
@@ -1244,7 +1247,7 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft,
|
||||
if (err)
|
||||
goto err_entries;
|
||||
|
||||
if (memcmp(&entry->tuple, &entry->tuple_nat, sizeof(entry->tuple))) {
|
||||
if (has_nat) {
|
||||
err = rhashtable_lookup_insert_fast(&ct_priv->ct_tuples_nat_ht,
|
||||
&entry->tuple_nat_node,
|
||||
tuples_nat_ht_params);
|
||||
|
||||
@@ -1677,8 +1677,6 @@ static int mlx5e_alloc_txqsq(struct mlx5e_channel *c,
|
||||
sq->hw_mtu = MLX5E_SW2HW_MTU(params, params->sw_mtu);
|
||||
sq->max_sq_mpw_wqebbs = mlx5e_get_max_sq_aligned_wqebbs(mdev);
|
||||
INIT_WORK(&sq->recover_work, mlx5e_tx_err_cqe_work);
|
||||
if (!MLX5_CAP_ETH(mdev, wqe_vlan_insert))
|
||||
set_bit(MLX5E_SQ_STATE_VLAN_NEED_L2_INLINE, &sq->state);
|
||||
if (mlx5_ipsec_device_caps(c->priv->mdev))
|
||||
set_bit(MLX5E_SQ_STATE_IPSEC, &sq->state);
|
||||
if (param->is_mpw)
|
||||
|
||||
@@ -256,8 +256,7 @@ mlx5e_tx_wqe_inline_mode(struct mlx5e_txqsq *sq, struct sk_buff *skb,
|
||||
|
||||
mode = sq->min_inline_mode;
|
||||
|
||||
if (skb_vlan_tag_present(skb) &&
|
||||
test_bit(MLX5E_SQ_STATE_VLAN_NEED_L2_INLINE, &sq->state))
|
||||
if (skb_vlan_tag_present(skb))
|
||||
mode = max_t(u8, MLX5_INLINE_MODE_L2, mode);
|
||||
|
||||
return mode;
|
||||
@@ -483,12 +482,6 @@ mlx5e_sq_xmit_wqe(struct mlx5e_txqsq *sq, struct sk_buff *skb,
|
||||
}
|
||||
eseg->inline_hdr.sz |= cpu_to_be16(ihs);
|
||||
dseg += wqe_attr->ds_cnt_inl;
|
||||
} else if (skb_vlan_tag_present(skb)) {
|
||||
eseg->insert.type = cpu_to_be16(MLX5_ETH_WQE_INSERT_VLAN);
|
||||
if (skb->vlan_proto == cpu_to_be16(ETH_P_8021AD))
|
||||
eseg->insert.type |= cpu_to_be16(MLX5_ETH_WQE_SVLAN);
|
||||
eseg->insert.vlan_tci = cpu_to_be16(skb_vlan_tag_get(skb));
|
||||
stats->added_vlan_packets++;
|
||||
}
|
||||
|
||||
dseg += wqe_attr->ds_cnt_ids;
|
||||
|
||||
@@ -378,6 +378,9 @@ err_create_cq:
|
||||
mlx5_free_bfreg(mdev, &sq->bfreg);
|
||||
err_alloc_bfreg:
|
||||
kfree(sq);
|
||||
|
||||
if (mdev->wc_state == MLX5_WC_STATE_UNSUPPORTED)
|
||||
mlx5_core_warn(mdev, "Write combining is not supported\n");
|
||||
}
|
||||
|
||||
bool mlx5_wc_support_get(struct mlx5_core_dev *mdev)
|
||||
|
||||
Reference in New Issue
Block a user