Skip to content

Commit 8f9b051

Browse files
Jiri Pirkokuba-moo
authored andcommitted
mlxsw: reg: Add Management DownStream Device Tunneling Register
The MDDT register allows to deliver query and request messages (PRM registers, commands) to a DownStream device. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 4da0eb2 commit 8f9b051

File tree

1 file changed

+90
-0
lines changed
  • drivers/net/ethernet/mellanox/mlxsw

1 file changed

+90
-0
lines changed

drivers/net/ethernet/mellanox/mlxsw/reg.h

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11364,6 +11364,95 @@ mlxsw_reg_mbct_unpack(const char *payload, u8 *p_slot_index,
1136411364
*p_fsm_state = mlxsw_reg_mbct_fsm_state_get(payload);
1136511365
}
1136611366

11367+
/* MDDT - Management DownStream Device Tunneling Register
11368+
* ------------------------------------------------------
11369+
* This register allows to deliver query and request messages (PRM registers,
11370+
* commands) to a DownStream device.
11371+
*/
11372+
#define MLXSW_REG_MDDT_ID 0x9160
11373+
#define MLXSW_REG_MDDT_LEN 0x110
11374+
11375+
MLXSW_REG_DEFINE(mddt, MLXSW_REG_MDDT_ID, MLXSW_REG_MDDT_LEN);
11376+
11377+
/* reg_mddt_slot_index
11378+
* Slot index.
11379+
* Access: Index
11380+
*/
11381+
MLXSW_ITEM32(reg, mddt, slot_index, 0x00, 8, 4);
11382+
11383+
/* reg_mddt_device_index
11384+
* Device index.
11385+
* Access: Index
11386+
*/
11387+
MLXSW_ITEM32(reg, mddt, device_index, 0x00, 0, 8);
11388+
11389+
/* reg_mddt_read_size
11390+
* Read size in D-Words.
11391+
* Access: OP
11392+
*/
11393+
MLXSW_ITEM32(reg, mddt, read_size, 0x04, 24, 8);
11394+
11395+
/* reg_mddt_write_size
11396+
* Write size in D-Words.
11397+
* Access: OP
11398+
*/
11399+
MLXSW_ITEM32(reg, mddt, write_size, 0x04, 16, 8);
11400+
11401+
enum mlxsw_reg_mddt_status {
11402+
MLXSW_REG_MDDT_STATUS_OK,
11403+
};
11404+
11405+
/* reg_mddt_status
11406+
* Return code of the Downstream Device to the register that was sent.
11407+
* Access: RO
11408+
*/
11409+
MLXSW_ITEM32(reg, mddt, status, 0x0C, 24, 8);
11410+
11411+
enum mlxsw_reg_mddt_method {
11412+
MLXSW_REG_MDDT_METHOD_QUERY,
11413+
MLXSW_REG_MDDT_METHOD_WRITE,
11414+
};
11415+
11416+
/* reg_mddt_method
11417+
* Access: OP
11418+
*/
11419+
MLXSW_ITEM32(reg, mddt, method, 0x0C, 22, 2);
11420+
11421+
/* reg_mddt_register_id
11422+
* Access: Index
11423+
*/
11424+
MLXSW_ITEM32(reg, mddt, register_id, 0x0C, 0, 16);
11425+
11426+
#define MLXSW_REG_MDDT_PAYLOAD_OFFSET 0x0C
11427+
#define MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN 4
11428+
11429+
static inline char *mlxsw_reg_mddt_inner_payload(char *payload)
11430+
{
11431+
return payload + MLXSW_REG_MDDT_PAYLOAD_OFFSET +
11432+
MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN;
11433+
}
11434+
11435+
static inline void mlxsw_reg_mddt_pack(char *payload, u8 slot_index,
11436+
u8 device_index,
11437+
enum mlxsw_reg_mddt_method method,
11438+
const struct mlxsw_reg_info *reg,
11439+
char **inner_payload)
11440+
{
11441+
int len = reg->len + MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN;
11442+
11443+
if (WARN_ON(len + MLXSW_REG_MDDT_PAYLOAD_OFFSET > MLXSW_REG_MDDT_LEN))
11444+
len = MLXSW_REG_MDDT_LEN - MLXSW_REG_MDDT_PAYLOAD_OFFSET;
11445+
11446+
MLXSW_REG_ZERO(mddt, payload);
11447+
mlxsw_reg_mddt_slot_index_set(payload, slot_index);
11448+
mlxsw_reg_mddt_device_index_set(payload, device_index);
11449+
mlxsw_reg_mddt_method_set(payload, method);
11450+
mlxsw_reg_mddt_register_id_set(payload, reg->id);
11451+
mlxsw_reg_mddt_read_size_set(payload, len / 4);
11452+
mlxsw_reg_mddt_write_size_set(payload, len / 4);
11453+
*inner_payload = mlxsw_reg_mddt_inner_payload(payload);
11454+
}
11455+
1136711456
/* MDDQ - Management DownStream Device Query Register
1136811457
* --------------------------------------------------
1136911458
* This register allows to query the DownStream device properties. The desired
@@ -12943,6 +13032,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
1294313032
MLXSW_REG(mfgd),
1294413033
MLXSW_REG(mgpir),
1294513034
MLXSW_REG(mbct),
13035+
MLXSW_REG(mddt),
1294613036
MLXSW_REG(mddq),
1294713037
MLXSW_REG(mddc),
1294813038
MLXSW_REG(mfde),

0 commit comments

Comments
 (0)