iPXE
igbvf_vf.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <byteswap.h>
#include <errno.h>
#include <ipxe/pci.h>
#include <ipxe/malloc.h>
#include <ipxe/if_ether.h>
#include <ipxe/io.h>
#include <ipxe/ethernet.h>
#include <ipxe/iobuf.h>
#include <ipxe/netdevice.h>
#include "igbvf_osdep.h"
#include "igbvf_regs.h"
#include "igbvf_defines.h"
#include "igbvf_mbx.h"

Go to the source code of this file.

Data Structures

union  e1000_adv_rx_desc
union  e1000_adv_tx_desc
struct  e1000_adv_tx_context_desc
struct  e1000_vf_stats
struct  e1000_mac_operations
struct  e1000_mac_info
struct  e1000_bus_info
struct  e1000_mbx_operations
struct  e1000_mbx_stats
struct  e1000_mbx_info
struct  e1000_dev_spec_vf
struct  e1000_hw

Macros

#define _IGBVF_VF_H_
#define E1000_DEV_ID_82576_VF   0x10CA
#define E1000_DEV_ID_I350_VF   0x1520
#define E1000_VF_INIT_TIMEOUT   200 /* Number of retries to clear RSTI */
#define E1000_TXDCTL_QUEUE_ENABLE   0x02000000 /* Enable specific Tx Queue */
#define E1000_RXDCTL_QUEUE_ENABLE   0x02000000 /* Enable specific Rx Queue */
#define E1000_SRRCTL_BSIZEPKT_SHIFT   10 /* Shift _right_ */
#define E1000_SRRCTL_BSIZEHDRSIZE_MASK   0x00000F00
#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT   2 /* Shift _left_ */
#define E1000_SRRCTL_DESCTYPE_LEGACY   0x00000000
#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF   0x02000000
#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT   0x04000000
#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS   0x0A000000
#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION   0x06000000
#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT   0x08000000
#define E1000_SRRCTL_DESCTYPE_MASK   0x0E000000
#define E1000_SRRCTL_DROP_EN   0x80000000
#define E1000_SRRCTL_BSIZEPKT_MASK   0x0000007F
#define E1000_SRRCTL_BSIZEHDR_MASK   0x00003F00
#define E1000_EICR   0x01580 /* Ext. Interrupt Cause Read - R/clr */
#define E1000_EITR(_n)
#define E1000_EICS   0x01520 /* Ext. Interrupt Cause Set - W0 */
#define E1000_EIMS   0x01524 /* Ext. Interrupt Mask Set/Read - RW */
#define E1000_EIMC   0x01528 /* Ext. Interrupt Mask Clear - WO */
#define E1000_EIAC   0x0152C /* Ext. Interrupt Auto Clear - RW */
#define E1000_EIAM   0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */
#define E1000_IVAR0   0x01700 /* Interrupt Vector Allocation (array) - RW */
#define E1000_IVAR_MISC   0x01740 /* IVAR for "other" causes - RW */
#define E1000_IVAR_VALID   0x80
#define E1000_RXDADV_HDRBUFLEN_MASK   0x7FE0
#define E1000_RXDADV_HDRBUFLEN_SHIFT   5
#define E1000_ADVTXD_DTYP_CTXT   0x00200000 /* Advanced Context Descriptor */
#define E1000_ADVTXD_DTYP_DATA   0x00300000 /* Advanced Data Descriptor */
#define E1000_ADVTXD_DCMD_EOP   0x01000000 /* End of Packet */
#define E1000_ADVTXD_DCMD_IFCS   0x02000000 /* Insert FCS (Ethernet CRC) */
#define E1000_ADVTXD_DCMD_RS   0x08000000 /* Report Status */
#define E1000_ADVTXD_DCMD_DEXT   0x20000000 /* Descriptor extension (1=Adv) */
#define E1000_ADVTXD_DCMD_VLE   0x40000000 /* VLAN pkt enable */
#define E1000_ADVTXD_DCMD_TSE   0x80000000 /* TCP Seg enable */
#define E1000_ADVTXD_PAYLEN_SHIFT   14 /* Adv desc PAYLEN shift */
#define E1000_ADVTXD_MACLEN_SHIFT   9 /* Adv ctxt desc mac len shift */
#define E1000_ADVTXD_TUCMD_IPV4   0x00000400 /* IP Packet Type: 1=IPv4 */
#define E1000_ADVTXD_TUCMD_L4T_TCP   0x00000800 /* L4 Packet TYPE of TCP */
#define E1000_ADVTXD_L4LEN_SHIFT   8 /* Adv ctxt L4LEN shift */
#define E1000_ADVTXD_MSS_SHIFT   16 /* Adv ctxt MSS shift */

Enumerations

enum  e1000_mac_type { e1000_undefined = 0 , e1000_vfadapt , e1000_num_macs }
enum  e1000_bus_type {
  e1000_bus_type_unknown = 0 , e1000_bus_type_pci , e1000_bus_type_pcix , e1000_bus_type_pci_express ,
  e1000_bus_type_reserved
}
enum  e1000_bus_speed {
  e1000_bus_speed_unknown = 0 , e1000_bus_speed_33 , e1000_bus_speed_66 , e1000_bus_speed_100 ,
  e1000_bus_speed_120 , e1000_bus_speed_133 , e1000_bus_speed_2500 , e1000_bus_speed_5000 ,
  e1000_bus_speed_reserved
}
enum  e1000_bus_width {
  e1000_bus_width_unknown = 0 , e1000_bus_width_pcie_x1 , e1000_bus_width_pcie_x2 , e1000_bus_width_pcie_x4 = 4 ,
  e1000_bus_width_pcie_x8 = 8 , e1000_bus_width_32 , e1000_bus_width_64 , e1000_bus_width_reserved
}
enum  e1000_promisc_type {
  e1000_promisc_disabled = 0 , e1000_promisc_unicast = 1 , e1000_promisc_multicast = 2 , e1000_promisc_enabled = 3 ,
  e1000_num_promisc_types
}

Functions

 FILE_LICENCE (GPL2_ONLY)
s32 igbvf_read_pcie_cap_reg (struct e1000_hw *hw, u32 reg, u16 *value)
void igbvf_vfta_set_vf (struct e1000_hw *, u16, bool)
 igbvf_vfta_set_vf - Set/Unset vlan filter table address @hw: pointer to the HW structure @vid: determines the vfta register and bit to set/unset @set: if true then set bit, else clear bit
void igbvf_rlpml_set_vf (struct e1000_hw *, u16)
 igbvf_rlpml_set_vf - Set the maximum receive packet length @hw: pointer to the HW structure @max_size: value to assign to max frame size
s32 igbvf_promisc_set_vf (struct e1000_hw *, enum e1000_promisc_type)
 igbvf_promisc_set_vf - Set flags for Unicast or Multicast promisc @hw: pointer to the HW structure @uni: boolean indicating unicast promisc status @multi: boolean indicating multicast promisc status

Macro Definition Documentation

◆ _IGBVF_VF_H_

#define _IGBVF_VF_H_

Definition at line 32 of file igbvf_vf.h.

◆ E1000_DEV_ID_82576_VF

#define E1000_DEV_ID_82576_VF   0x10CA

Definition at line 56 of file igbvf_vf.h.

◆ E1000_DEV_ID_I350_VF

#define E1000_DEV_ID_I350_VF   0x1520

Definition at line 57 of file igbvf_vf.h.

◆ E1000_VF_INIT_TIMEOUT

#define E1000_VF_INIT_TIMEOUT   200 /* Number of retries to clear RSTI */

Definition at line 59 of file igbvf_vf.h.

Referenced by igbvf_reset_hw_vf().

◆ E1000_TXDCTL_QUEUE_ENABLE

#define E1000_TXDCTL_QUEUE_ENABLE   0x02000000 /* Enable specific Tx Queue */

Definition at line 62 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_RXDCTL_QUEUE_ENABLE

#define E1000_RXDCTL_QUEUE_ENABLE   0x02000000 /* Enable specific Rx Queue */

Definition at line 63 of file igbvf_vf.h.

Referenced by igbvf_close(), and igbvf_configure_rx().

◆ E1000_SRRCTL_BSIZEPKT_SHIFT

#define E1000_SRRCTL_BSIZEPKT_SHIFT   10 /* Shift _right_ */

Definition at line 66 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_SRRCTL_BSIZEHDRSIZE_MASK

#define E1000_SRRCTL_BSIZEHDRSIZE_MASK   0x00000F00

Definition at line 67 of file igbvf_vf.h.

◆ E1000_SRRCTL_BSIZEHDRSIZE_SHIFT

#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT   2 /* Shift _left_ */

Definition at line 68 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_LEGACY

#define E1000_SRRCTL_DESCTYPE_LEGACY   0x00000000

Definition at line 69 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_ADV_ONEBUF

#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF   0x02000000

Definition at line 70 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_SRRCTL_DESCTYPE_HDR_SPLIT

#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT   0x04000000

Definition at line 71 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS

#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS   0x0A000000

Definition at line 72 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_HDR_REPLICATION

#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION   0x06000000

Definition at line 73 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT

#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT   0x08000000

Definition at line 74 of file igbvf_vf.h.

◆ E1000_SRRCTL_DESCTYPE_MASK

#define E1000_SRRCTL_DESCTYPE_MASK   0x0E000000

Definition at line 75 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_SRRCTL_DROP_EN

#define E1000_SRRCTL_DROP_EN   0x80000000

Definition at line 76 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_SRRCTL_BSIZEPKT_MASK

#define E1000_SRRCTL_BSIZEPKT_MASK   0x0000007F

Definition at line 78 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_SRRCTL_BSIZEHDR_MASK

#define E1000_SRRCTL_BSIZEHDR_MASK   0x00003F00

Definition at line 79 of file igbvf_vf.h.

Referenced by igbvf_setup_srrctl().

◆ E1000_EICR

#define E1000_EICR   0x01580 /* Ext. Interrupt Cause Read - R/clr */

Definition at line 82 of file igbvf_vf.h.

◆ E1000_EITR

#define E1000_EITR ( _n)
Value:
(0x01680 + ((_n) << 2))

Definition at line 83 of file igbvf_vf.h.

◆ E1000_EICS

#define E1000_EICS   0x01520 /* Ext. Interrupt Cause Set - W0 */

Definition at line 84 of file igbvf_vf.h.

◆ E1000_EIMS

#define E1000_EIMS   0x01524 /* Ext. Interrupt Mask Set/Read - RW */

Definition at line 85 of file igbvf_vf.h.

◆ E1000_EIMC

#define E1000_EIMC   0x01528 /* Ext. Interrupt Mask Clear - WO */

Definition at line 86 of file igbvf_vf.h.

◆ E1000_EIAC

#define E1000_EIAC   0x0152C /* Ext. Interrupt Auto Clear - RW */

Definition at line 87 of file igbvf_vf.h.

◆ E1000_EIAM

#define E1000_EIAM   0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */

Definition at line 88 of file igbvf_vf.h.

◆ E1000_IVAR0

#define E1000_IVAR0   0x01700 /* Interrupt Vector Allocation (array) - RW */

Definition at line 89 of file igbvf_vf.h.

◆ E1000_IVAR_MISC

#define E1000_IVAR_MISC   0x01740 /* IVAR for "other" causes - RW */

Definition at line 90 of file igbvf_vf.h.

◆ E1000_IVAR_VALID

#define E1000_IVAR_VALID   0x80

Definition at line 91 of file igbvf_vf.h.

◆ E1000_RXDADV_HDRBUFLEN_MASK

#define E1000_RXDADV_HDRBUFLEN_MASK   0x7FE0

Definition at line 125 of file igbvf_vf.h.

◆ E1000_RXDADV_HDRBUFLEN_SHIFT

#define E1000_RXDADV_HDRBUFLEN_SHIFT   5

Definition at line 126 of file igbvf_vf.h.

◆ E1000_ADVTXD_DTYP_CTXT

#define E1000_ADVTXD_DTYP_CTXT   0x00200000 /* Advanced Context Descriptor */

Definition at line 143 of file igbvf_vf.h.

◆ E1000_ADVTXD_DTYP_DATA

#define E1000_ADVTXD_DTYP_DATA   0x00300000 /* Advanced Data Descriptor */

Definition at line 144 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_ADVTXD_DCMD_EOP

#define E1000_ADVTXD_DCMD_EOP   0x01000000 /* End of Packet */

Definition at line 145 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_ADVTXD_DCMD_IFCS

#define E1000_ADVTXD_DCMD_IFCS   0x02000000 /* Insert FCS (Ethernet CRC) */

Definition at line 146 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_ADVTXD_DCMD_RS

#define E1000_ADVTXD_DCMD_RS   0x08000000 /* Report Status */

Definition at line 147 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_ADVTXD_DCMD_DEXT

#define E1000_ADVTXD_DCMD_DEXT   0x20000000 /* Descriptor extension (1=Adv) */

Definition at line 148 of file igbvf_vf.h.

Referenced by igbvf_configure_tx().

◆ E1000_ADVTXD_DCMD_VLE

#define E1000_ADVTXD_DCMD_VLE   0x40000000 /* VLAN pkt enable */

Definition at line 149 of file igbvf_vf.h.

◆ E1000_ADVTXD_DCMD_TSE

#define E1000_ADVTXD_DCMD_TSE   0x80000000 /* TCP Seg enable */

Definition at line 150 of file igbvf_vf.h.

◆ E1000_ADVTXD_PAYLEN_SHIFT

#define E1000_ADVTXD_PAYLEN_SHIFT   14 /* Adv desc PAYLEN shift */

Definition at line 151 of file igbvf_vf.h.

Referenced by igbvf_transmit().

◆ E1000_ADVTXD_MACLEN_SHIFT

#define E1000_ADVTXD_MACLEN_SHIFT   9 /* Adv ctxt desc mac len shift */

Definition at line 161 of file igbvf_vf.h.

◆ E1000_ADVTXD_TUCMD_IPV4

#define E1000_ADVTXD_TUCMD_IPV4   0x00000400 /* IP Packet Type: 1=IPv4 */

Definition at line 162 of file igbvf_vf.h.

◆ E1000_ADVTXD_TUCMD_L4T_TCP

#define E1000_ADVTXD_TUCMD_L4T_TCP   0x00000800 /* L4 Packet TYPE of TCP */

Definition at line 163 of file igbvf_vf.h.

◆ E1000_ADVTXD_L4LEN_SHIFT

#define E1000_ADVTXD_L4LEN_SHIFT   8 /* Adv ctxt L4LEN shift */

Definition at line 164 of file igbvf_vf.h.

◆ E1000_ADVTXD_MSS_SHIFT

#define E1000_ADVTXD_MSS_SHIFT   16 /* Adv ctxt MSS shift */

Definition at line 165 of file igbvf_vf.h.

Enumeration Type Documentation

◆ e1000_mac_type

Enumerator
e1000_undefined 
e1000_vfadapt 
e1000_num_macs 

Definition at line 167 of file igbvf_vf.h.

167 {
168 e1000_undefined = 0,
170 e1000_num_macs /* List is 1-based, so subtract 1 for true count. */
171};
@ e1000_num_macs
Definition igbvf_vf.h:170
@ e1000_undefined
Definition igbvf_vf.h:168
@ e1000_vfadapt
Definition igbvf_vf.h:169

◆ e1000_bus_type

Enumerator
e1000_bus_type_unknown 
e1000_bus_type_pci 
e1000_bus_type_pcix 
e1000_bus_type_pci_express 
e1000_bus_type_reserved 

Definition at line 237 of file igbvf_vf.h.

237 {
243};
@ e1000_bus_type_reserved
Definition igbvf_vf.h:242
@ e1000_bus_type_pci
Definition igbvf_vf.h:239
@ e1000_bus_type_pcix
Definition igbvf_vf.h:240
@ e1000_bus_type_unknown
Definition igbvf_vf.h:238
@ e1000_bus_type_pci_express
Definition igbvf_vf.h:241

◆ e1000_bus_speed

Enumerator
e1000_bus_speed_unknown 
e1000_bus_speed_33 
e1000_bus_speed_66 
e1000_bus_speed_100 
e1000_bus_speed_120 
e1000_bus_speed_133 
e1000_bus_speed_2500 
e1000_bus_speed_5000 
e1000_bus_speed_reserved 

Definition at line 245 of file igbvf_vf.h.

245 {
255};
@ e1000_bus_speed_5000
Definition igbvf_vf.h:253
@ e1000_bus_speed_reserved
Definition igbvf_vf.h:254
@ e1000_bus_speed_100
Definition igbvf_vf.h:249
@ e1000_bus_speed_120
Definition igbvf_vf.h:250
@ e1000_bus_speed_66
Definition igbvf_vf.h:248
@ e1000_bus_speed_unknown
Definition igbvf_vf.h:246
@ e1000_bus_speed_133
Definition igbvf_vf.h:251
@ e1000_bus_speed_2500
Definition igbvf_vf.h:252
@ e1000_bus_speed_33
Definition igbvf_vf.h:247

◆ e1000_bus_width

Enumerator
e1000_bus_width_unknown 
e1000_bus_width_pcie_x1 
e1000_bus_width_pcie_x2 
e1000_bus_width_pcie_x4 
e1000_bus_width_pcie_x8 
e1000_bus_width_32 
e1000_bus_width_64 
e1000_bus_width_reserved 

Definition at line 257 of file igbvf_vf.h.

257 {
266};
@ e1000_bus_width_64
Definition igbvf_vf.h:264
@ e1000_bus_width_pcie_x1
Definition igbvf_vf.h:259
@ e1000_bus_width_32
Definition igbvf_vf.h:263
@ e1000_bus_width_pcie_x8
Definition igbvf_vf.h:262
@ e1000_bus_width_pcie_x2
Definition igbvf_vf.h:260
@ e1000_bus_width_unknown
Definition igbvf_vf.h:258
@ e1000_bus_width_reserved
Definition igbvf_vf.h:265
@ e1000_bus_width_pcie_x4
Definition igbvf_vf.h:261

◆ e1000_promisc_type

Enumerator
e1000_promisc_disabled 
e1000_promisc_unicast 
e1000_promisc_multicast 
e1000_promisc_enabled 
e1000_num_promisc_types 

Definition at line 333 of file igbvf_vf.h.

333 {
334 e1000_promisc_disabled = 0, /* all promisc modes disabled */
335 e1000_promisc_unicast = 1, /* unicast promiscuous enabled */
336 e1000_promisc_multicast = 2, /* multicast promiscuous enabled */
337 e1000_promisc_enabled = 3, /* both uni and multicast promisc */
339};
@ e1000_promisc_enabled
Definition igbvf_vf.h:337
@ e1000_promisc_unicast
Definition igbvf_vf.h:335
@ e1000_promisc_disabled
Definition igbvf_vf.h:334
@ e1000_num_promisc_types
Definition igbvf_vf.h:338
@ e1000_promisc_multicast
Definition igbvf_vf.h:336

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_ONLY )

◆ igbvf_read_pcie_cap_reg()

s32 igbvf_read_pcie_cap_reg ( struct e1000_hw * hw,
u32 reg,
u16 * value )

References reg, u16, u32, and value.

◆ igbvf_vfta_set_vf()

void igbvf_vfta_set_vf ( struct e1000_hw * hw,
u16 vid,
bool set )

igbvf_vfta_set_vf - Set/Unset vlan filter table address @hw: pointer to the HW structure @vid: determines the vfta register and bit to set/unset @set: if true then set bit, else clear bit

Definition at line 313 of file igbvf_vf.c.

314{
315 struct e1000_mbx_info *mbx = &hw->mbx;
316 u32 msgbuf[2];
317
318 msgbuf[0] = E1000_VF_SET_VLAN;
319 msgbuf[1] = vid;
320 /* Setting the 8 bit field MSG INFO to TRUE indicates "add" */
321 if (set)
322 msgbuf[0] |= E1000_VF_SET_VLAN_ADD;
323
324 mbx->ops.write_posted(hw, msgbuf, 2, 0);
325}
#define E1000_VF_SET_VLAN_ADD
Definition igbvf_mbx.h:70
#define E1000_VF_SET_VLAN
Definition igbvf_mbx.h:69
struct option_descriptor set[0]
Definition nvo_cmd.c:112
struct e1000_mbx_operations ops
Definition igbvf_vf.h:298
s32(* write_posted)(struct e1000_hw *, u32 *, u16, u16)
Definition igbvf_vf.h:282
Definition hw.c:16
#define u32
Definition vga.h:21

References E1000_VF_SET_VLAN, E1000_VF_SET_VLAN_ADD, e1000_mbx_info::ops, set, u16, u32, and e1000_mbx_operations::write_posted.

◆ igbvf_rlpml_set_vf()

void igbvf_rlpml_set_vf ( struct e1000_hw * hw,
u16 max_size )

igbvf_rlpml_set_vf - Set the maximum receive packet length @hw: pointer to the HW structure @max_size: value to assign to max frame size

Definition at line 331 of file igbvf_vf.c.

332{
333 struct e1000_mbx_info *mbx = &hw->mbx;
334 u32 msgbuf[2];
335
336 msgbuf[0] = E1000_VF_SET_LPE;
337 msgbuf[1] = max_size;
338
339 mbx->ops.write_posted(hw, msgbuf, 2, 0);
340}
#define E1000_VF_SET_LPE
Definition igbvf_mbx.h:71

References E1000_VF_SET_LPE, e1000_mbx_info::ops, u16, u32, and e1000_mbx_operations::write_posted.

Referenced by igbvf_configure_rx().

◆ igbvf_promisc_set_vf()

s32 igbvf_promisc_set_vf ( struct e1000_hw * hw,
enum e1000_promisc_type )

igbvf_promisc_set_vf - Set flags for Unicast or Multicast promisc @hw: pointer to the HW structure @uni: boolean indicating unicast promisc status @multi: boolean indicating multicast promisc status

Definition at line 348 of file igbvf_vf.c.

349{
350 struct e1000_mbx_info *mbx = &hw->mbx;
351 u32 msgbuf = E1000_VF_SET_PROMISC;
352 s32 ret_val;
353
354 switch (type) {
357 break;
360 /* Fall through */
364 break;
365 default:
366 return -E1000_ERR_MAC_INIT;
367 }
368
369 ret_val = mbx->ops.write_posted(hw, &msgbuf, 1, 0);
370
371 if (!ret_val)
372 ret_val = mbx->ops.read_posted(hw, &msgbuf, 1, 0);
373
374 if (!ret_val && !(msgbuf & E1000_VT_MSGTYPE_ACK))
375 ret_val = -E1000_ERR_MAC_INIT;
376
377 return ret_val;
378}
uint32_t type
Operating system type.
Definition ena.h:1
#define E1000_ERR_MAC_INIT
#define E1000_VF_SET_PROMISC_UNICAST
Definition igbvf_mbx.h:73
#define E1000_VF_SET_PROMISC
Definition igbvf_mbx.h:72
#define E1000_VF_SET_PROMISC_MULTICAST
Definition igbvf_mbx.h:74
#define E1000_VT_MSGTYPE_ACK
Definition igbvf_mbx.h:57
int32_t s32
Definition stdint.h:23
s32(* read_posted)(struct e1000_hw *, u32 *, u16, u16)
Definition igbvf_vf.h:281

References E1000_ERR_MAC_INIT, e1000_promisc_disabled, e1000_promisc_enabled, e1000_promisc_multicast, e1000_promisc_unicast, E1000_VF_SET_PROMISC, E1000_VF_SET_PROMISC_MULTICAST, E1000_VF_SET_PROMISC_UNICAST, E1000_VT_MSGTYPE_ACK, e1000_mbx_info::ops, e1000_mbx_operations::read_posted, type, u32, and e1000_mbx_operations::write_posted.