dpdk/drivers/net/fm10k/base/fm10k_pf.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright(c) 2013 - 2015 Intel Corporation
   3 */
   4
   5#ifndef _FM10K_PF_H_
   6#define _FM10K_PF_H_
   7
   8#include "fm10k_type.h"
   9#include "fm10k_common.h"
  10
  11bool fm10k_glort_valid_pf(struct fm10k_hw *hw, u16 glort);
  12u16 fm10k_queues_per_pool(struct fm10k_hw *hw);
  13u16 fm10k_vf_queue_index(struct fm10k_hw *hw, u16 vf_idx);
  14
  15enum fm10k_pf_tlv_msg_id_v1 {
  16        FM10K_PF_MSG_ID_TEST                    = 0x000, /* msg ID reserved */
  17        FM10K_PF_MSG_ID_XCAST_MODES             = 0x001,
  18        FM10K_PF_MSG_ID_UPDATE_MAC_FWD_RULE     = 0x002,
  19        FM10K_PF_MSG_ID_LPORT_MAP               = 0x100,
  20        FM10K_PF_MSG_ID_LPORT_CREATE            = 0x200,
  21        FM10K_PF_MSG_ID_LPORT_DELETE            = 0x201,
  22        FM10K_PF_MSG_ID_CONFIG                  = 0x300,
  23        FM10K_PF_MSG_ID_UPDATE_PVID             = 0x400,
  24        FM10K_PF_MSG_ID_CREATE_FLOW_TABLE       = 0x501,
  25        FM10K_PF_MSG_ID_DELETE_FLOW_TABLE       = 0x502,
  26        FM10K_PF_MSG_ID_UPDATE_FLOW             = 0x503,
  27        FM10K_PF_MSG_ID_DELETE_FLOW             = 0x504,
  28        FM10K_PF_MSG_ID_SET_FLOW_STATE          = 0x505,
  29        FM10K_PF_MSG_ID_GET_1588_INFO           = 0x506,
  30        FM10K_PF_MSG_ID_1588_TIMESTAMP          = 0x701,
  31        FM10K_PF_MSG_ID_1588_CLOCK_OWNER        = 0x702,
  32        FM10K_PF_MSG_ID_MASTER_CLK_OFFSET       = 0x703,
  33};
  34
  35enum fm10k_pf_tlv_attr_id_v1 {
  36        FM10K_PF_ATTR_ID_ERR                    = 0x00,
  37        FM10K_PF_ATTR_ID_LPORT_MAP              = 0x01,
  38        FM10K_PF_ATTR_ID_XCAST_MODE             = 0x02,
  39        FM10K_PF_ATTR_ID_MAC_UPDATE             = 0x03,
  40        FM10K_PF_ATTR_ID_VLAN_UPDATE            = 0x04,
  41        FM10K_PF_ATTR_ID_CONFIG                 = 0x05,
  42        FM10K_PF_ATTR_ID_CREATE_FLOW_TABLE      = 0x06,
  43        FM10K_PF_ATTR_ID_DELETE_FLOW_TABLE      = 0x07,
  44        FM10K_PF_ATTR_ID_UPDATE_FLOW            = 0x08,
  45        FM10K_PF_ATTR_ID_FLOW_STATE             = 0x09,
  46        FM10K_PF_ATTR_ID_FLOW_HANDLE            = 0x0A,
  47        FM10K_PF_ATTR_ID_DELETE_FLOW            = 0x0B,
  48        FM10K_PF_ATTR_ID_PORT                   = 0x0C,
  49        FM10K_PF_ATTR_ID_UPDATE_PVID            = 0x0D,
  50        FM10K_PF_ATTR_ID_1588_TIMESTAMP         = 0x10,
  51        FM10K_PF_ATTR_ID_1588_CLOCK_OWNER       = 0x12,
  52        FM10K_PF_ATTR_ID_MASTER_CLK_OFFSET      = 0x14,
  53};
  54
  55#define FM10K_MSG_LPORT_MAP_GLORT_SHIFT 0
  56#define FM10K_MSG_LPORT_MAP_GLORT_SIZE  16
  57#define FM10K_MSG_LPORT_MAP_MASK_SHIFT  16
  58#define FM10K_MSG_LPORT_MAP_MASK_SIZE   16
  59
  60#define FM10K_MSG_UPDATE_PVID_GLORT_SHIFT       0
  61#define FM10K_MSG_UPDATE_PVID_GLORT_SIZE        16
  62#define FM10K_MSG_UPDATE_PVID_PVID_SHIFT        16
  63#define FM10K_MSG_UPDATE_PVID_PVID_SIZE         16
  64
  65#define FM10K_MSG_ERR_PEP_NOT_SCHEDULED 280
  66
  67/* The following data structures are overlayed directly onto TLV mailbox
  68 * messages, and must not break 4 byte alignment. Ensure the structures line
  69 * up correctly as per their TLV definition.
  70 */
  71#ifdef C99
  72#pragma pack(push, 4)
  73#else
  74#pragma pack(4)
  75#endif /* C99 */
  76
  77struct fm10k_mac_update {
  78        __le32  mac_lower;
  79        __le16  mac_upper;
  80        __le16  vlan;
  81        __le16  glort;
  82        u8      flags;
  83        u8      action;
  84};
  85
  86struct fm10k_global_table_data {
  87        __le32  used;
  88        __le32  avail;
  89};
  90
  91struct fm10k_swapi_error {
  92        __le32                          status;
  93        struct fm10k_global_table_data  mac;
  94        struct fm10k_global_table_data  nexthop;
  95        struct fm10k_global_table_data  ffu;
  96};
  97
  98struct fm10k_swapi_1588_timestamp {
  99        __le64 egress;
 100        __le64 ingress;
 101        __le16 dglort;
 102        __le16 sglort;
 103};
 104
 105struct fm10k_swapi_1588_clock_owner {
 106        __le16 glort;
 107        __le16 enabled;
 108};
 109
 110#ifdef C99
 111#pragma pack(pop)
 112#else
 113#pragma pack()
 114#endif /* C99 */
 115
 116s32 fm10k_msg_lport_map_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
 117extern const struct fm10k_tlv_attr fm10k_lport_map_msg_attr[];
 118#define FM10K_PF_MSG_LPORT_MAP_HANDLER(func) \
 119        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_LPORT_MAP, \
 120                          fm10k_lport_map_msg_attr, func)
 121extern const struct fm10k_tlv_attr fm10k_update_pvid_msg_attr[];
 122#define FM10K_PF_MSG_UPDATE_PVID_HANDLER(func) \
 123        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_UPDATE_PVID, \
 124                          fm10k_update_pvid_msg_attr, func)
 125
 126s32 fm10k_msg_err_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
 127extern const struct fm10k_tlv_attr fm10k_err_msg_attr[];
 128#define FM10K_PF_MSG_ERR_HANDLER(msg, func) \
 129        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_##msg, fm10k_err_msg_attr, func)
 130
 131extern const struct fm10k_tlv_attr fm10k_1588_timestamp_msg_attr[];
 132#define FM10K_PF_MSG_1588_TIMESTAMP_HANDLER(func) \
 133        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_1588_TIMESTAMP, \
 134                          fm10k_1588_timestamp_msg_attr, func)
 135
 136s32 fm10k_msg_1588_clock_owner_pf(struct fm10k_hw *, u32 **,
 137                                  struct fm10k_mbx_info *);
 138extern const struct fm10k_tlv_attr fm10k_1588_clock_owner_attr[];
 139#define FM10K_PF_MSG_1588_CLOCK_OWNER_HANDLER(func) \
 140        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_1588_CLOCK_OWNER, \
 141                          fm10k_1588_clock_owner_attr, func)
 142
 143extern const struct fm10k_tlv_attr fm10k_master_clk_offset_attr[];
 144#define FM10K_PF_MSG_MASTER_CLK_OFFSET_HANDLER(func) \
 145        FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_MASTER_CLK_OFFSET, \
 146                          fm10k_master_clk_offset_attr, func)
 147
 148s32 fm10k_iov_msg_msix_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
 149s32 fm10k_iov_msg_mac_vlan_pf(struct fm10k_hw *, u32 **,
 150                              struct fm10k_mbx_info *);
 151s32 fm10k_iov_msg_lport_state_pf(struct fm10k_hw *, u32 **,
 152                                 struct fm10k_mbx_info *);
 153#ifndef NO_DEFAULT_SRIOV_MSG_HANDLERS
 154extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[];
 155#endif
 156
 157s32 fm10k_init_ops_pf(struct fm10k_hw *hw);
 158
 159void fm10k_update_hw_stats_pf(struct fm10k_hw *hw,
 160                                     struct fm10k_hw_stats *stats);
 161
 162void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw,
 163                                     struct fm10k_hw_stats *stats);
 164#endif /* _FM10K_PF_H */
 165