linux/drivers/net/ethernet/intel/igb/e1000_mbx.h

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright(c) 2007 - 2018 Intel Corporation. */

#ifndef _E1000_MBX_H_
#define _E1000_MBX_H_

#include "e1000_hw.h"

#define E1000_P2VMAILBOX_STS
#define E1000_P2VMAILBOX_ACK
#define E1000_P2VMAILBOX_VFU
#define E1000_P2VMAILBOX_PFU
#define E1000_P2VMAILBOX_RVFU

#define E1000_MBVFICR_VFREQ_MASK
#define E1000_MBVFICR_VFREQ_VF1
#define E1000_MBVFICR_VFACK_MASK
#define E1000_MBVFICR_VFACK_VF1

#define E1000_VFMAILBOX_SIZE

/* If it's a E1000_VF_* msg then it originates in the VF and is sent to the
 * PF.  The reverse is true if it is E1000_PF_*.
 * Message ACK's are the value or'd with 0xF0000000
 */
/* Messages below or'd with this are the ACK */
#define E1000_VT_MSGTYPE_ACK
/* Messages below or'd with this are the NACK */
#define E1000_VT_MSGTYPE_NACK
/* Indicates that VF is still clear to send requests */
#define E1000_VT_MSGTYPE_CTS
#define E1000_VT_MSGINFO_SHIFT
/* bits 23:16 are used for exra info for certain messages */
#define E1000_VT_MSGINFO_MASK

#define E1000_VF_RESET
#define E1000_VF_SET_MAC_ADDR
/* VF requests to clear all unicast MAC filters */
#define E1000_VF_MAC_FILTER_CLR
/* VF requests to add unicast MAC filter */
#define E1000_VF_MAC_FILTER_ADD
#define E1000_VF_SET_MULTICAST
#define E1000_VF_SET_VLAN
#define E1000_VF_SET_LPE
#define E1000_VF_SET_PROMISC
#define E1000_VF_SET_PROMISC_MULTICAST

#define E1000_PF_CONTROL_MSG

s32 igb_read_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id,
		 bool unlock);
s32 igb_write_mbx(struct e1000_hw *hw, u32 *msg, u16 size, u16 mbx_id);
s32 igb_check_for_msg(struct e1000_hw *hw, u16 mbx_id);
s32 igb_check_for_ack(struct e1000_hw *hw, u16 mbx_id);
s32 igb_check_for_rst(struct e1000_hw *hw, u16 mbx_id);
s32 igb_unlock_mbx(struct e1000_hw *hw, u16 mbx_id);
s32 igb_init_mbx_params_pf(struct e1000_hw *hw);

#endif /* _E1000_MBX_H_ */