iPXE
fip.h File Reference
#include <stdint.h>
#include <ipxe/fc.h>
#include <ipxe/fcels.h>
#include <ipxe/fcoe.h>

Go to the source code of this file.

Data Structures

struct  fip_header
 A FIP frame header. More...
struct  fip_common
 FIP descriptor common fields. More...
struct  fip_priority
 A FIP priority descriptor. More...
struct  fip_mac_address
 A FIP MAC address descriptor. More...
struct  fip_fc_map
 A FIP FC-MAP descriptor. More...
struct  fip_name_id
 A FIP name identifier descriptor. More...
struct  fip_fabric
 A FIP fabric descriptor. More...
struct  fip_max_fcoe_size
 A FIP max FCoE size descriptor. More...
struct  fip_els
 A FIP descriptor containing an encapsulated ELS frame. More...
struct  fip_login
 A FIP descriptor containing an encapsulated login frame. More...
struct  fip_logo_request
 A FIP descriptor containing an encapsulated LOGO request frame. More...
struct  fip_logo_response
 A FIP descriptor containing an encapsulated LOGO response frame. More...
struct  fip_elp
 A FIP descriptor containing an encapsulated ELP frame. More...
struct  fip_ls_rjt
 A FIP descriptor containing an encapsulated LS_RJT frame. More...
struct  fip_vx_port_id
 A FIP Vx port identification descriptor. More...
struct  fip_fka_adv_p
 A FIP FKA ADV period descriptor. More...
struct  fip_vendor_id
 A FIP vendor ID descriptor. More...
struct  fip_vlan
 A FIP VLAN descriptor. More...
union  fip_descriptor
 A FIP descriptor. More...
struct  fip_descriptors
 A FIP descriptor set. More...

Macros

#define FIP_VERSION   0x10
 FIP frame version.
#define FIP_IS_CRITICAL(type)
 FIP descriptor type is critical.
#define FIP_DEFAULT_PRIORITY   128
 Default FIP priority.
#define FIP_LOWEST_PRIORITY   255
 Lowest FIP priority.
#define FIP_DESCRIPTOR(type, name)
 Define a function to extract a specific FIP descriptor type from a list.

Enumerations

enum  fip_code { FIP_CODE_DISCOVERY = 0x0001 , FIP_CODE_ELS = 0x0002 , FIP_CODE_MAINTAIN = 0x0003 , FIP_CODE_VLAN = 0x0004 }
 FIP protocol code. More...
enum  fip_discovery_subcode { FIP_DISCOVERY_SOLICIT = 0x01 , FIP_DISCOVERY_ADVERTISE = 0x02 }
 FIP protocol subcode for discovery. More...
enum  fip_els_subcode { FIP_ELS_REQUEST = 0x01 , FIP_ELS_RESPONSE = 0x02 }
 FIP protocol subcode for extended link services. More...
enum  fip_vitality_subcode { FIP_MAINTAIN_KEEP_ALIVE = 0x01 , FIP_MAINTAIN_CLEAR_LINKS = 0x02 }
 FIP protocol subcode for keep alive / clear links. More...
enum  fip_vlan_subcode { FIP_VLAN_REQUEST = 0x01 , FIP_VLAN_NOTIFY = 0x02 }
 FIP protocol subcode for VLAN. More...
enum  fip_flags {
  FIP_FP = 0x8000 , FIP_SP = 0x4000 , FIP_A = 0x0004 , FIP_S = 0x0002 ,
  FIP_F = 0x0001
}
 FIP flags. More...
enum  fip_type {
  FIP_RESERVED = 0x00 , FIP_PRIORITY = 0x01 , FIP_MAC_ADDRESS = 0x02 , FIP_FC_MAP = 0x03 ,
  FIP_NAME_ID = 0x04 , FIP_FABRIC = 0x05 , FIP_MAX_FCOE_SIZE = 0x06 , FIP_FLOGI = 0x07 ,
  FIP_NPIV_FDISC = 0x08 , FIP_LOGO = 0x09 , FIP_ELP = 0x0a , FIP_VX_PORT_ID = 0x0b ,
  FIP_FKA_ADV_P = 0x0c , FIP_VENDOR_ID = 0x0d , FIP_VLAN = 0x0e , FIP_NUM_DESCRIPTOR_TYPES
}
 FIP descriptor types. More...
enum  fip_fka_adv_p_flags { FIP_NO_KEEPALIVE = 0x01 }
 FIP FKA ADV period flags. More...

Functions

 FIP_DESCRIPTOR (FIP_PRIORITY, priority)
 FIP_DESCRIPTOR (FIP_MAC_ADDRESS, mac_address)
 FIP_DESCRIPTOR (FIP_FC_MAP, fc_map)
 FIP_DESCRIPTOR (FIP_NAME_ID, name_id)
 FIP_DESCRIPTOR (FIP_FABRIC, fabric)
 FIP_DESCRIPTOR (FIP_MAX_FCOE_SIZE, max_fcoe_size)
 FIP_DESCRIPTOR (FIP_FLOGI, flogi)
 FIP_DESCRIPTOR (FIP_FLOGI, flogi_request)
 FIP_DESCRIPTOR (FIP_FLOGI, flogi_ls_acc)
 FIP_DESCRIPTOR (FIP_FLOGI, flogi_ls_rjt)
 FIP_DESCRIPTOR (FIP_NPIV_FDISC, npiv_fdisc)
 FIP_DESCRIPTOR (FIP_NPIV_FDISC, npiv_fdisc_request)
 FIP_DESCRIPTOR (FIP_NPIV_FDISC, npiv_fdisc_ls_acc)
 FIP_DESCRIPTOR (FIP_NPIV_FDISC, npiv_fdisc_ls_rjt)
 FIP_DESCRIPTOR (FIP_LOGO, logo)
 FIP_DESCRIPTOR (FIP_LOGO, logo_request)
 FIP_DESCRIPTOR (FIP_LOGO, logo_ls_acc)
 FIP_DESCRIPTOR (FIP_LOGO, logo_ls_rjt)
 FIP_DESCRIPTOR (FIP_ELP, elp)
 FIP_DESCRIPTOR (FIP_ELP, elp_request)
 FIP_DESCRIPTOR (FIP_ELP, elp_ls_acc)
 FIP_DESCRIPTOR (FIP_ELP, elp_ls_rjt)
 FIP_DESCRIPTOR (FIP_VX_PORT_ID, vx_port_id)
 FIP_DESCRIPTOR (FIP_FKA_ADV_P, fka_adv_p)
 FIP_DESCRIPTOR (FIP_VENDOR_ID, vendor_id)
 FIP_DESCRIPTOR (FIP_VLAN, vlan)

Macro Definition Documentation

◆ FIP_VERSION

#define FIP_VERSION   0x10

FIP frame version.

Definition at line 47 of file fip.h.

Referenced by fcoe_deliver(), fcoe_fip_parse(), fcoe_fip_tx_keepalive(), fcoe_fip_tx_solicitation(), and fcoe_fip_tx_vlan().

◆ FIP_IS_CRITICAL

#define FIP_IS_CRITICAL ( type)
Value:
( (type) <= 0x7f )
uint32_t type
Operating system type.
Definition ena.h:1

FIP descriptor type is critical.

Definition at line 121 of file fip.h.

Referenced by fcoe_fip_parse().

◆ FIP_DEFAULT_PRIORITY

#define FIP_DEFAULT_PRIORITY   128

Default FIP priority.

Definition at line 139 of file fip.h.

◆ FIP_LOWEST_PRIORITY

#define FIP_LOWEST_PRIORITY   255

Lowest FIP priority.

Definition at line 142 of file fip.h.

Referenced by fcoe_reset().

◆ FIP_DESCRIPTOR

#define FIP_DESCRIPTOR ( type,
name )
Value:
static inline __attribute__ (( always_inline )) \
typeof ( ( ( union fip_descriptor * ) NULL )->name ) * \
fip_ ## name ( struct fip_descriptors *descs ) { \
return &(descs->desc[type]->name); \
}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
const char * name
Definition ath9k_hw.c:1986
#define __attribute__(x)
Definition compiler.h:10
A FIP descriptor set.
Definition fip.h:406
union fip_descriptor * desc[FIP_NUM_DESCRIPTOR_TYPES]
Descriptors, indexed by type.
Definition fip.h:408
A FIP descriptor.
Definition fip.h:348

Define a function to extract a specific FIP descriptor type from a list.

Parameters
typeDescriptor type
nameDescriptor name
finderDescriptor finder

Definition at line 418 of file fip.h.

418#define FIP_DESCRIPTOR( type, name ) \
419 static inline __attribute__ (( always_inline )) \
420 typeof ( ( ( union fip_descriptor * ) NULL )->name ) * \
421 fip_ ## name ( struct fip_descriptors *descs ) { \
422 return &(descs->desc[type]->name); \
423 }

Enumeration Type Documentation

◆ fip_code

enum fip_code

FIP protocol code.

Enumerator
FIP_CODE_DISCOVERY 

Discovery.

FIP_CODE_ELS 

Extended link services.

FIP_CODE_MAINTAIN 

Maintain virtual links.

FIP_CODE_VLAN 

VLAN.

Definition at line 50 of file fip.h.

50 {
51 FIP_CODE_DISCOVERY = 0x0001, /**< Discovery */
52 FIP_CODE_ELS = 0x0002, /**< Extended link services */
53 FIP_CODE_MAINTAIN = 0x0003, /**< Maintain virtual links */
54 FIP_CODE_VLAN = 0x0004, /**< VLAN */
55};
@ FIP_CODE_ELS
Extended link services.
Definition fip.h:52
@ FIP_CODE_DISCOVERY
Discovery.
Definition fip.h:51
@ FIP_CODE_MAINTAIN
Maintain virtual links.
Definition fip.h:53
@ FIP_CODE_VLAN
VLAN.
Definition fip.h:54

◆ fip_discovery_subcode

FIP protocol subcode for discovery.

Enumerator
FIP_DISCOVERY_SOLICIT 

Discovery solicitation.

FIP_DISCOVERY_ADVERTISE 

Discovery advertisement.

Definition at line 58 of file fip.h.

58 {
59 FIP_DISCOVERY_SOLICIT = 0x01, /**< Discovery solicitation */
60 FIP_DISCOVERY_ADVERTISE = 0x02, /**< Discovery advertisement */
61};
@ FIP_DISCOVERY_SOLICIT
Discovery solicitation.
Definition fip.h:59
@ FIP_DISCOVERY_ADVERTISE
Discovery advertisement.
Definition fip.h:60

◆ fip_els_subcode

FIP protocol subcode for extended link services.

Enumerator
FIP_ELS_REQUEST 

ELS request.

FIP_ELS_RESPONSE 

ELS response.

Definition at line 64 of file fip.h.

64 {
65 FIP_ELS_REQUEST = 0x01, /**< ELS request */
66 FIP_ELS_RESPONSE = 0x02, /**< ELS response */
67};
@ FIP_ELS_REQUEST
ELS request.
Definition fip.h:65
@ FIP_ELS_RESPONSE
ELS response.
Definition fip.h:66

◆ fip_vitality_subcode

FIP protocol subcode for keep alive / clear links.

Enumerator
FIP_MAINTAIN_KEEP_ALIVE 

Keep alive.

FIP_MAINTAIN_CLEAR_LINKS 

Clear virtual links.

Definition at line 70 of file fip.h.

70 {
71 FIP_MAINTAIN_KEEP_ALIVE = 0x01, /**< Keep alive */
72 FIP_MAINTAIN_CLEAR_LINKS = 0x02,/**< Clear virtual links */
73};
@ FIP_MAINTAIN_KEEP_ALIVE
Keep alive.
Definition fip.h:71
@ FIP_MAINTAIN_CLEAR_LINKS
Clear virtual links.
Definition fip.h:72

◆ fip_vlan_subcode

FIP protocol subcode for VLAN.

Enumerator
FIP_VLAN_REQUEST 

VLAN request.

FIP_VLAN_NOTIFY 

VLAN notification.

Definition at line 76 of file fip.h.

76 {
77 FIP_VLAN_REQUEST = 0x01, /**< VLAN request */
78 FIP_VLAN_NOTIFY = 0x02, /**< VLAN notification */
79};
@ FIP_VLAN_REQUEST
VLAN request.
Definition fip.h:77
@ FIP_VLAN_NOTIFY
VLAN notification.
Definition fip.h:78

◆ fip_flags

enum fip_flags

FIP flags.

Enumerator
FIP_FP 

Fabric-provided MAC address.

FIP_SP 

Server-provided MAC address.

FIP_A 

Available for login.

FIP_S 

Solicited.

FIP_F 

Forwarder.

Definition at line 82 of file fip.h.

82 {
83 FIP_FP = 0x8000, /**< Fabric-provided MAC address */
84 FIP_SP = 0x4000, /**< Server-provided MAC address */
85 FIP_A = 0x0004, /**< Available for login */
86 FIP_S = 0x0002, /**< Solicited */
87 FIP_F = 0x0001, /**< Forwarder */
88};
@ FIP_SP
Server-provided MAC address.
Definition fip.h:84
@ FIP_FP
Fabric-provided MAC address.
Definition fip.h:83
@ FIP_S
Solicited.
Definition fip.h:86
@ FIP_A
Available for login.
Definition fip.h:85
@ FIP_F
Forwarder.
Definition fip.h:87

◆ fip_type

enum fip_type

FIP descriptor types.

Enumerator
FIP_RESERVED 

Reserved.

FIP_PRIORITY 

Priority.

FIP_MAC_ADDRESS 

MAC address.

FIP_FC_MAP 

FC-MAP.

FIP_NAME_ID 

Name identifier.

FIP_FABRIC 

Fabric.

FIP_MAX_FCOE_SIZE 

Max FCoE size.

FIP_FLOGI 

FLOGI.

FIP_NPIV_FDISC 

NPIV FDISC.

FIP_LOGO 

LOGO.

FIP_ELP 

ELP.

FIP_VX_PORT_ID 

Vx port identification.

FIP_FKA_ADV_P 

FKA ADV period.

FIP_VENDOR_ID 

Vendor ID.

FIP_VLAN 

VLAN.

FIP_NUM_DESCRIPTOR_TYPES 

Definition at line 101 of file fip.h.

101 {
102 FIP_RESERVED = 0x00, /**< Reserved */
103 FIP_PRIORITY = 0x01, /**< Priority */
104 FIP_MAC_ADDRESS = 0x02, /**< MAC address */
105 FIP_FC_MAP = 0x03, /**< FC-MAP */
106 FIP_NAME_ID = 0x04, /**< Name identifier */
107 FIP_FABRIC = 0x05, /**< Fabric */
108 FIP_MAX_FCOE_SIZE = 0x06, /**< Max FCoE size */
109 FIP_FLOGI = 0x07, /**< FLOGI */
110 FIP_NPIV_FDISC = 0x08, /**< NPIV FDISC */
111 FIP_LOGO = 0x09, /**< LOGO */
112 FIP_ELP = 0x0a, /**< ELP */
113 FIP_VX_PORT_ID = 0x0b, /**< Vx port identification */
114 FIP_FKA_ADV_P = 0x0c, /**< FKA ADV period */
115 FIP_VENDOR_ID = 0x0d, /**< Vendor ID */
116 FIP_VLAN = 0x0e, /**< VLAN */
118};
@ FIP_NPIV_FDISC
NPIV FDISC.
Definition fip.h:110
@ FIP_MAX_FCOE_SIZE
Max FCoE size.
Definition fip.h:108
@ FIP_FC_MAP
FC-MAP.
Definition fip.h:105
@ FIP_FKA_ADV_P
FKA ADV period.
Definition fip.h:114
@ FIP_RESERVED
Reserved.
Definition fip.h:102
@ FIP_PRIORITY
Priority.
Definition fip.h:103
@ FIP_VENDOR_ID
Vendor ID.
Definition fip.h:115
@ FIP_ELP
ELP.
Definition fip.h:112
@ FIP_VX_PORT_ID
Vx port identification.
Definition fip.h:113
@ FIP_MAC_ADDRESS
MAC address.
Definition fip.h:104
@ FIP_VLAN
VLAN.
Definition fip.h:116
@ FIP_NUM_DESCRIPTOR_TYPES
Definition fip.h:117
@ FIP_NAME_ID
Name identifier.
Definition fip.h:106
@ FIP_FLOGI
FLOGI.
Definition fip.h:109
@ FIP_FABRIC
Fabric.
Definition fip.h:107
@ FIP_LOGO
LOGO.
Definition fip.h:111

◆ fip_fka_adv_p_flags

FIP FKA ADV period flags.

Enumerator
FIP_NO_KEEPALIVE 

Do not send keepalives.

Definition at line 321 of file fip.h.

321 {
322 FIP_NO_KEEPALIVE = 0x01, /**< Do not send keepalives */
323};
@ FIP_NO_KEEPALIVE
Do not send keepalives.
Definition fip.h:322

Function Documentation

◆ FIP_DESCRIPTOR() [1/26]

FIP_DESCRIPTOR ( FIP_PRIORITY ,
priority  )

References FIP_PRIORITY, and priority.

◆ FIP_DESCRIPTOR() [2/26]

FIP_DESCRIPTOR ( FIP_MAC_ADDRESS ,
mac_address  )

References FIP_MAC_ADDRESS.

◆ FIP_DESCRIPTOR() [3/26]

FIP_DESCRIPTOR ( FIP_FC_MAP ,
fc_map  )

References FIP_FC_MAP.

◆ FIP_DESCRIPTOR() [4/26]

FIP_DESCRIPTOR ( FIP_NAME_ID ,
name_id  )

References FIP_NAME_ID.

◆ FIP_DESCRIPTOR() [5/26]

FIP_DESCRIPTOR ( FIP_FABRIC ,
fabric  )

References FIP_FABRIC.

◆ FIP_DESCRIPTOR() [6/26]

FIP_DESCRIPTOR ( FIP_MAX_FCOE_SIZE ,
max_fcoe_size  )

References FIP_MAX_FCOE_SIZE.

◆ FIP_DESCRIPTOR() [7/26]

FIP_DESCRIPTOR ( FIP_FLOGI ,
flogi  )

References FIP_FLOGI.

◆ FIP_DESCRIPTOR() [8/26]

FIP_DESCRIPTOR ( FIP_FLOGI ,
flogi_request  )

References FIP_FLOGI.

◆ FIP_DESCRIPTOR() [9/26]

FIP_DESCRIPTOR ( FIP_FLOGI ,
flogi_ls_acc  )

References FIP_FLOGI.

◆ FIP_DESCRIPTOR() [10/26]

FIP_DESCRIPTOR ( FIP_FLOGI ,
flogi_ls_rjt  )

References FIP_FLOGI.

◆ FIP_DESCRIPTOR() [11/26]

FIP_DESCRIPTOR ( FIP_NPIV_FDISC ,
npiv_fdisc  )

References FIP_NPIV_FDISC.

◆ FIP_DESCRIPTOR() [12/26]

FIP_DESCRIPTOR ( FIP_NPIV_FDISC ,
npiv_fdisc_request  )

References FIP_NPIV_FDISC.

◆ FIP_DESCRIPTOR() [13/26]

FIP_DESCRIPTOR ( FIP_NPIV_FDISC ,
npiv_fdisc_ls_acc  )

References FIP_NPIV_FDISC.

◆ FIP_DESCRIPTOR() [14/26]

FIP_DESCRIPTOR ( FIP_NPIV_FDISC ,
npiv_fdisc_ls_rjt  )

References FIP_NPIV_FDISC.

◆ FIP_DESCRIPTOR() [15/26]

FIP_DESCRIPTOR ( FIP_LOGO ,
logo  )

References FIP_LOGO.

◆ FIP_DESCRIPTOR() [16/26]

FIP_DESCRIPTOR ( FIP_LOGO ,
logo_request  )

References FIP_LOGO.

◆ FIP_DESCRIPTOR() [17/26]

FIP_DESCRIPTOR ( FIP_LOGO ,
logo_ls_acc  )

References FIP_LOGO.

◆ FIP_DESCRIPTOR() [18/26]

FIP_DESCRIPTOR ( FIP_LOGO ,
logo_ls_rjt  )

References FIP_LOGO.

◆ FIP_DESCRIPTOR() [19/26]

FIP_DESCRIPTOR ( FIP_ELP ,
elp  )

References FIP_ELP.

◆ FIP_DESCRIPTOR() [20/26]

FIP_DESCRIPTOR ( FIP_ELP ,
elp_request  )

References FIP_ELP.

◆ FIP_DESCRIPTOR() [21/26]

FIP_DESCRIPTOR ( FIP_ELP ,
elp_ls_acc  )

References FIP_ELP.

◆ FIP_DESCRIPTOR() [22/26]

FIP_DESCRIPTOR ( FIP_ELP ,
elp_ls_rjt  )

References FIP_ELP.

◆ FIP_DESCRIPTOR() [23/26]

FIP_DESCRIPTOR ( FIP_VX_PORT_ID ,
vx_port_id  )

References FIP_VX_PORT_ID.

◆ FIP_DESCRIPTOR() [24/26]

FIP_DESCRIPTOR ( FIP_FKA_ADV_P ,
fka_adv_p  )

References FIP_FKA_ADV_P.

◆ FIP_DESCRIPTOR() [25/26]

FIP_DESCRIPTOR ( FIP_VENDOR_ID ,
vendor_id  )

References FIP_VENDOR_ID, and vendor_id.

◆ FIP_DESCRIPTOR() [26/26]

FIP_DESCRIPTOR ( FIP_VLAN ,
vlan  )

References FIP_VLAN.