diff options
author | Jiri Pirko | 2019-06-19 08:41:06 +0200 |
---|---|---|
committer | David S. Miller | 2019-06-19 16:09:22 +0200 |
commit | ff5405f690865762887cbc73529976a7448738ee (patch) | |
tree | e4c86cfe4554651ceefd10be1dc6f5a0d88eb37c /drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h | |
parent | mlxsw: spectrum_acl: Write RX_ACL_SYSTEM_PORT acl element correctly (diff) | |
download | kernel-qcow2-linux-ff5405f690865762887cbc73529976a7448738ee.tar.gz kernel-qcow2-linux-ff5405f690865762887cbc73529976a7448738ee.tar.xz kernel-qcow2-linux-ff5405f690865762887cbc73529976a7448738ee.zip |
mlxsw: spectrum_acl: Avoid size check for RX_ACL_SYSTEM_PORT element
RX_ACL_SYSTEM_PORT is 8 bit but SRC_SYS_PORT is 16 bits. Internally,
SRC_SYS_PORT is used to carry the value. Relax the checker in case of
RX_ACL_SYSTEM_PORT and allow different size.
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h b/drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h index 78495826ff17..d99a70eec357 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h +++ b/drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h @@ -110,10 +110,11 @@ struct mlxsw_afk_element_inst { /* element instance in actual block */ int u32_key_diff; /* in case value needs to be adjusted before write * this diff is here to handle that */ + bool avoid_size_check; }; #define MLXSW_AFK_ELEMENT_INST(_type, _element, _offset, \ - _shift, _size, _u32_key_diff) \ + _shift, _size, _u32_key_diff, _avoid_size_check) \ { \ .info = &mlxsw_afk_element_infos[MLXSW_AFK_ELEMENT_##_element], \ .type = _type, \ @@ -124,20 +125,23 @@ struct mlxsw_afk_element_inst { /* element instance in actual block */ .name = #_element, \ }, \ .u32_key_diff = _u32_key_diff, \ + .avoid_size_check = _avoid_size_check, \ } #define MLXSW_AFK_ELEMENT_INST_U32(_element, _offset, _shift, _size) \ MLXSW_AFK_ELEMENT_INST(MLXSW_AFK_ELEMENT_TYPE_U32, \ - _element, _offset, _shift, _size, 0) + _element, _offset, _shift, _size, 0, false) #define MLXSW_AFK_ELEMENT_INST_EXT_U32(_element, _offset, \ - _shift, _size, _key_diff) \ + _shift, _size, _key_diff, \ + _avoid_size_check) \ MLXSW_AFK_ELEMENT_INST(MLXSW_AFK_ELEMENT_TYPE_U32, \ - _element, _offset, _shift, _size, _key_diff) + _element, _offset, _shift, _size, \ + _key_diff, _avoid_size_check) #define MLXSW_AFK_ELEMENT_INST_BUF(_element, _offset, _size) \ MLXSW_AFK_ELEMENT_INST(MLXSW_AFK_ELEMENT_TYPE_BUF, \ - _element, _offset, 0, _size, 0) + _element, _offset, 0, _size, 0, false) struct mlxsw_afk_block { u16 encoding; /* block ID */ |