160 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
 | 
						|
 * All rights reserved
 | 
						|
 * www.brocade.com
 | 
						|
 *
 | 
						|
 *  bfa_defs_cee.h Interface declarations between host based
 | 
						|
 *	BFAL and DCBX/LLDP module in Firmware
 | 
						|
 *
 | 
						|
 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify it
 | 
						|
 * under the terms of the GNU General Public License (GPL) Version 2 as
 | 
						|
 * published by the Free Software Foundation
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful, but
 | 
						|
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
 * General Public License for more details.
 | 
						|
 */
 | 
						|
#ifndef __BFA_DEFS_CEE_H__
 | 
						|
#define __BFA_DEFS_CEE_H__
 | 
						|
 | 
						|
#include <defs/bfa_defs_types.h>
 | 
						|
#include <defs/bfa_defs_pport.h>
 | 
						|
#include <protocol/types.h>
 | 
						|
 | 
						|
#pragma pack(1)
 | 
						|
 | 
						|
#define BFA_CEE_LLDP_MAX_STRING_LEN (128)
 | 
						|
 | 
						|
 | 
						|
/* FIXME: this is coming from the protocol spec. Can the host & apps share the
 | 
						|
   protocol .h files ?
 | 
						|
 */
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_OTHER       0x0001
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_REPEATER    0x0002
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_MAC_BRIDGE  0x0004
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_WLAN_AP     0x0008
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_ROUTER      0x0010
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_TELEPHONE 	 0x0020
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_DOCSIS_CD   0x0040
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_STATION     0x0080
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_CVLAN	     0x0100
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_SVLAN 	     0x0200
 | 
						|
#define BFA_CEE_LLDP_SYS_CAP_TPMR		 0x0400
 | 
						|
 | 
						|
 | 
						|
/* LLDP string type */
 | 
						|
struct bfa_cee_lldp_str_s {
 | 
						|
	u8 sub_type;
 | 
						|
	u8 len;
 | 
						|
	u8 rsvd[2];
 | 
						|
	u8 value[BFA_CEE_LLDP_MAX_STRING_LEN];
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/* LLDP paramters */
 | 
						|
struct bfa_cee_lldp_cfg_s {
 | 
						|
	struct bfa_cee_lldp_str_s chassis_id;
 | 
						|
	struct bfa_cee_lldp_str_s port_id;
 | 
						|
	struct bfa_cee_lldp_str_s port_desc;
 | 
						|
	struct bfa_cee_lldp_str_s sys_name;
 | 
						|
	struct bfa_cee_lldp_str_s sys_desc;
 | 
						|
	struct bfa_cee_lldp_str_s mgmt_addr;
 | 
						|
	u16    time_to_interval;
 | 
						|
	u16    enabled_system_cap;
 | 
						|
};
 | 
						|
 | 
						|
enum bfa_cee_dcbx_version_e {
 | 
						|
	DCBX_PROTOCOL_PRECEE = 1,
 | 
						|
	DCBX_PROTOCOL_CEE    = 2,
 | 
						|
};
 | 
						|
 | 
						|
enum bfa_cee_lls_e {
 | 
						|
	CEE_LLS_DOWN_NO_TLV = 0, /* LLS is down because the TLV not sent by
 | 
						|
				  * the peer */
 | 
						|
	CEE_LLS_DOWN        = 1, /* LLS is down as advertised by the peer */
 | 
						|
	CEE_LLS_UP          = 2,
 | 
						|
};
 | 
						|
 | 
						|
/* CEE/DCBX parameters */
 | 
						|
struct bfa_cee_dcbx_cfg_s {
 | 
						|
	u8 pgid[8];
 | 
						|
	u8 pg_percentage[8];
 | 
						|
	u8 pfc_enabled;          /* bitmap of priorties with PFC enabled */
 | 
						|
	u8 fcoe_user_priority;   /* bitmap of priorities used for FcoE
 | 
						|
				       * traffic */
 | 
						|
	u8 dcbx_version;	/* operating version:CEE or preCEE */
 | 
						|
	u8 lls_fcoe;	/* FCoE Logical Link Status */
 | 
						|
	u8 lls_lan;	/* LAN Logical Link Status */
 | 
						|
	u8 rsvd[3];
 | 
						|
};
 | 
						|
 | 
						|
/* CEE status */
 | 
						|
/* Making this to tri-state for the benefit of port list command */
 | 
						|
enum bfa_cee_status_e {
 | 
						|
    CEE_PHY_DOWN = 0,
 | 
						|
    CEE_PHY_UP = 1,
 | 
						|
    CEE_UP = 2,
 | 
						|
};
 | 
						|
 | 
						|
/* CEE Query */
 | 
						|
struct bfa_cee_attr_s {
 | 
						|
	u8                   cee_status;
 | 
						|
	u8                   error_reason;
 | 
						|
	struct bfa_cee_lldp_cfg_s lldp_remote;
 | 
						|
	struct bfa_cee_dcbx_cfg_s dcbx_remote;
 | 
						|
	mac_t src_mac;
 | 
						|
	u8 link_speed;
 | 
						|
	u8 filler[3];
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/* LLDP/DCBX/CEE Statistics */
 | 
						|
 | 
						|
struct bfa_cee_lldp_stats_s {
 | 
						|
	u32 frames_transmitted;
 | 
						|
	u32 frames_aged_out;
 | 
						|
	u32 frames_discarded;
 | 
						|
	u32 frames_in_error;
 | 
						|
	u32 frames_rcvd;
 | 
						|
	u32 tlvs_discarded;
 | 
						|
	u32 tlvs_unrecognized;
 | 
						|
};
 | 
						|
 | 
						|
struct bfa_cee_dcbx_stats_s {
 | 
						|
	u32 subtlvs_unrecognized;
 | 
						|
	u32 negotiation_failed;
 | 
						|
	u32 remote_cfg_changed;
 | 
						|
	u32 tlvs_received;
 | 
						|
	u32 tlvs_invalid;
 | 
						|
	u32 seqno;
 | 
						|
	u32 ackno;
 | 
						|
	u32 recvd_seqno;
 | 
						|
	u32 recvd_ackno;
 | 
						|
};
 | 
						|
 | 
						|
struct bfa_cee_cfg_stats_s {
 | 
						|
	u32 cee_status_down;
 | 
						|
	u32 cee_status_up;
 | 
						|
	u32 cee_hw_cfg_changed;
 | 
						|
	u32 recvd_invalid_cfg;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
struct bfa_cee_stats_s {
 | 
						|
	struct bfa_cee_lldp_stats_s lldp_stats;
 | 
						|
	struct bfa_cee_dcbx_stats_s dcbx_stats;
 | 
						|
	struct bfa_cee_cfg_stats_s  cfg_stats;
 | 
						|
};
 | 
						|
 | 
						|
#pragma pack()
 | 
						|
 | 
						|
 | 
						|
#endif	/* __BFA_DEFS_CEE_H__ */
 | 
						|
 | 
						|
 |