dpdk/drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
   2 *
   3 * Copyright 2013-2016 Freescale Semiconductor Inc.
   4 * Copyright 2018-2019 NXP
   5 *
   6 */
   7#ifndef _FSL_DPDMUX_CMD_H
   8#define _FSL_DPDMUX_CMD_H
   9
  10/* DPDMUX Version */
  11#define DPDMUX_VER_MAJOR                6
  12#define DPDMUX_VER_MINOR                3
  13
  14#define DPDMUX_CMD_BASE_VERSION         1
  15#define DPDMUX_CMD_VERSION_2            2
  16#define DPDMUX_CMD_ID_OFFSET            4
  17
  18#define DPDMUX_CMD(id)  (((id) << DPDMUX_CMD_ID_OFFSET) |\
  19                                DPDMUX_CMD_BASE_VERSION)
  20#define DPDMUX_CMD_V2(id) (((id) << DPDMUX_CMD_ID_OFFSET) | \
  21                                DPDMUX_CMD_VERSION_2)
  22
  23/* Command IDs */
  24#define DPDMUX_CMDID_CLOSE                      DPDMUX_CMD(0x800)
  25#define DPDMUX_CMDID_OPEN                       DPDMUX_CMD(0x806)
  26#define DPDMUX_CMDID_CREATE                     DPDMUX_CMD(0x906)
  27#define DPDMUX_CMDID_DESTROY                    DPDMUX_CMD(0x986)
  28#define DPDMUX_CMDID_GET_API_VERSION            DPDMUX_CMD(0xa06)
  29
  30#define DPDMUX_CMDID_ENABLE                     DPDMUX_CMD(0x002)
  31#define DPDMUX_CMDID_DISABLE                    DPDMUX_CMD(0x003)
  32#define DPDMUX_CMDID_GET_ATTR                   DPDMUX_CMD(0x004)
  33#define DPDMUX_CMDID_RESET                      DPDMUX_CMD(0x005)
  34#define DPDMUX_CMDID_IS_ENABLED                 DPDMUX_CMD(0x006)
  35
  36#define DPDMUX_CMDID_SET_MAX_FRAME_LENGTH       DPDMUX_CMD(0x0a1)
  37
  38#define DPDMUX_CMDID_UL_RESET_COUNTERS          DPDMUX_CMD(0x0a3)
  39
  40#define DPDMUX_CMDID_IF_SET_ACCEPTED_FRAMES     DPDMUX_CMD(0x0a7)
  41#define DPDMUX_CMDID_IF_GET_ATTR                DPDMUX_CMD(0x0a8)
  42#define DPDMUX_CMDID_IF_ENABLE                  DPDMUX_CMD(0x0a9)
  43#define DPDMUX_CMDID_IF_DISABLE                 DPDMUX_CMD(0x0aa)
  44
  45#define DPDMUX_CMDID_IF_ADD_L2_RULE             DPDMUX_CMD(0x0b0)
  46#define DPDMUX_CMDID_IF_REMOVE_L2_RULE          DPDMUX_CMD(0x0b1)
  47#define DPDMUX_CMDID_IF_GET_COUNTER             DPDMUX_CMD(0x0b2)
  48#define DPDMUX_CMDID_IF_SET_LINK_CFG            DPDMUX_CMD_V2(0x0b3)
  49#define DPDMUX_CMDID_IF_GET_LINK_STATE          DPDMUX_CMD_V2(0x0b4)
  50
  51#define DPDMUX_CMDID_SET_CUSTOM_KEY             DPDMUX_CMD(0x0b5)
  52#define DPDMUX_CMDID_ADD_CUSTOM_CLS_ENTRY       DPDMUX_CMD(0x0b6)
  53#define DPDMUX_CMDID_REMOVE_CUSTOM_CLS_ENTRY    DPDMUX_CMD(0x0b7)
  54
  55#define DPDMUX_CMDID_IF_SET_DEFAULT             DPDMUX_CMD(0x0b8)
  56#define DPDMUX_CMDID_IF_GET_DEFAULT             DPDMUX_CMD(0x0b9)
  57
  58#define DPDMUX_MASK(field)        \
  59        GENMASK(DPDMUX_##field##_SHIFT + DPDMUX_##field##_SIZE - 1, \
  60                DPDMUX_##field##_SHIFT)
  61#define dpdmux_set_field(var, field, val) \
  62        ((var) |= (((val) << DPDMUX_##field##_SHIFT) & DPDMUX_MASK(field)))
  63#define dpdmux_get_field(var, field)      \
  64        (((var) & DPDMUX_MASK(field)) >> DPDMUX_##field##_SHIFT)
  65
  66#pragma pack(push, 1)
  67struct dpdmux_cmd_open {
  68        uint32_t dpdmux_id;
  69};
  70
  71struct dpdmux_cmd_create {
  72        uint8_t method;
  73        uint8_t manip;
  74        uint16_t num_ifs;
  75        uint32_t pad;
  76
  77        uint16_t adv_max_dmat_entries;
  78        uint16_t adv_max_mc_groups;
  79        uint16_t adv_max_vlan_ids;
  80        uint16_t pad1;
  81
  82        uint64_t options;
  83};
  84
  85struct dpdmux_cmd_destroy {
  86        uint32_t dpdmux_id;
  87};
  88
  89#define DPDMUX_ENABLE_SHIFT     0
  90#define DPDMUX_ENABLE_SIZE      1
  91#define DPDMUX_IS_DEFAULT_SHIFT         1
  92#define DPDMUX_IS_DEFAULT_SIZE          1
  93
  94struct dpdmux_rsp_is_enabled {
  95        uint8_t en;
  96};
  97
  98struct dpdmux_rsp_get_attr {
  99        uint8_t method;
 100        uint8_t manip;
 101        uint16_t num_ifs;
 102        uint16_t mem_size;
 103        uint16_t pad;
 104
 105        uint64_t pad1;
 106
 107        uint32_t id;
 108        uint32_t pad2;
 109
 110        uint64_t options;
 111};
 112
 113struct dpdmux_cmd_set_max_frame_length {
 114        uint16_t max_frame_length;
 115};
 116
 117#define DPDMUX_ACCEPTED_FRAMES_TYPE_SHIFT       0
 118#define DPDMUX_ACCEPTED_FRAMES_TYPE_SIZE        4
 119#define DPDMUX_UNACCEPTED_FRAMES_ACTION_SHIFT   4
 120#define DPDMUX_UNACCEPTED_FRAMES_ACTION_SIZE    4
 121
 122struct dpdmux_cmd_if_set_accepted_frames {
 123        uint16_t if_id;
 124        uint8_t frames_options;
 125};
 126
 127struct dpdmux_cmd_if {
 128        uint16_t if_id;
 129};
 130
 131struct dpdmux_rsp_if_get_attr {
 132        uint8_t pad[3];
 133        uint8_t enabled;
 134        uint8_t pad1[3];
 135        uint8_t accepted_frames_type;
 136        uint32_t rate;
 137};
 138
 139struct dpdmux_cmd_if_l2_rule {
 140        uint16_t if_id;
 141        uint8_t mac_addr5;
 142        uint8_t mac_addr4;
 143        uint8_t mac_addr3;
 144        uint8_t mac_addr2;
 145        uint8_t mac_addr1;
 146        uint8_t mac_addr0;
 147
 148        uint32_t pad;
 149        uint16_t vlan_id;
 150};
 151
 152struct dpdmux_cmd_if_get_counter {
 153        uint16_t if_id;
 154        uint8_t counter_type;
 155};
 156
 157struct dpdmux_rsp_if_get_counter {
 158        uint64_t pad;
 159        uint64_t counter;
 160};
 161
 162struct dpdmux_cmd_if_set_link_cfg {
 163        uint16_t if_id;
 164        uint16_t pad[3];
 165
 166        uint32_t rate;
 167        uint32_t pad1;
 168
 169        uint64_t options;
 170        uint64_t advertising;
 171};
 172
 173struct dpdmux_cmd_if_get_link_state {
 174        uint16_t if_id;
 175};
 176
 177#define DPDMUX_UP_SHIFT                         0
 178#define DPDMUX_UP_SIZE                          1
 179#define DPDMUX_STATE_VALID_SHIFT        1
 180#define DPDMUX_STATE_VALID_SIZE         1
 181struct dpdmux_rsp_if_get_link_state {
 182        uint32_t pad;
 183        uint8_t up;
 184        uint8_t pad1[3];
 185
 186        uint32_t rate;
 187        uint32_t pad2;
 188
 189        uint64_t options;
 190        uint64_t supported;
 191        uint64_t advertising;
 192};
 193
 194struct dpdmux_rsp_get_api_version {
 195        uint16_t major;
 196        uint16_t minor;
 197};
 198
 199struct dpdmux_set_custom_key {
 200        uint64_t pad[6];
 201        uint64_t key_cfg_iova;
 202};
 203
 204struct dpdmux_cmd_add_custom_cls_entry {
 205        uint8_t pad[3];
 206        uint8_t key_size;
 207        uint16_t pad1;
 208        uint16_t dest_if;
 209        uint64_t key_iova;
 210        uint64_t mask_iova;
 211};
 212
 213struct dpdmux_cmd_remove_custom_cls_entry {
 214        uint8_t pad[3];
 215        uint8_t key_size;
 216        uint32_t pad1;
 217        uint64_t key_iova;
 218        uint64_t mask_iova;
 219};
 220#pragma pack(pop)
 221#endif /* _FSL_DPDMUX_CMD_H */
 222