Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* Copyright(c) 2013 - 2018 Intel Corporation. */
0003 
0004 #ifndef _FM10K_PF_H_
0005 #define _FM10K_PF_H_
0006 
0007 #include "fm10k_type.h"
0008 #include "fm10k_common.h"
0009 
0010 bool fm10k_glort_valid_pf(struct fm10k_hw *hw, u16 glort);
0011 u16 fm10k_queues_per_pool(struct fm10k_hw *hw);
0012 u16 fm10k_vf_queue_index(struct fm10k_hw *hw, u16 vf_idx);
0013 
0014 enum fm10k_pf_tlv_msg_id_v1 {
0015     FM10K_PF_MSG_ID_TEST            = 0x000, /* msg ID reserved */
0016     FM10K_PF_MSG_ID_XCAST_MODES     = 0x001,
0017     FM10K_PF_MSG_ID_UPDATE_MAC_FWD_RULE = 0x002,
0018     FM10K_PF_MSG_ID_LPORT_MAP       = 0x100,
0019     FM10K_PF_MSG_ID_LPORT_CREATE        = 0x200,
0020     FM10K_PF_MSG_ID_LPORT_DELETE        = 0x201,
0021     FM10K_PF_MSG_ID_CONFIG          = 0x300,
0022     FM10K_PF_MSG_ID_UPDATE_PVID     = 0x400,
0023     FM10K_PF_MSG_ID_CREATE_FLOW_TABLE   = 0x501,
0024     FM10K_PF_MSG_ID_DELETE_FLOW_TABLE   = 0x502,
0025     FM10K_PF_MSG_ID_UPDATE_FLOW     = 0x503,
0026     FM10K_PF_MSG_ID_DELETE_FLOW     = 0x504,
0027     FM10K_PF_MSG_ID_SET_FLOW_STATE      = 0x505,
0028 };
0029 
0030 enum fm10k_pf_tlv_attr_id_v1 {
0031     FM10K_PF_ATTR_ID_ERR            = 0x00,
0032     FM10K_PF_ATTR_ID_LPORT_MAP      = 0x01,
0033     FM10K_PF_ATTR_ID_XCAST_MODE     = 0x02,
0034     FM10K_PF_ATTR_ID_MAC_UPDATE     = 0x03,
0035     FM10K_PF_ATTR_ID_VLAN_UPDATE        = 0x04,
0036     FM10K_PF_ATTR_ID_CONFIG         = 0x05,
0037     FM10K_PF_ATTR_ID_CREATE_FLOW_TABLE  = 0x06,
0038     FM10K_PF_ATTR_ID_DELETE_FLOW_TABLE  = 0x07,
0039     FM10K_PF_ATTR_ID_UPDATE_FLOW        = 0x08,
0040     FM10K_PF_ATTR_ID_FLOW_STATE     = 0x09,
0041     FM10K_PF_ATTR_ID_FLOW_HANDLE        = 0x0A,
0042     FM10K_PF_ATTR_ID_DELETE_FLOW        = 0x0B,
0043     FM10K_PF_ATTR_ID_PORT           = 0x0C,
0044     FM10K_PF_ATTR_ID_UPDATE_PVID        = 0x0D,
0045 };
0046 
0047 #define FM10K_MSG_LPORT_MAP_GLORT_SHIFT 0
0048 #define FM10K_MSG_LPORT_MAP_GLORT_SIZE  16
0049 #define FM10K_MSG_LPORT_MAP_MASK_SHIFT  16
0050 #define FM10K_MSG_LPORT_MAP_MASK_SIZE   16
0051 
0052 #define FM10K_MSG_UPDATE_PVID_GLORT_SHIFT   0
0053 #define FM10K_MSG_UPDATE_PVID_GLORT_SIZE    16
0054 #define FM10K_MSG_UPDATE_PVID_PVID_SHIFT    16
0055 #define FM10K_MSG_UPDATE_PVID_PVID_SIZE     16
0056 
0057 #define FM10K_MSG_ERR_PEP_NOT_SCHEDULED 280
0058 
0059 /* The following data structures are overlayed directly onto TLV mailbox
0060  * messages, and must not break 4 byte alignment. Ensure the structures line
0061  * up correctly as per their TLV definition.
0062  */
0063 
0064 struct fm10k_mac_update {
0065     __le32  mac_lower;
0066     __le16  mac_upper;
0067     __le16  vlan;
0068     __le16  glort;
0069     u8  flags;
0070     u8  action;
0071 } __aligned(4) __packed;
0072 
0073 struct fm10k_global_table_data {
0074     __le32  used;
0075     __le32  avail;
0076 } __aligned(4) __packed;
0077 
0078 struct fm10k_swapi_error {
0079     __le32              status;
0080     struct fm10k_global_table_data  mac;
0081     struct fm10k_global_table_data  nexthop;
0082     struct fm10k_global_table_data  ffu;
0083 } __aligned(4) __packed;
0084 
0085 s32 fm10k_msg_lport_map_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
0086 extern const struct fm10k_tlv_attr fm10k_lport_map_msg_attr[];
0087 #define FM10K_PF_MSG_LPORT_MAP_HANDLER(func) \
0088     FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_LPORT_MAP, \
0089               fm10k_lport_map_msg_attr, func)
0090 extern const struct fm10k_tlv_attr fm10k_update_pvid_msg_attr[];
0091 #define FM10K_PF_MSG_UPDATE_PVID_HANDLER(func) \
0092     FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_UPDATE_PVID, \
0093               fm10k_update_pvid_msg_attr, func)
0094 
0095 s32 fm10k_msg_err_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
0096 extern const struct fm10k_tlv_attr fm10k_err_msg_attr[];
0097 #define FM10K_PF_MSG_ERR_HANDLER(msg, func) \
0098     FM10K_MSG_HANDLER(FM10K_PF_MSG_ID_##msg, fm10k_err_msg_attr, func)
0099 
0100 s32 fm10k_iov_select_vid(struct fm10k_vf_info *vf_info, u16 vid);
0101 s32 fm10k_iov_msg_msix_pf(struct fm10k_hw *, u32 **, struct fm10k_mbx_info *);
0102 s32 fm10k_iov_msg_mac_vlan_pf(struct fm10k_hw *, u32 **,
0103                   struct fm10k_mbx_info *);
0104 s32 fm10k_iov_msg_lport_state_pf(struct fm10k_hw *, u32 **,
0105                  struct fm10k_mbx_info *);
0106 
0107 extern const struct fm10k_info fm10k_pf_info;
0108 #endif /* _FM10K_PF_H */