Skip to content

Commit 0b4f5ad

Browse files
committed
Merge branch 'mlx5-fixes'
Tariq Toukan says: ==================== mlx5 fixes 24-05-22 This patchset provides bug fixes to mlx5 core and Eth drivers. Series generated against: commit 9c91c7f ("net: mana: Fix the extra HZ in mana_hwc_send_request") ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 128d54f + 83fea49 commit 0b4f5ad

File tree

9 files changed

+43
-25
lines changed

9 files changed

+43
-25
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,14 @@ static inline void
102102
mlx5e_udp_gso_handle_tx_skb(struct sk_buff *skb)
103103
{
104104
int payload_len = skb_shinfo(skb)->gso_size + sizeof(struct udphdr);
105+
struct udphdr *udphdr;
105106

106-
udp_hdr(skb)->len = htons(payload_len);
107+
if (skb->encapsulation)
108+
udphdr = (struct udphdr *)skb_inner_transport_header(skb);
109+
else
110+
udphdr = udp_hdr(skb);
111+
112+
udphdr->len = htons(payload_len);
107113
}
108114

109115
struct mlx5e_accel_tx_state {

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,7 @@ static int rx_create(struct mlx5_core_dev *mdev, struct mlx5e_ipsec *ipsec,
750750
err_fs_ft:
751751
if (rx->allow_tunnel_mode)
752752
mlx5_eswitch_unblock_encap(mdev);
753-
mlx5_del_flow_rules(rx->status.rule);
754-
mlx5_modify_header_dealloc(mdev, rx->status.modify_hdr);
753+
mlx5_ipsec_rx_status_destroy(ipsec, rx);
755754
err_add:
756755
mlx5_destroy_flow_table(rx->ft.status);
757756
err_fs_ft_status:

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,11 @@ mlx5e_ipsec_feature_check(struct sk_buff *skb, netdev_features_t features)
9797
if (!x || !x->xso.offload_handle)
9898
goto out_disable;
9999

100-
if (xo->inner_ipproto) {
101-
/* Cannot support tunnel packet over IPsec tunnel mode
102-
* because we cannot offload three IP header csum
103-
*/
104-
if (x->props.mode == XFRM_MODE_TUNNEL)
105-
goto out_disable;
106-
107-
/* Only support UDP or TCP L4 checksum */
108-
if (xo->inner_ipproto != IPPROTO_UDP &&
109-
xo->inner_ipproto != IPPROTO_TCP)
110-
goto out_disable;
111-
}
100+
/* Only support UDP or TCP L4 checksum */
101+
if (xo->inner_ipproto &&
102+
xo->inner_ipproto != IPPROTO_UDP &&
103+
xo->inner_ipproto != IPPROTO_TCP)
104+
goto out_disable;
112105

113106
return features;
114107

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3886,7 +3886,7 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
38863886
mlx5e_fold_sw_stats64(priv, stats);
38873887
}
38883888

3889-
stats->rx_dropped = priv->stats.qcnt.rx_out_of_buffer;
3889+
stats->rx_missed_errors = priv->stats.qcnt.rx_out_of_buffer;
38903890

38913891
stats->rx_length_errors =
38923892
PPORT_802_3_GET(pstats, a_in_range_length_errors) +

drivers/net/ethernet/mellanox/mlx5/core/en_stats.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,9 @@ void mlx5e_stats_ts_get(struct mlx5e_priv *priv,
11861186
ts_stats->err = 0;
11871187
ts_stats->lost = 0;
11881188

1189+
if (!ptp)
1190+
goto out;
1191+
11891192
/* Aggregate stats across all TCs */
11901193
for (i = 0; i < ptp->num_tc; i++) {
11911194
struct mlx5e_ptp_cq_stats *stats =
@@ -1214,6 +1217,7 @@ void mlx5e_stats_ts_get(struct mlx5e_priv *priv,
12141217
}
12151218
}
12161219

1220+
out:
12171221
mutex_unlock(&priv->state_lock);
12181222
}
12191223

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,11 @@ mlx5e_tx_get_gso_ihs(struct mlx5e_txqsq *sq, struct sk_buff *skb, int *hopbyhop)
153153

154154
*hopbyhop = 0;
155155
if (skb->encapsulation) {
156-
ihs = skb_inner_tcp_all_headers(skb);
156+
if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4)
157+
ihs = skb_inner_transport_offset(skb) +
158+
sizeof(struct udphdr);
159+
else
160+
ihs = skb_inner_tcp_all_headers(skb);
157161
stats->tso_inner_packets++;
158162
stats->tso_inner_bytes += skb->len - ihs;
159163
} else {

drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,7 @@ bool mlx5_lag_check_prereq(struct mlx5_lag *ldev)
719719
struct mlx5_core_dev *dev;
720720
u8 mode;
721721
#endif
722+
bool roce_support;
722723
int i;
723724

724725
for (i = 0; i < ldev->ports; i++)
@@ -743,6 +744,11 @@ bool mlx5_lag_check_prereq(struct mlx5_lag *ldev)
743744
if (mlx5_sriov_is_enabled(ldev->pf[i].dev))
744745
return false;
745746
#endif
747+
roce_support = mlx5_get_roce_state(ldev->pf[MLX5_LAG_P1].dev);
748+
for (i = 1; i < ldev->ports; i++)
749+
if (mlx5_get_roce_state(ldev->pf[i].dev) != roce_support)
750+
return false;
751+
746752
return true;
747753
}
748754

@@ -910,8 +916,10 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
910916
} else if (roce_lag) {
911917
dev0->priv.flags &= ~MLX5_PRIV_FLAGS_DISABLE_IB_ADEV;
912918
mlx5_rescan_drivers_locked(dev0);
913-
for (i = 1; i < ldev->ports; i++)
914-
mlx5_nic_vport_enable_roce(ldev->pf[i].dev);
919+
for (i = 1; i < ldev->ports; i++) {
920+
if (mlx5_get_roce_state(ldev->pf[i].dev))
921+
mlx5_nic_vport_enable_roce(ldev->pf[i].dev);
922+
}
915923
} else if (shared_fdb) {
916924
int i;
917925

drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,6 @@ static bool ft_create_alias_supported(struct mlx5_core_dev *dev)
100100

101101
static bool mlx5_sd_is_supported(struct mlx5_core_dev *dev, u8 host_buses)
102102
{
103-
/* Feature is currently implemented for PFs only */
104-
if (!mlx5_core_is_pf(dev))
105-
return false;
106-
107103
/* Honor the SW implementation limit */
108104
if (host_buses > MLX5_SD_MAX_GROUP_SZ)
109105
return false;
@@ -162,6 +158,14 @@ static int sd_init(struct mlx5_core_dev *dev)
162158
bool sdm;
163159
int err;
164160

161+
/* Feature is currently implemented for PFs only */
162+
if (!mlx5_core_is_pf(dev))
163+
return 0;
164+
165+
/* Block on embedded CPU PFs */
166+
if (mlx5_core_is_ecpf(dev))
167+
return 0;
168+
165169
if (!MLX5_CAP_MCAM_REG(dev, mpir))
166170
return 0;
167171

include/linux/mlx5/mlx5_ifc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10308,9 +10308,9 @@ struct mlx5_ifc_mcam_access_reg_bits {
1030810308
u8 mfrl[0x1];
1030910309
u8 regs_39_to_32[0x8];
1031010310

10311-
u8 regs_31_to_10[0x16];
10311+
u8 regs_31_to_11[0x15];
1031210312
u8 mtmp[0x1];
10313-
u8 regs_8_to_0[0x9];
10313+
u8 regs_9_to_0[0xa];
1031410314
};
1031510315

1031610316
struct mlx5_ifc_mcam_access_reg_bits1 {

0 commit comments

Comments
 (0)