xref: /titanic_41/usr/src/uts/common/io/ixgbe/ixgbe_mbx.h (revision 69b5a878d62fdee1b12e78371ce6cc8abddcad15)
1*69b5a878SDan McDonald /******************************************************************************
2*69b5a878SDan McDonald 
3*69b5a878SDan McDonald   Copyright (c) 2001-2012, Intel Corporation
4*69b5a878SDan McDonald   All rights reserved.
5*69b5a878SDan McDonald 
6*69b5a878SDan McDonald   Redistribution and use in source and binary forms, with or without
7*69b5a878SDan McDonald   modification, are permitted provided that the following conditions are met:
8*69b5a878SDan McDonald 
9*69b5a878SDan McDonald    1. Redistributions of source code must retain the above copyright notice,
10*69b5a878SDan McDonald       this list of conditions and the following disclaimer.
11*69b5a878SDan McDonald 
12*69b5a878SDan McDonald    2. Redistributions in binary form must reproduce the above copyright
13*69b5a878SDan McDonald       notice, this list of conditions and the following disclaimer in the
14*69b5a878SDan McDonald       documentation and/or other materials provided with the distribution.
15*69b5a878SDan McDonald 
16*69b5a878SDan McDonald    3. Neither the name of the Intel Corporation nor the names of its
17*69b5a878SDan McDonald       contributors may be used to endorse or promote products derived from
18*69b5a878SDan McDonald       this software without specific prior written permission.
19*69b5a878SDan McDonald 
20*69b5a878SDan McDonald   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*69b5a878SDan McDonald   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22*69b5a878SDan McDonald   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23*69b5a878SDan McDonald   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24*69b5a878SDan McDonald   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25*69b5a878SDan McDonald   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26*69b5a878SDan McDonald   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27*69b5a878SDan McDonald   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28*69b5a878SDan McDonald   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29*69b5a878SDan McDonald   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30*69b5a878SDan McDonald   POSSIBILITY OF SUCH DAMAGE.
31*69b5a878SDan McDonald 
32*69b5a878SDan McDonald ******************************************************************************/
33*69b5a878SDan McDonald /*$FreeBSD$*/
34*69b5a878SDan McDonald 
35*69b5a878SDan McDonald #ifndef _IXGBE_MBX_H_
36*69b5a878SDan McDonald #define _IXGBE_MBX_H_
37*69b5a878SDan McDonald 
38*69b5a878SDan McDonald #include "ixgbe_type.h"
39*69b5a878SDan McDonald 
40*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_SIZE	16 /* 16 32 bit words - 64 bytes */
41*69b5a878SDan McDonald #define IXGBE_ERR_MBX		-100
42*69b5a878SDan McDonald 
43*69b5a878SDan McDonald #define IXGBE_VFMAILBOX		0x002FC
44*69b5a878SDan McDonald #define IXGBE_VFMBMEM		0x00200
45*69b5a878SDan McDonald 
46*69b5a878SDan McDonald /* Define mailbox register bits */
47*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_REQ	0x00000001 /* Request for PF Ready bit */
48*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_ACK	0x00000002 /* Ack PF message received */
49*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_VFU	0x00000004 /* VF owns the mailbox buffer */
50*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_PFU	0x00000008 /* PF owns the mailbox buffer */
51*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_PFSTS	0x00000010 /* PF wrote a message in the MB */
52*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_PFACK	0x00000020 /* PF ack the previous VF msg */
53*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_RSTI	0x00000040 /* PF has reset indication */
54*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_RSTD	0x00000080 /* PF has indicated reset done */
55*69b5a878SDan McDonald #define IXGBE_VFMAILBOX_R2C_BITS	0x000000B0 /* All read to clear bits */
56*69b5a878SDan McDonald 
57*69b5a878SDan McDonald #define IXGBE_PFMAILBOX_STS	0x00000001 /* Initiate message send to VF */
58*69b5a878SDan McDonald #define IXGBE_PFMAILBOX_ACK	0x00000002 /* Ack message recv'd from VF */
59*69b5a878SDan McDonald #define IXGBE_PFMAILBOX_VFU	0x00000004 /* VF owns the mailbox buffer */
60*69b5a878SDan McDonald #define IXGBE_PFMAILBOX_PFU	0x00000008 /* PF owns the mailbox buffer */
61*69b5a878SDan McDonald #define IXGBE_PFMAILBOX_RVFU	0x00000010 /* Reset VFU - used when VF stuck */
62*69b5a878SDan McDonald 
63*69b5a878SDan McDonald #define IXGBE_MBVFICR_VFREQ_MASK	0x0000FFFF /* bits for VF messages */
64*69b5a878SDan McDonald #define IXGBE_MBVFICR_VFREQ_VF1		0x00000001 /* bit for VF 1 message */
65*69b5a878SDan McDonald #define IXGBE_MBVFICR_VFACK_MASK	0xFFFF0000 /* bits for VF acks */
66*69b5a878SDan McDonald #define IXGBE_MBVFICR_VFACK_VF1		0x00010000 /* bit for VF 1 ack */
67*69b5a878SDan McDonald 
68*69b5a878SDan McDonald 
69*69b5a878SDan McDonald /* If it's a IXGBE_VF_* msg then it originates in the VF and is sent to the
70*69b5a878SDan McDonald  * PF.  The reverse is TRUE if it is IXGBE_PF_*.
71*69b5a878SDan McDonald  * Message ACK's are the value or'd with 0xF0000000
72*69b5a878SDan McDonald  */
73*69b5a878SDan McDonald #define IXGBE_VT_MSGTYPE_ACK	0x80000000 /* Messages below or'd with
74*69b5a878SDan McDonald 					    * this are the ACK */
75*69b5a878SDan McDonald #define IXGBE_VT_MSGTYPE_NACK	0x40000000 /* Messages below or'd with
76*69b5a878SDan McDonald 					    * this are the NACK */
77*69b5a878SDan McDonald #define IXGBE_VT_MSGTYPE_CTS	0x20000000 /* Indicates that VF is still
78*69b5a878SDan McDonald 					    * clear to send requests */
79*69b5a878SDan McDonald #define IXGBE_VT_MSGINFO_SHIFT	16
80*69b5a878SDan McDonald /* bits 23:16 are used for extra info for certain messages */
81*69b5a878SDan McDonald #define IXGBE_VT_MSGINFO_MASK	(0xFF << IXGBE_VT_MSGINFO_SHIFT)
82*69b5a878SDan McDonald 
83*69b5a878SDan McDonald #define IXGBE_VF_RESET		0x01 /* VF requests reset */
84*69b5a878SDan McDonald #define IXGBE_VF_SET_MAC_ADDR	0x02 /* VF requests PF to set MAC addr */
85*69b5a878SDan McDonald #define IXGBE_VF_SET_MULTICAST	0x03 /* VF requests PF to set MC addr */
86*69b5a878SDan McDonald #define IXGBE_VF_SET_VLAN	0x04 /* VF requests PF to set VLAN */
87*69b5a878SDan McDonald #define IXGBE_VF_SET_LPE	0x05 /* VF requests PF to set VMOLR.LPE */
88*69b5a878SDan McDonald #define IXGBE_VF_SET_MACVLAN	0x06 /* VF requests PF for unicast filter */
89*69b5a878SDan McDonald 
90*69b5a878SDan McDonald /* length of permanent address message returned from PF */
91*69b5a878SDan McDonald #define IXGBE_VF_PERMADDR_MSG_LEN	4
92*69b5a878SDan McDonald /* word in permanent address message with the current multicast type */
93*69b5a878SDan McDonald #define IXGBE_VF_MC_TYPE_WORD		3
94*69b5a878SDan McDonald 
95*69b5a878SDan McDonald #define IXGBE_PF_CONTROL_MSG		0x0100 /* PF control message */
96*69b5a878SDan McDonald 
97*69b5a878SDan McDonald 
98*69b5a878SDan McDonald #define IXGBE_VF_MBX_INIT_TIMEOUT	2000 /* number of retries on mailbox */
99*69b5a878SDan McDonald #define IXGBE_VF_MBX_INIT_DELAY		500  /* microseconds between retries */
100*69b5a878SDan McDonald 
101*69b5a878SDan McDonald s32 ixgbe_read_mbx(struct ixgbe_hw *, u32 *, u16, u16);
102*69b5a878SDan McDonald s32 ixgbe_write_mbx(struct ixgbe_hw *, u32 *, u16, u16);
103*69b5a878SDan McDonald s32 ixgbe_read_posted_mbx(struct ixgbe_hw *, u32 *, u16, u16);
104*69b5a878SDan McDonald s32 ixgbe_write_posted_mbx(struct ixgbe_hw *, u32 *, u16, u16);
105*69b5a878SDan McDonald s32 ixgbe_check_for_msg(struct ixgbe_hw *, u16);
106*69b5a878SDan McDonald s32 ixgbe_check_for_ack(struct ixgbe_hw *, u16);
107*69b5a878SDan McDonald s32 ixgbe_check_for_rst(struct ixgbe_hw *, u16);
108*69b5a878SDan McDonald void ixgbe_init_mbx_ops_generic(struct ixgbe_hw *hw);
109*69b5a878SDan McDonald void ixgbe_init_mbx_params_vf(struct ixgbe_hw *);
110*69b5a878SDan McDonald void ixgbe_init_mbx_params_pf(struct ixgbe_hw *);
111*69b5a878SDan McDonald 
112*69b5a878SDan McDonald #endif /* _IXGBE_MBX_H_ */
113