Merge branch 'mlxsw-Misc-updates'
Ido Schimmel says: ==================== mlxsw: Misc updates This patch set includes various updates for mlxsw. Patches #1-#4 adjust the default burst size of packet trap policers to conform to Spectrum-{2,3} requirements. The corresponding selftest is also adjusted so that it could reliably pass on these platforms. Patch #5 adjusts a selftest so that it could pass with both old and new versions of mausezahn. Patch #6 significantly reduces the runtime of tc-police scale test by changing the preference and masks of the used tc filters. Patch #7 prevents the driver from trying to set invalid ethtool link modes. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
f6d89dc51e
|
@ -4174,7 +4174,6 @@ MLXSW_ITEM32(reg, ptys, an_status, 0x04, 28, 4);
|
|||
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_SGMII_100M BIT(0)
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_1000BASE_X_SGMII BIT(1)
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_2_5GBASE_X_2_5GMII BIT(2)
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_5GBASE_R BIT(3)
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_XFI_XAUI_1_10G BIT(4)
|
||||
#define MLXSW_REG_PTYS_EXT_ETH_SPEED_XLAUI_4_XLPPI_4_40G BIT(5)
|
||||
|
@ -4197,7 +4196,6 @@ MLXSW_ITEM32(reg, ptys, ext_eth_proto_cap, 0x08, 0, 32);
|
|||
#define MLXSW_REG_PTYS_ETH_SPEED_10GBASE_CX4 BIT(2)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KX4 BIT(3)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KR BIT(4)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_20GBASE_KR2 BIT(5)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_40GBASE_CR4 BIT(6)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_40GBASE_KR4 BIT(7)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_10GBASE_CR BIT(12)
|
||||
|
@ -4210,10 +4208,6 @@ MLXSW_ITEM32(reg, ptys, ext_eth_proto_cap, 0x08, 0, 32);
|
|||
#define MLXSW_REG_PTYS_ETH_SPEED_100GBASE_CR4 BIT(20)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_100GBASE_SR4 BIT(21)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_100GBASE_KR4 BIT(22)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_100GBASE_LR4_ER4 BIT(23)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_100BASE_TX BIT(24)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_100BASE_T BIT(25)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_10GBASE_T BIT(26)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_25GBASE_CR BIT(27)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_25GBASE_KR BIT(28)
|
||||
#define MLXSW_REG_PTYS_ETH_SPEED_25GBASE_SR BIT(29)
|
||||
|
|
|
@ -992,22 +992,12 @@ struct mlxsw_sp1_port_link_mode {
|
|||
};
|
||||
|
||||
static const struct mlxsw_sp1_port_link_mode mlxsw_sp1_port_link_mode[] = {
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_100BASE_T,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_100baseT_Full_BIT,
|
||||
.speed = SPEED_100,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_SGMII |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_1000BASE_KX,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_1000baseKX_Full_BIT,
|
||||
.speed = SPEED_1000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_10GBASE_T,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
|
||||
.speed = SPEED_10000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_10GBASE_CX4 |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KX4,
|
||||
|
@ -1022,11 +1012,6 @@ static const struct mlxsw_sp1_port_link_mode mlxsw_sp1_port_link_mode[] = {
|
|||
.mask_ethtool = ETHTOOL_LINK_MODE_10000baseKR_Full_BIT,
|
||||
.speed = SPEED_10000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_20GBASE_KR2,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT,
|
||||
.speed = SPEED_20000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_40GBASE_CR4,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT,
|
||||
|
@ -1092,11 +1077,6 @@ static const struct mlxsw_sp1_port_link_mode mlxsw_sp1_port_link_mode[] = {
|
|||
.mask_ethtool = ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT,
|
||||
.speed = SPEED_100000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_100GBASE_LR4_ER4,
|
||||
.mask_ethtool = ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT,
|
||||
.speed = SPEED_100000,
|
||||
},
|
||||
};
|
||||
|
||||
#define MLXSW_SP1_PORT_LINK_MODE_LEN ARRAY_SIZE(mlxsw_sp1_port_link_mode)
|
||||
|
@ -1236,14 +1216,6 @@ mlxsw_sp2_mask_ethtool_1000base_x_sgmii[] = {
|
|||
#define MLXSW_SP2_MASK_ETHTOOL_1000BASE_X_SGMII_LEN \
|
||||
ARRAY_SIZE(mlxsw_sp2_mask_ethtool_1000base_x_sgmii)
|
||||
|
||||
static const enum ethtool_link_mode_bit_indices
|
||||
mlxsw_sp2_mask_ethtool_2_5gbase_x_2_5gmii[] = {
|
||||
ETHTOOL_LINK_MODE_2500baseX_Full_BIT,
|
||||
};
|
||||
|
||||
#define MLXSW_SP2_MASK_ETHTOOL_2_5GBASE_X_2_5GMII_LEN \
|
||||
ARRAY_SIZE(mlxsw_sp2_mask_ethtool_2_5gbase_x_2_5gmii)
|
||||
|
||||
static const enum ethtool_link_mode_bit_indices
|
||||
mlxsw_sp2_mask_ethtool_5gbase_r[] = {
|
||||
ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
|
||||
|
@ -1407,16 +1379,6 @@ static const struct mlxsw_sp2_port_link_mode mlxsw_sp2_port_link_mode[] = {
|
|||
MLXSW_SP_PORT_MASK_WIDTH_8X,
|
||||
.speed = SPEED_1000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_EXT_ETH_SPEED_2_5GBASE_X_2_5GMII,
|
||||
.mask_ethtool = mlxsw_sp2_mask_ethtool_2_5gbase_x_2_5gmii,
|
||||
.m_ethtool_len = MLXSW_SP2_MASK_ETHTOOL_2_5GBASE_X_2_5GMII_LEN,
|
||||
.mask_width = MLXSW_SP_PORT_MASK_WIDTH_1X |
|
||||
MLXSW_SP_PORT_MASK_WIDTH_2X |
|
||||
MLXSW_SP_PORT_MASK_WIDTH_4X |
|
||||
MLXSW_SP_PORT_MASK_WIDTH_8X,
|
||||
.speed = SPEED_2500,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_EXT_ETH_SPEED_5GBASE_R,
|
||||
.mask_ethtool = mlxsw_sp2_mask_ethtool_5gbase_r,
|
||||
|
|
|
@ -291,7 +291,7 @@ static void mlxsw_sp_rx_sample_listener(struct sk_buff *skb, u8 local_port,
|
|||
static const struct mlxsw_sp_trap_policer_item
|
||||
mlxsw_sp_trap_policer_items_arr[] = {
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(1, 10 * 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(1, 10 * 1024, 4096),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(2, 128, 128),
|
||||
|
@ -303,25 +303,25 @@ mlxsw_sp_trap_policer_items_arr[] = {
|
|||
.policer = MLXSW_SP_TRAP_POLICER(4, 128, 128),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(5, 16 * 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(5, 16 * 1024, 8192),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(6, 128, 128),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(7, 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(7, 1024, 512),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(8, 20 * 1024, 1024),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(8, 20 * 1024, 8192),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(9, 128, 128),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(10, 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(10, 1024, 512),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(11, 360, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(11, 256, 128),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(12, 128, 128),
|
||||
|
@ -330,19 +330,19 @@ mlxsw_sp_trap_policer_items_arr[] = {
|
|||
.policer = MLXSW_SP_TRAP_POLICER(13, 128, 128),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(14, 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(14, 1024, 512),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(15, 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(15, 1024, 512),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(16, 24 * 1024, 4096),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(16, 24 * 1024, 16384),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(17, 19 * 1024, 4096),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(17, 19 * 1024, 8192),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(18, 1024, 128),
|
||||
.policer = MLXSW_SP_TRAP_POLICER(18, 1024, 512),
|
||||
},
|
||||
{
|
||||
.policer = MLXSW_SP_TRAP_POLICER(19, 1024, 512),
|
||||
|
|
|
@ -550,16 +550,6 @@ struct mlxsw_sx_port_link_mode {
|
|||
};
|
||||
|
||||
static const struct mlxsw_sx_port_link_mode mlxsw_sx_port_link_mode[] = {
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_100BASE_T,
|
||||
.supported = SUPPORTED_100baseT_Full,
|
||||
.advertised = ADVERTISED_100baseT_Full,
|
||||
.speed = 100,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_100BASE_TX,
|
||||
.speed = 100,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_SGMII |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_1000BASE_KX,
|
||||
|
@ -567,12 +557,6 @@ static const struct mlxsw_sx_port_link_mode mlxsw_sx_port_link_mode[] = {
|
|||
.advertised = ADVERTISED_1000baseKX_Full,
|
||||
.speed = 1000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_10GBASE_T,
|
||||
.supported = SUPPORTED_10000baseT_Full,
|
||||
.advertised = ADVERTISED_10000baseT_Full,
|
||||
.speed = 10000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_10GBASE_CX4 |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KX4,
|
||||
|
@ -589,12 +573,6 @@ static const struct mlxsw_sx_port_link_mode mlxsw_sx_port_link_mode[] = {
|
|||
.advertised = ADVERTISED_10000baseKR_Full,
|
||||
.speed = 10000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_20GBASE_KR2,
|
||||
.supported = SUPPORTED_20000baseKR2_Full,
|
||||
.advertised = ADVERTISED_20000baseKR2_Full,
|
||||
.speed = 20000,
|
||||
},
|
||||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_40GBASE_CR4,
|
||||
.supported = SUPPORTED_40000baseCR4_Full,
|
||||
|
@ -634,8 +612,7 @@ static const struct mlxsw_sx_port_link_mode mlxsw_sx_port_link_mode[] = {
|
|||
{
|
||||
.mask = MLXSW_REG_PTYS_ETH_SPEED_100GBASE_CR4 |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_100GBASE_SR4 |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_100GBASE_KR4 |
|
||||
MLXSW_REG_PTYS_ETH_SPEED_100GBASE_LR4_ER4,
|
||||
MLXSW_REG_PTYS_ETH_SPEED_100GBASE_KR4,
|
||||
.speed = 100000,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -207,7 +207,7 @@ __rate_test()
|
|||
|
||||
RET=0
|
||||
|
||||
devlink trap policer set $DEVLINK_DEV policer $id rate 1000 burst 16
|
||||
devlink trap policer set $DEVLINK_DEV policer $id rate 1000 burst 512
|
||||
devlink trap group set $DEVLINK_DEV group l3_drops policer $id
|
||||
|
||||
# Send packets at highest possible rate and make sure they are dropped
|
||||
|
@ -220,8 +220,8 @@ __rate_test()
|
|||
|
||||
rate=$(trap_rate_get)
|
||||
pct=$((100 * (rate - 1000) / 1000))
|
||||
((-5 <= pct && pct <= 5))
|
||||
check_err $? "Expected rate 1000 pps, got $rate pps, which is $pct% off. Required accuracy is +-5%"
|
||||
((-10 <= pct && pct <= 10))
|
||||
check_err $? "Expected rate 1000 pps, got $rate pps, which is $pct% off. Required accuracy is +-10%"
|
||||
log_info "Expected rate 1000 pps, measured rate $rate pps"
|
||||
|
||||
drop_rate=$(policer_drop_rate_get $id)
|
||||
|
@ -288,35 +288,12 @@ __burst_test()
|
|||
|
||||
RET=0
|
||||
|
||||
devlink trap policer set $DEVLINK_DEV policer $id rate 1000 burst 32
|
||||
devlink trap policer set $DEVLINK_DEV policer $id rate 1000 burst 512
|
||||
devlink trap group set $DEVLINK_DEV group l3_drops policer $id
|
||||
|
||||
# Send a burst of 64 packets and make sure that about 32 are received
|
||||
# and the rest are dropped by the policer
|
||||
log_info "=== Tx burst size: 64, Policer burst size: 32 pps ==="
|
||||
|
||||
t0_rx=$(devlink_trap_rx_packets_get blackhole_route)
|
||||
t0_drop=$(devlink_trap_policer_rx_dropped_get $id)
|
||||
|
||||
start_traffic $h1 192.0.2.1 198.51.100.100 $rp1_mac -c 64
|
||||
|
||||
t1_rx=$(devlink_trap_rx_packets_get blackhole_route)
|
||||
t1_drop=$(devlink_trap_policer_rx_dropped_get $id)
|
||||
|
||||
rx=$((t1_rx - t0_rx))
|
||||
pct=$((100 * (rx - 32) / 32))
|
||||
((-20 <= pct && pct <= 20))
|
||||
check_err $? "Expected burst size of 32 packets, got $rx packets, which is $pct% off. Required accuracy is +-20%"
|
||||
log_info "Expected burst size of 32 packets, measured burst size of $rx packets"
|
||||
|
||||
drop=$((t1_drop - t0_drop))
|
||||
(( drop > 0 ))
|
||||
check_err $? "Expected non-zero policer drops, got 0"
|
||||
log_info "Measured policer drops of $drop packets"
|
||||
|
||||
# Send a burst of 16 packets and make sure that 16 are received
|
||||
# and that none are dropped by the policer
|
||||
log_info "=== Tx burst size: 16, Policer burst size: 32 pps ==="
|
||||
log_info "=== Tx burst size: 16, Policer burst size: 512 ==="
|
||||
|
||||
t0_rx=$(devlink_trap_rx_packets_get blackhole_route)
|
||||
t0_drop=$(devlink_trap_policer_rx_dropped_get $id)
|
||||
|
|
|
@ -24,6 +24,13 @@ tc_police_switch_destroy()
|
|||
simple_if_fini $swp1
|
||||
}
|
||||
|
||||
tc_police_addr()
|
||||
{
|
||||
local num=$1; shift
|
||||
|
||||
printf "2001:db8:1::%x" $num
|
||||
}
|
||||
|
||||
tc_police_rules_create()
|
||||
{
|
||||
local count=$1; shift
|
||||
|
@ -34,8 +41,9 @@ tc_police_rules_create()
|
|||
for ((i = 0; i < count; ++i)); do
|
||||
cat >> $TC_POLICE_BATCH_FILE <<-EOF
|
||||
filter add dev $swp1 ingress \
|
||||
prot ip \
|
||||
flower skip_sw \
|
||||
prot ipv6 \
|
||||
pref 1000 \
|
||||
flower skip_sw dst_ip $(tc_police_addr $i) \
|
||||
action police rate 10mbit burst 100k \
|
||||
conform-exceed drop/ok
|
||||
EOF
|
||||
|
|
|
@ -31,7 +31,7 @@ mirror_test()
|
|||
|
||||
local t0=$(tc_rule_stats_get $dev $pref)
|
||||
$MZ $vrf_name ${sip:+-A $sip} -B $dip -a own -b bc -q \
|
||||
-c 10 -d 100ms -t icmp type=8
|
||||
-c 10 -d 100msec -t icmp type=8
|
||||
sleep 0.5
|
||||
local t1=$(tc_rule_stats_get $dev $pref)
|
||||
local delta=$((t1 - t0))
|
||||
|
|
Loading…
Reference in a new issue