/* QLogic Everest network driver.
*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2014 QLogic Corporation
* The contents of this file are subject to the terms of the
* QLogic End User License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the License at
* See the License for the specific language governing permissions
* and limitations under the License.
*
*
* Maintained by: Ariel Elior <ariel.elior@qlogic.com>
*
*/
#ifndef VF_PF_IF_H
#define VF_PF_IF_H
/***********************************************
*
* Common definitions for all HVs
*
**/
struct vf_pf_resc_request {
};
struct hw_sb_info {
};
/***********************************************
*
* HW VF-PF channel definitions
*
* A.K.A VF-PF mailbox
*
**/
#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
#endif
/* TODO: #define VFPF_RX_MASK_ACCEPT_ANY_VLAN 0x00000020 */
#define BULLETIN_CRC_SEED 0
enum {
PFVF_STATUS_WAITING = 0,
};
/* vf pf channel tlvs */
/* general tlv header (used for both vf->pf request and pf->vf response) */
struct channel_tlv {
};
/* header of first vf->pf tlv carries the offset used to calculate reponse
* buffer address
*/
struct vfpf_first_tlv {
};
/* header of pf->vf tlvs, carries the status of handling the request */
struct pfvf_tlv {
};
/* response tlv used for most tlvs */
struct pfvf_general_resp_tlv {
};
/* used to terminate and pad a tlv list */
struct channel_list_end_tlv {
};
/* Acquire */
struct vfpf_acquire_tlv {
struct vf_pf_vfdev_info {
/* the following fields are for debug purposes */
} vfdev_info;
};
/* simple operation request on queue */
struct vfpf_q_op_tlv {
};
/* receive side scaling tlv */
struct vfpf_rss_tlv {
};
/* acquire response tlv - carries the allocated resources */
struct pfvf_acquire_resp_tlv {
struct pf_vf_pfdev_info {
#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
/* bit set only by ESX hypervisor. This means that a VF *may* be
* able to configure its own mac even if the hypervisor has
* already set one for it. In linux this is never allowed, but
* in ESX it may be allowed. Capabilities such as this which
* don't exist in linux will consume bits from the bitmap from
* starting from msb
*/
#endif
} pfdev_info;
struct pf_vf_resc {
/* in case of status NO_RESOURCE in message hdr, pf will fill
* this struct with suggested amount of resources for next
* acquire request
*/
} resc;
};
struct vfpf_port_phys_id_resp_tlv {
};
* stats will be coalesced on
* the leading RSS queue
*/
/* Init VF */
struct vfpf_init_tlv {
};
/* Setup Queue */
struct vfpf_setup_q_tlv {
struct vf_pf_rxq_params {
/* physical addresses */
/* sb + hc info */
/* valid iff VFPF_QUEUE_FLG_HC */
/* rx buffer info */
/* valid iff VFPF_QUEUE_FLG_TPA */
* all the flags are turned off
*/
} rxq;
struct vf_pf_txq_params {
/* physical addresses */
/* sb + hc info */
/* valid iff VFPF_QUEUE_FLG_HC */
} txq;
};
/* Set Queue Filters */
struct vfpf_q_mac_vlan_filter {
};
#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
#endif
/* configure queue filters */
struct vfpf_set_q_filters_tlv {
};
struct vfpf_tpa_tlv {
struct vf_pf_tpa_client_info {
};
/* close VF (disable VF) */
struct vfpf_close_tlv {
};
/* rlease the VF's acquired resources */
struct vfpf_release_tlv {
};
struct tlv_buffer_size {
};
union vfpf_tlvs {
};
union pfvf_tlvs {
};
/* This is a structure which is allocated in the VF, which the PF may update
* when it deems it necessary to do so. The bulletin board is sampled
* periodically by the VF. A copy per VF is maintained in the PF (to prevent
* loss of data upon multiple updates (or the need for read modify write)).
*/
struct pf_vf_bulletin_size {
};
struct pf_vf_bulletin_content {
* mid-update
*/
* hold valid values
*/
* is available for it
*/
* vfpf channel
*/
* to attempt to send messages on the
* channel after this bit is set
*/
* update is available for it
*/
};
union pf_vf_bulletin {
};
#ifndef print_enum /* BNX2X_UPSTREAM */
enum channel_tlvs {
#else
#endif
#ifndef print_enum /* BNX2X_UPSTREAM */
};
#else
);
#endif
#endif /* VF_PF_IF_H */