3b3757bda3
The DCF (Device Config Function) needs the hardware index of the VFs to control the flow setting. And also if the VF resets, the index may be changed, so it should handle this in VF reset event. Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com>
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2020 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _ICE_DCF_H_
|
|
#define _ICE_DCF_H_
|
|
|
|
#include <rte_ethdev_driver.h>
|
|
|
|
#include <iavf_prototype.h>
|
|
#include <iavf_adminq_cmd.h>
|
|
#include <iavf_type.h>
|
|
|
|
#include "base/ice_type.h"
|
|
#include "ice_logs.h"
|
|
|
|
struct dcf_virtchnl_cmd {
|
|
TAILQ_ENTRY(dcf_virtchnl_cmd) next;
|
|
|
|
enum virtchnl_ops v_op;
|
|
enum iavf_status v_ret;
|
|
|
|
uint16_t req_msglen;
|
|
uint8_t *req_msg;
|
|
|
|
uint16_t rsp_msglen;
|
|
uint16_t rsp_buflen;
|
|
uint8_t *rsp_msgbuf;
|
|
|
|
volatile int pending;
|
|
};
|
|
|
|
struct ice_dcf_hw {
|
|
struct iavf_hw avf;
|
|
|
|
rte_spinlock_t vc_cmd_send_lock;
|
|
rte_spinlock_t vc_cmd_queue_lock;
|
|
TAILQ_HEAD(, dcf_virtchnl_cmd) vc_cmd_queue;
|
|
void (*vc_event_msg_cb)(struct ice_dcf_hw *dcf_hw,
|
|
uint8_t *msg, uint16_t msglen);
|
|
|
|
uint8_t *arq_buf;
|
|
|
|
uint16_t num_vfs;
|
|
uint16_t *vf_vsi_map;
|
|
|
|
struct virtchnl_version_info virtchnl_version;
|
|
struct virtchnl_vf_resource *vf_res; /* VF resource */
|
|
struct virtchnl_vsi_resource *vsi_res; /* LAN VSI */
|
|
uint16_t vsi_id;
|
|
|
|
struct rte_eth_dev *eth_dev;
|
|
};
|
|
|
|
int ice_dcf_execute_virtchnl_cmd(struct ice_dcf_hw *hw,
|
|
struct dcf_virtchnl_cmd *cmd);
|
|
int ice_dcf_send_aq_cmd(void *dcf_hw, struct ice_aq_desc *desc,
|
|
void *buf, uint16_t buf_size);
|
|
int ice_dcf_handle_vsi_update_event(struct ice_dcf_hw *hw);
|
|
int ice_dcf_init_hw(struct rte_eth_dev *eth_dev, struct ice_dcf_hw *hw);
|
|
void ice_dcf_uninit_hw(struct rte_eth_dev *eth_dev, struct ice_dcf_hw *hw);
|
|
|
|
#endif /* _ICE_DCF_H_ */
|