forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
....@@ -611,7 +611,7 @@
611611 }
612612
613613 #define MLX4_LINK_MODES_SZ \
614
- (FIELD_SIZEOF(struct mlx4_ptys_reg, eth_proto_cap) * 8)
614
+ (sizeof_field(struct mlx4_ptys_reg, eth_proto_cap) * 8)
615615
616616 enum ethtool_report {
617617 SUPPORTED = 0,
....@@ -639,7 +639,7 @@
639639 #define MLX4_BUILD_PTYS2ETHTOOL_CONFIG(reg_, speed_, ...) \
640640 ({ \
641641 struct ptys2ethtool_config *cfg; \
642
- const unsigned int modes[] = { __VA_ARGS__ }; \
642
+ static const unsigned int modes[] = { __VA_ARGS__ }; \
643643 unsigned int i; \
644644 cfg = &ptys2ethtool_map[reg_]; \
645645 cfg->speed = speed_; \
....@@ -1106,6 +1106,24 @@
11061106 return err;
11071107 }
11081108
1109
+static void mlx4_en_get_pause_stats(struct net_device *dev,
1110
+ struct ethtool_pause_stats *stats)
1111
+{
1112
+ struct mlx4_en_priv *priv = netdev_priv(dev);
1113
+ struct bitmap_iterator it;
1114
+
1115
+ bitmap_iterator_init(&it, priv->stats_bitmap.bitmap, NUM_ALL_STATS);
1116
+
1117
+ spin_lock_bh(&priv->stats_lock);
1118
+ if (test_bit(FLOW_PRIORITY_STATS_IDX_TX_FRAMES,
1119
+ priv->stats_bitmap.bitmap))
1120
+ stats->tx_pause_frames = priv->tx_flowstats.tx_pause;
1121
+ if (test_bit(FLOW_PRIORITY_STATS_IDX_RX_FRAMES,
1122
+ priv->stats_bitmap.bitmap))
1123
+ stats->rx_pause_frames = priv->rx_flowstats.rx_pause;
1124
+ spin_unlock_bh(&priv->stats_lock);
1125
+}
1126
+
11091127 static void mlx4_en_get_pauseparam(struct net_device *dev,
11101128 struct ethtool_pauseparam *pause)
11111129 {
....@@ -1235,7 +1253,6 @@
12351253 struct mlx4_en_priv *priv = netdev_priv(dev);
12361254 u32 n = mlx4_en_get_rxfh_indir_size(dev);
12371255 u32 i, rss_rings;
1238
- int err = 0;
12391256
12401257 rss_rings = priv->prof->rss_rings ?: n;
12411258 rss_rings = rounddown_pow_of_two(rss_rings);
....@@ -1249,7 +1266,7 @@
12491266 memcpy(key, priv->rss_key, MLX4_EN_RSS_KEY_SIZE);
12501267 if (hfunc)
12511268 *hfunc = priv->rss_hash_fn;
1252
- return err;
1269
+ return 0;
12531270 }
12541271
12551272 static int mlx4_en_set_rxfh(struct net_device *dev, const u32 *ring_index,
....@@ -1393,7 +1410,6 @@
13931410 struct mlx4_spec_list *spec_l2,
13941411 unsigned char *mac)
13951412 {
1396
- int err = 0;
13971413 __be64 mac_msk = cpu_to_be64(MLX4_MAC_MASK << 16);
13981414
13991415 spec_l2->id = MLX4_NET_TRANS_RULE_ID_ETH;
....@@ -1408,7 +1424,7 @@
14081424
14091425 list_add_tail(&spec_l2->list, rule_list_h);
14101426
1411
- return err;
1427
+ return 0;
14121428 }
14131429
14141430 static int mlx4_en_ethtool_add_mac_rule_by_ipv4(struct mlx4_en_priv *priv,
....@@ -2083,7 +2099,7 @@
20832099 en_err(priv,
20842100 "mlx4_get_module_info i(%d) offset(%d) bytes_to_read(%d) - FAILED (0x%x)\n",
20852101 i, offset, ee->len - i, ret);
2086
- return 0;
2102
+ return ret;
20872103 }
20882104
20892105 i += ret;
....@@ -2119,6 +2135,10 @@
21192135 }
21202136
21212137 const struct ethtool_ops mlx4_en_ethtool_ops = {
2138
+ .supported_coalesce_params = ETHTOOL_COALESCE_USECS |
2139
+ ETHTOOL_COALESCE_MAX_FRAMES |
2140
+ ETHTOOL_COALESCE_TX_MAX_FRAMES_IRQ |
2141
+ ETHTOOL_COALESCE_PKT_RATE_RX_USECS,
21222142 .get_drvinfo = mlx4_en_get_drvinfo,
21232143 .get_link_ksettings = mlx4_en_get_link_ksettings,
21242144 .set_link_ksettings = mlx4_en_set_link_ksettings,
....@@ -2134,6 +2154,7 @@
21342154 .set_msglevel = mlx4_en_set_msglevel,
21352155 .get_coalesce = mlx4_en_get_coalesce,
21362156 .set_coalesce = mlx4_en_set_coalesce,
2157
+ .get_pause_stats = mlx4_en_get_pause_stats,
21372158 .get_pauseparam = mlx4_en_get_pauseparam,
21382159 .set_pauseparam = mlx4_en_set_pauseparam,
21392160 .get_ringparam = mlx4_en_get_ringparam,