1/* 2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. 3 * All rights reserved 4 * www.brocade.com 5 * 6 * bfa_defs_cee.h Interface declarations between host based 7 * BFAL and DCBX/LLDP module in Firmware 8 * 9 * Linux driver for Brocade Fibre Channel Host Bus Adapter. 10 * 11 * This program is free software; you can redistribute it and/or modify it 12 * under the terms of the GNU General Public License (GPL) Version 2 as 13 * published by the Free Software Foundation 14 * 15 * This program is distributed in the hope that it will be useful, but 16 * WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * General Public License for more details. 19 */ 20#ifndef __BFA_DEFS_CEE_H__ 21#define __BFA_DEFS_CEE_H__ 22 23#include <defs/bfa_defs_types.h> 24#include <defs/bfa_defs_pport.h> 25#include <protocol/types.h> 26 27#pragma pack(1) 28 29#define BFA_CEE_LLDP_MAX_STRING_LEN (128) 30 31#define BFA_CEE_LLDP_SYS_CAP_OTHER 0x0001 32#define BFA_CEE_LLDP_SYS_CAP_REPEATER 0x0002 33#define BFA_CEE_LLDP_SYS_CAP_MAC_BRIDGE 0x0004 34#define BFA_CEE_LLDP_SYS_CAP_WLAN_AP 0x0008 35#define BFA_CEE_LLDP_SYS_CAP_ROUTER 0x0010 36#define BFA_CEE_LLDP_SYS_CAP_TELEPHONE 0x0020 37#define BFA_CEE_LLDP_SYS_CAP_DOCSIS_CD 0x0040 38#define BFA_CEE_LLDP_SYS_CAP_STATION 0x0080 39#define BFA_CEE_LLDP_SYS_CAP_CVLAN 0x0100 40#define BFA_CEE_LLDP_SYS_CAP_SVLAN 0x0200 41#define BFA_CEE_LLDP_SYS_CAP_TPMR 0x0400 42 43 44/* LLDP string type */ 45struct bfa_cee_lldp_str_s { 46 u8 sub_type; 47 u8 len; 48 u8 rsvd[2]; 49 u8 value[BFA_CEE_LLDP_MAX_STRING_LEN]; 50}; 51 52 53/* LLDP parameters */ 54struct bfa_cee_lldp_cfg_s { 55 struct bfa_cee_lldp_str_s chassis_id; 56 struct bfa_cee_lldp_str_s port_id; 57 struct bfa_cee_lldp_str_s port_desc; 58 struct bfa_cee_lldp_str_s sys_name; 59 struct bfa_cee_lldp_str_s sys_desc; 60 struct bfa_cee_lldp_str_s mgmt_addr; 61 u16 time_to_interval; 62 u16 enabled_system_cap; 63}; 64 65enum bfa_cee_dcbx_version_e { 66 DCBX_PROTOCOL_PRECEE = 1, 67 DCBX_PROTOCOL_CEE = 2, 68}; 69 70enum bfa_cee_lls_e { 71 CEE_LLS_DOWN_NO_TLV = 0, /* LLS is down because the TLV not sent by 72 * the peer */ 73 CEE_LLS_DOWN = 1, /* LLS is down as advertised by the peer */ 74 CEE_LLS_UP = 2, 75}; 76 77/* CEE/DCBX parameters */ 78struct bfa_cee_dcbx_cfg_s { 79 u8 pgid[8]; 80 u8 pg_percentage[8]; 81 u8 pfc_enabled; /* bitmap of priorties with PFC enabled */ 82 u8 fcoe_user_priority; /* bitmap of priorities used for FcoE 83 * traffic */ 84 u8 dcbx_version; /* operating version:CEE or preCEE */ 85 u8 lls_fcoe; /* FCoE Logical Link Status */ 86 u8 lls_lan; /* LAN Logical Link Status */ 87 u8 rsvd[3]; 88}; 89 90/* CEE status */ 91/* Making this to tri-state for the benefit of port list command */ 92enum bfa_cee_status_e { 93 CEE_UP = 0, 94 CEE_PHY_UP = 1, 95 CEE_LOOPBACK = 2, 96 CEE_PHY_DOWN = 3, 97}; 98 99/* CEE Query */ 100struct bfa_cee_attr_s { 101 u8 cee_status; 102 u8 error_reason; 103 struct bfa_cee_lldp_cfg_s lldp_remote; 104 struct bfa_cee_dcbx_cfg_s dcbx_remote; 105 mac_t src_mac; 106 u8 link_speed; 107 u8 nw_priority; 108 u8 filler[2]; 109}; 110 111 112 113 114/* LLDP/DCBX/CEE Statistics */ 115 116struct bfa_cee_lldp_stats_s { 117 u32 frames_transmitted; 118 u32 frames_aged_out; 119 u32 frames_discarded; 120 u32 frames_in_error; 121 u32 frames_rcvd; 122 u32 tlvs_discarded; 123 u32 tlvs_unrecognized; 124}; 125 126struct bfa_cee_dcbx_stats_s { 127 u32 subtlvs_unrecognized; 128 u32 negotiation_failed; 129 u32 remote_cfg_changed; 130 u32 tlvs_received; 131 u32 tlvs_invalid; 132 u32 seqno; 133 u32 ackno; 134 u32 recvd_seqno; 135 u32 recvd_ackno; 136}; 137 138struct bfa_cee_cfg_stats_s { 139 u32 cee_status_down; 140 u32 cee_status_up; 141 u32 cee_hw_cfg_changed; 142 u32 recvd_invalid_cfg; 143}; 144 145 146struct bfa_cee_stats_s { 147 struct bfa_cee_lldp_stats_s lldp_stats; 148 struct bfa_cee_dcbx_stats_s dcbx_stats; 149 struct bfa_cee_cfg_stats_s cfg_stats; 150}; 151 152#pragma pack() 153 154 155#endif /* __BFA_DEFS_CEE_H__ */ 156