lm_vf_common.h revision d14abf155341d55053c76eeec58b787a456b753b
#ifndef _LM_VF_COMMON_H
#define _LM_VF_COMMON_H
#include "lm_defs.h"
#define ELEM_OF_RES_ARRAY_SIZE_IN_BYTES (sizeof(u32_t))
/* VF functions*/
/* Description:
*/
/*=================================CHANNEL_VF===========================================*/
#define LM_FW_VF_DHC_QZONE_ID(_vf_info, _q_zone_id) ((_vf_info)->vf_chains[(_q_zone_id)].fw_qzone_id)
#define LM_VF_Q_ID_TO_PF_CID(_pdev,_vf_info, _q_id) ((((1 << LM_VF_MAX_RVFID_SIZE) | (_vf_info)->abs_vf_id) << LM_VF_CID_WND_SIZE(_pdev)) | (_q_id))
typedef struct _lm_pf_vf_response_t
{
#define PF_VF_RESPONSE_FLAG_OFFSET 16
#define VF_PF_UNKNOWN_STATE 0
#define VF_PF_WAIT_FOR_START_REQUEST 1
#define VF_PF_WAIT_FOR_NEXT_CHUNK_OF_REQUEST 2
#define VF_PF_REQUEST_IN_PROCESSING 3
#define VF_PF_RESPONSE_READY 4
void * request_virt_addr;
void * response_virt_addr;
}
typedef struct _lm_vf_location_t
{
}
typedef struct _lm_vf_stats_t
{
struct per_queue_stats *pf_fw_stats_virt_data;
void *mirror_stats_fw;
#define VF_STATS_NONE 0
#define VF_STATS_REQ_SUBMITTED 1
#define VF_STATS_REQ_IN_PROCESSING 2
#define VF_STATS_REQ_READY 3
#define VF_STATS_COLLECT_FW_STATS_FOR_PF 0x01
#define VF_STATS_COLLECT_FW_STATS_FOR_VF 0x02
}
typedef struct _lm_vf_slowpath_data_t
{
struct eth_rss_update_ramrod_data * rss_rdata;
}
typedef struct _lm_vf_slowpath_info_t {
struct ecore_rss_config_obj rss_conf_obj;
volatile u32_t sp_rss_state;
struct ecore_config_rss_params rss_params;
typedef struct _lm_vf_chain_info_t
{
struct tpa_update_ramrod_data*
}
typedef struct _lm_vf_tpa_info_t
{
volatile u32_t ramrod_recv_cnt; // Number of ramrods received.Decrement by using Interlockeddecrement.
}
typedef struct _lm_vf_info_t
{
#define VF_VPORT_STATE_DELETED 0
#define VF_VPORT_STATE_CREATED 1
#define VF_VPORT_STATE_RESET 2
#define VF_VPORT_STATE_REJECTED 3
#define PF_SI_WAIT_FOR_ACQUIRING_REQUEST 0
#define PF_SI_ACQUIRED 1
#define PF_SI_VF_INITIALIZED 2
#define VPORT_INT_MOD_UNDEFINED 0
#define VPORT_INT_MOD_ADAPTIVE 1
#define VPORT_INT_MOD_OFF 2
#define VPORT_INT_MOD_LOW 100
#define VPORT_INT_MOD_MEDIUM 200
#define VPORT_INT_MOD_HIGH 300
void * um_ctx;
}
typedef struct _lm_vfs_set_t
{
void * req_resp_virt_addr;
void * pf_fw_stats_set_virt_data;
void * rss_update_virt_addr;
}
#define RX_Q_VALIDATE 0x01
#define TX_Q_VALIDATE 0x02
typedef enum {
typedef enum {
lm_status_t lm_pf_notify_standard_request_ready(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t * set_done);
lm_status_t lm_vf_pf_update_rss(struct _lm_device_t *pdev, void * cookie, u32_t rss_flags, u8_t rss_result_mask, u8_t * ind_table, u32_t * rss_key);
lm_status_t lm_pf_init_vf_client_init_data(struct _lm_device_t *pf_dev, lm_vf_info_t *vf_info, u8_t q_id,
struct sw_vf_pf_rxq_params * rxq_params,
struct sw_vf_pf_txq_params * txq_params);
lm_status_t lm_pf_init_vf_non_def_sb(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t sb_idx, u64 sb_addr);
//struct _lm_vf_pf_message_t * lm_vf_pf_channel_get_message_to_send(struct _lm_device_t * pdev, u8 opcode);
//lm_status_t lm_vf_pf_channel_send(struct _lm_device_t * pdev, struct _lm_vf_pf_message_t * mess);
//lm_status_t lm_vf_pf_channel_wait_response(struct _lm_device_t * pdev, struct _lm_vf_pf_message_t * mess);
/*
static __inline void * lm_vf_pf_channel_get_message(struct _lm_device_t * pdev)
{
return pdev->vars.vf_pf_mess.message_virt_addr;
}
*/
lm_status_t lm_pf_tpa_send_vf_ramrod(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u32_t q_idx, u8_t update_ipv4, u8_t update_ipv6);
void lm_pf_int_vf_igu_sb_cleanup(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t vf_chain_id);
#endif
/* */