19aebddd1SJeff Kirsher /* 2c7bb15a6SVasundhara Volam * Copyright (C) 2005 - 2013 Emulex 39aebddd1SJeff Kirsher * All rights reserved. 49aebddd1SJeff Kirsher * 59aebddd1SJeff Kirsher * This program is free software; you can redistribute it and/or 69aebddd1SJeff Kirsher * modify it under the terms of the GNU General Public License version 2 79aebddd1SJeff Kirsher * as published by the Free Software Foundation. The full GNU General 89aebddd1SJeff Kirsher * Public License is included in this distribution in the file called COPYING. 99aebddd1SJeff Kirsher * 109aebddd1SJeff Kirsher * Contact Information: 119aebddd1SJeff Kirsher * linux-drivers@emulex.com 129aebddd1SJeff Kirsher * 139aebddd1SJeff Kirsher * Emulex 149aebddd1SJeff Kirsher * 3333 Susan Street 159aebddd1SJeff Kirsher * Costa Mesa, CA 92626 169aebddd1SJeff Kirsher */ 179aebddd1SJeff Kirsher 189aebddd1SJeff Kirsher /* 199aebddd1SJeff Kirsher * The driver sends configuration and managements command requests to the 209aebddd1SJeff Kirsher * firmware in the BE. These requests are communicated to the processor 219aebddd1SJeff Kirsher * using Work Request Blocks (WRBs) submitted to the MCC-WRB ring or via one 229aebddd1SJeff Kirsher * WRB inside a MAILBOX. 239aebddd1SJeff Kirsher * The commands are serviced by the ARM processor in the BladeEngine's MPU. 249aebddd1SJeff Kirsher */ 259aebddd1SJeff Kirsher 269aebddd1SJeff Kirsher struct be_sge { 279aebddd1SJeff Kirsher u32 pa_lo; 289aebddd1SJeff Kirsher u32 pa_hi; 299aebddd1SJeff Kirsher u32 len; 309aebddd1SJeff Kirsher }; 319aebddd1SJeff Kirsher 329aebddd1SJeff Kirsher #define MCC_WRB_EMBEDDED_MASK 1 /* bit 0 of dword 0*/ 339aebddd1SJeff Kirsher #define MCC_WRB_SGE_CNT_SHIFT 3 /* bits 3 - 7 of dword 0 */ 349aebddd1SJeff Kirsher #define MCC_WRB_SGE_CNT_MASK 0x1F /* bits 3 - 7 of dword 0 */ 359aebddd1SJeff Kirsher struct be_mcc_wrb { 369aebddd1SJeff Kirsher u32 embedded; /* dword 0 */ 379aebddd1SJeff Kirsher u32 payload_length; /* dword 1 */ 389aebddd1SJeff Kirsher u32 tag0; /* dword 2 */ 399aebddd1SJeff Kirsher u32 tag1; /* dword 3 */ 409aebddd1SJeff Kirsher u32 rsvd; /* dword 4 */ 419aebddd1SJeff Kirsher union { 429aebddd1SJeff Kirsher u8 embedded_payload[236]; /* used by embedded cmds */ 439aebddd1SJeff Kirsher struct be_sge sgl[19]; /* used by non-embedded cmds */ 449aebddd1SJeff Kirsher } payload; 459aebddd1SJeff Kirsher }; 469aebddd1SJeff Kirsher 479aebddd1SJeff Kirsher #define CQE_FLAGS_VALID_MASK (1 << 31) 489aebddd1SJeff Kirsher #define CQE_FLAGS_ASYNC_MASK (1 << 30) 499aebddd1SJeff Kirsher #define CQE_FLAGS_COMPLETED_MASK (1 << 28) 509aebddd1SJeff Kirsher #define CQE_FLAGS_CONSUMED_MASK (1 << 27) 519aebddd1SJeff Kirsher 529aebddd1SJeff Kirsher /* Completion Status */ 539aebddd1SJeff Kirsher enum { 549aebddd1SJeff Kirsher MCC_STATUS_SUCCESS = 0, 559aebddd1SJeff Kirsher MCC_STATUS_FAILED = 1, 569aebddd1SJeff Kirsher MCC_STATUS_ILLEGAL_REQUEST = 2, 579aebddd1SJeff Kirsher MCC_STATUS_ILLEGAL_FIELD = 3, 589aebddd1SJeff Kirsher MCC_STATUS_INSUFFICIENT_BUFFER = 4, 599aebddd1SJeff Kirsher MCC_STATUS_UNAUTHORIZED_REQUEST = 5, 609aebddd1SJeff Kirsher MCC_STATUS_NOT_SUPPORTED = 66 619aebddd1SJeff Kirsher }; 629aebddd1SJeff Kirsher 63d9d604f8SAjit Khaparde #define MCC_ADDL_STS_INSUFFICIENT_RESOURCES 0x16 64d9d604f8SAjit Khaparde 659aebddd1SJeff Kirsher #define CQE_STATUS_COMPL_MASK 0xFFFF 669aebddd1SJeff Kirsher #define CQE_STATUS_COMPL_SHIFT 0 /* bits 0 - 15 */ 679aebddd1SJeff Kirsher #define CQE_STATUS_EXTD_MASK 0xFFFF 689aebddd1SJeff Kirsher #define CQE_STATUS_EXTD_SHIFT 16 /* bits 16 - 31 */ 699aebddd1SJeff Kirsher 709aebddd1SJeff Kirsher struct be_mcc_compl { 719aebddd1SJeff Kirsher u32 status; /* dword 0 */ 729aebddd1SJeff Kirsher u32 tag0; /* dword 1 */ 739aebddd1SJeff Kirsher u32 tag1; /* dword 2 */ 749aebddd1SJeff Kirsher u32 flags; /* dword 3 */ 759aebddd1SJeff Kirsher }; 769aebddd1SJeff Kirsher 779aebddd1SJeff Kirsher /* When the async bit of mcc_compl is set, the last 4 bytes of 789aebddd1SJeff Kirsher * mcc_compl is interpreted as follows: 799aebddd1SJeff Kirsher */ 809aebddd1SJeff Kirsher #define ASYNC_TRAILER_EVENT_CODE_SHIFT 8 /* bits 8 - 15 */ 819aebddd1SJeff Kirsher #define ASYNC_TRAILER_EVENT_CODE_MASK 0xFF 829aebddd1SJeff Kirsher #define ASYNC_TRAILER_EVENT_TYPE_SHIFT 16 839aebddd1SJeff Kirsher #define ASYNC_TRAILER_EVENT_TYPE_MASK 0xFF 849aebddd1SJeff Kirsher #define ASYNC_EVENT_CODE_LINK_STATE 0x1 859aebddd1SJeff Kirsher #define ASYNC_EVENT_CODE_GRP_5 0x5 869aebddd1SJeff Kirsher #define ASYNC_EVENT_QOS_SPEED 0x1 879aebddd1SJeff Kirsher #define ASYNC_EVENT_COS_PRIORITY 0x2 889aebddd1SJeff Kirsher #define ASYNC_EVENT_PVID_STATE 0x3 89bc0c3405SAjit Khaparde #define ASYNC_EVENT_CODE_QNQ 0x6 90bc0c3405SAjit Khaparde #define ASYNC_DEBUG_EVENT_TYPE_QNQ 1 91bc0c3405SAjit Khaparde 929aebddd1SJeff Kirsher struct be_async_event_trailer { 939aebddd1SJeff Kirsher u32 code; 949aebddd1SJeff Kirsher }; 959aebddd1SJeff Kirsher 969aebddd1SJeff Kirsher enum { 979aebddd1SJeff Kirsher LINK_DOWN = 0x0, 989aebddd1SJeff Kirsher LINK_UP = 0x1 999aebddd1SJeff Kirsher }; 1009aebddd1SJeff Kirsher #define LINK_STATUS_MASK 0x1 1012e177a5cSPadmanabh Ratnakar #define LOGICAL_LINK_STATUS_MASK 0x2 1029aebddd1SJeff Kirsher 1039aebddd1SJeff Kirsher /* When the event code of an async trailer is link-state, the mcc_compl 1049aebddd1SJeff Kirsher * must be interpreted as follows 1059aebddd1SJeff Kirsher */ 1069aebddd1SJeff Kirsher struct be_async_event_link_state { 1079aebddd1SJeff Kirsher u8 physical_port; 1089aebddd1SJeff Kirsher u8 port_link_status; 1099aebddd1SJeff Kirsher u8 port_duplex; 1109aebddd1SJeff Kirsher u8 port_speed; 1119aebddd1SJeff Kirsher u8 port_fault; 1129aebddd1SJeff Kirsher u8 rsvd0[7]; 1139aebddd1SJeff Kirsher struct be_async_event_trailer trailer; 1149aebddd1SJeff Kirsher } __packed; 1159aebddd1SJeff Kirsher 1169aebddd1SJeff Kirsher /* When the event code of an async trailer is GRP-5 and event_type is QOS_SPEED 1179aebddd1SJeff Kirsher * the mcc_compl must be interpreted as follows 1189aebddd1SJeff Kirsher */ 1199aebddd1SJeff Kirsher struct be_async_event_grp5_qos_link_speed { 1209aebddd1SJeff Kirsher u8 physical_port; 1219aebddd1SJeff Kirsher u8 rsvd[5]; 1229aebddd1SJeff Kirsher u16 qos_link_speed; 1239aebddd1SJeff Kirsher u32 event_tag; 1249aebddd1SJeff Kirsher struct be_async_event_trailer trailer; 1259aebddd1SJeff Kirsher } __packed; 1269aebddd1SJeff Kirsher 1279aebddd1SJeff Kirsher /* When the event code of an async trailer is GRP5 and event type is 1289aebddd1SJeff Kirsher * CoS-Priority, the mcc_compl must be interpreted as follows 1299aebddd1SJeff Kirsher */ 1309aebddd1SJeff Kirsher struct be_async_event_grp5_cos_priority { 1319aebddd1SJeff Kirsher u8 physical_port; 1329aebddd1SJeff Kirsher u8 available_priority_bmap; 1339aebddd1SJeff Kirsher u8 reco_default_priority; 1349aebddd1SJeff Kirsher u8 valid; 1359aebddd1SJeff Kirsher u8 rsvd0; 1369aebddd1SJeff Kirsher u8 event_tag; 1379aebddd1SJeff Kirsher struct be_async_event_trailer trailer; 1389aebddd1SJeff Kirsher } __packed; 1399aebddd1SJeff Kirsher 1409aebddd1SJeff Kirsher /* When the event code of an async trailer is GRP5 and event type is 1419aebddd1SJeff Kirsher * PVID state, the mcc_compl must be interpreted as follows 1429aebddd1SJeff Kirsher */ 1439aebddd1SJeff Kirsher struct be_async_event_grp5_pvid_state { 1449aebddd1SJeff Kirsher u8 enabled; 1459aebddd1SJeff Kirsher u8 rsvd0; 1469aebddd1SJeff Kirsher u16 tag; 1479aebddd1SJeff Kirsher u32 event_tag; 1489aebddd1SJeff Kirsher u32 rsvd1; 1499aebddd1SJeff Kirsher struct be_async_event_trailer trailer; 1509aebddd1SJeff Kirsher } __packed; 1519aebddd1SJeff Kirsher 152bc0c3405SAjit Khaparde /* async event indicating outer VLAN tag in QnQ */ 153bc0c3405SAjit Khaparde struct be_async_event_qnq { 154bc0c3405SAjit Khaparde u8 valid; /* Indicates if outer VLAN is valid */ 155bc0c3405SAjit Khaparde u8 rsvd0; 156bc0c3405SAjit Khaparde u16 vlan_tag; 157bc0c3405SAjit Khaparde u32 event_tag; 158bc0c3405SAjit Khaparde u8 rsvd1[4]; 159bc0c3405SAjit Khaparde struct be_async_event_trailer trailer; 160bc0c3405SAjit Khaparde } __packed; 161bc0c3405SAjit Khaparde 1629aebddd1SJeff Kirsher struct be_mcc_mailbox { 1639aebddd1SJeff Kirsher struct be_mcc_wrb wrb; 1649aebddd1SJeff Kirsher struct be_mcc_compl compl; 1659aebddd1SJeff Kirsher }; 1669aebddd1SJeff Kirsher 1679aebddd1SJeff Kirsher #define CMD_SUBSYSTEM_COMMON 0x1 1689aebddd1SJeff Kirsher #define CMD_SUBSYSTEM_ETH 0x3 1699aebddd1SJeff Kirsher #define CMD_SUBSYSTEM_LOWLEVEL 0xb 1709aebddd1SJeff Kirsher 1719aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_MAC_QUERY 1 1729aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_MAC_SET 2 1739aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_MULTICAST_SET 3 1749aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_VLAN_CONFIG 4 1759aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_LINK_STATUS_QUERY 5 1769aebddd1SJeff Kirsher #define OPCODE_COMMON_READ_FLASHROM 6 1779aebddd1SJeff Kirsher #define OPCODE_COMMON_WRITE_FLASHROM 7 1789aebddd1SJeff Kirsher #define OPCODE_COMMON_CQ_CREATE 12 1799aebddd1SJeff Kirsher #define OPCODE_COMMON_EQ_CREATE 13 1809aebddd1SJeff Kirsher #define OPCODE_COMMON_MCC_CREATE 21 1819aebddd1SJeff Kirsher #define OPCODE_COMMON_SET_QOS 28 1829aebddd1SJeff Kirsher #define OPCODE_COMMON_MCC_CREATE_EXT 90 1839aebddd1SJeff Kirsher #define OPCODE_COMMON_SEEPROM_READ 30 1849aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_CNTL_ATTRIBUTES 32 1859aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_RX_FILTER 34 1869aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_FW_VERSION 35 1879aebddd1SJeff Kirsher #define OPCODE_COMMON_SET_FLOW_CONTROL 36 1889aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_FLOW_CONTROL 37 1899aebddd1SJeff Kirsher #define OPCODE_COMMON_SET_FRAME_SIZE 39 1909aebddd1SJeff Kirsher #define OPCODE_COMMON_MODIFY_EQ_DELAY 41 1919aebddd1SJeff Kirsher #define OPCODE_COMMON_FIRMWARE_CONFIG 42 1929aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_INTERFACE_CREATE 50 1939aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_INTERFACE_DESTROY 51 1949aebddd1SJeff Kirsher #define OPCODE_COMMON_MCC_DESTROY 53 1959aebddd1SJeff Kirsher #define OPCODE_COMMON_CQ_DESTROY 54 1969aebddd1SJeff Kirsher #define OPCODE_COMMON_EQ_DESTROY 55 1979aebddd1SJeff Kirsher #define OPCODE_COMMON_QUERY_FIRMWARE_CONFIG 58 1989aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_PMAC_ADD 59 1999aebddd1SJeff Kirsher #define OPCODE_COMMON_NTWK_PMAC_DEL 60 2009aebddd1SJeff Kirsher #define OPCODE_COMMON_FUNCTION_RESET 61 2019aebddd1SJeff Kirsher #define OPCODE_COMMON_MANAGE_FAT 68 2029aebddd1SJeff Kirsher #define OPCODE_COMMON_ENABLE_DISABLE_BEACON 69 2039aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_BEACON_STATE 70 2049aebddd1SJeff Kirsher #define OPCODE_COMMON_READ_TRANSRECV_DATA 73 205b4e32a71SPadmanabh Ratnakar #define OPCODE_COMMON_GET_PORT_NAME 77 20668c45a2dSSomnath Kotur #define OPCODE_COMMON_SET_INTERRUPT_ENABLE 89 20704a06028SSathya Perla #define OPCODE_COMMON_SET_FN_PRIVILEGES 100 2089aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_PHY_DETAILS 102 2099aebddd1SJeff Kirsher #define OPCODE_COMMON_SET_DRIVER_FUNCTION_CAP 103 2109aebddd1SJeff Kirsher #define OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES 121 211941a77d5SSomnath Kotur #define OPCODE_COMMON_GET_EXT_FAT_CAPABILITES 125 212941a77d5SSomnath Kotur #define OPCODE_COMMON_SET_EXT_FAT_CAPABILITES 126 213590c391dSPadmanabh Ratnakar #define OPCODE_COMMON_GET_MAC_LIST 147 214590c391dSPadmanabh Ratnakar #define OPCODE_COMMON_SET_MAC_LIST 148 215f1f3ee1bSAjit Khaparde #define OPCODE_COMMON_GET_HSW_CONFIG 152 216abb93951SPadmanabh Ratnakar #define OPCODE_COMMON_GET_FUNC_CONFIG 160 217abb93951SPadmanabh Ratnakar #define OPCODE_COMMON_GET_PROFILE_CONFIG 164 218d5c18473SPadmanabh Ratnakar #define OPCODE_COMMON_SET_PROFILE_CONFIG 165 219542963b7SVasundhara Volam #define OPCODE_COMMON_GET_ACTIVE_PROFILE 167 220f1f3ee1bSAjit Khaparde #define OPCODE_COMMON_SET_HSW_CONFIG 153 221f25b119cSPadmanabh Ratnakar #define OPCODE_COMMON_GET_FN_PRIVILEGES 170 222de49bd5aSPadmanabh Ratnakar #define OPCODE_COMMON_READ_OBJECT 171 2239aebddd1SJeff Kirsher #define OPCODE_COMMON_WRITE_OBJECT 172 2244c876616SSathya Perla #define OPCODE_COMMON_GET_IFACE_LIST 194 225dcf7ebbaSPadmanabh Ratnakar #define OPCODE_COMMON_ENABLE_DISABLE_VF 196 2269aebddd1SJeff Kirsher 2279aebddd1SJeff Kirsher #define OPCODE_ETH_RSS_CONFIG 1 2289aebddd1SJeff Kirsher #define OPCODE_ETH_ACPI_CONFIG 2 2299aebddd1SJeff Kirsher #define OPCODE_ETH_PROMISCUOUS 3 2309aebddd1SJeff Kirsher #define OPCODE_ETH_GET_STATISTICS 4 2319aebddd1SJeff Kirsher #define OPCODE_ETH_TX_CREATE 7 2329aebddd1SJeff Kirsher #define OPCODE_ETH_RX_CREATE 8 2339aebddd1SJeff Kirsher #define OPCODE_ETH_TX_DESTROY 9 2349aebddd1SJeff Kirsher #define OPCODE_ETH_RX_DESTROY 10 2359aebddd1SJeff Kirsher #define OPCODE_ETH_ACPI_WOL_MAGIC_CONFIG 12 2369aebddd1SJeff Kirsher #define OPCODE_ETH_GET_PPORT_STATS 18 2379aebddd1SJeff Kirsher 2389aebddd1SJeff Kirsher #define OPCODE_LOWLEVEL_HOST_DDR_DMA 17 2399aebddd1SJeff Kirsher #define OPCODE_LOWLEVEL_LOOPBACK_TEST 18 2409aebddd1SJeff Kirsher #define OPCODE_LOWLEVEL_SET_LOOPBACK_MODE 19 2419aebddd1SJeff Kirsher 2429aebddd1SJeff Kirsher struct be_cmd_req_hdr { 2439aebddd1SJeff Kirsher u8 opcode; /* dword 0 */ 2449aebddd1SJeff Kirsher u8 subsystem; /* dword 0 */ 2459aebddd1SJeff Kirsher u8 port_number; /* dword 0 */ 2469aebddd1SJeff Kirsher u8 domain; /* dword 0 */ 2479aebddd1SJeff Kirsher u32 timeout; /* dword 1 */ 2489aebddd1SJeff Kirsher u32 request_length; /* dword 2 */ 2499aebddd1SJeff Kirsher u8 version; /* dword 3 */ 2509aebddd1SJeff Kirsher u8 rsvd[3]; /* dword 3 */ 2519aebddd1SJeff Kirsher }; 2529aebddd1SJeff Kirsher 2539aebddd1SJeff Kirsher #define RESP_HDR_INFO_OPCODE_SHIFT 0 /* bits 0 - 7 */ 2549aebddd1SJeff Kirsher #define RESP_HDR_INFO_SUBSYS_SHIFT 8 /* bits 8 - 15 */ 2559aebddd1SJeff Kirsher struct be_cmd_resp_hdr { 256652bf646SPadmanabh Ratnakar u8 opcode; /* dword 0 */ 257652bf646SPadmanabh Ratnakar u8 subsystem; /* dword 0 */ 258652bf646SPadmanabh Ratnakar u8 rsvd[2]; /* dword 0 */ 259652bf646SPadmanabh Ratnakar u8 status; /* dword 1 */ 260652bf646SPadmanabh Ratnakar u8 add_status; /* dword 1 */ 261652bf646SPadmanabh Ratnakar u8 rsvd1[2]; /* dword 1 */ 2629aebddd1SJeff Kirsher u32 response_length; /* dword 2 */ 2639aebddd1SJeff Kirsher u32 actual_resp_len; /* dword 3 */ 2649aebddd1SJeff Kirsher }; 2659aebddd1SJeff Kirsher 2669aebddd1SJeff Kirsher struct phys_addr { 2679aebddd1SJeff Kirsher u32 lo; 2689aebddd1SJeff Kirsher u32 hi; 2699aebddd1SJeff Kirsher }; 2709aebddd1SJeff Kirsher 2719aebddd1SJeff Kirsher /************************** 2729aebddd1SJeff Kirsher * BE Command definitions * 2739aebddd1SJeff Kirsher **************************/ 2749aebddd1SJeff Kirsher 2759aebddd1SJeff Kirsher /* Pseudo amap definition in which each bit of the actual structure is defined 2769aebddd1SJeff Kirsher * as a byte: used to calculate offset/shift/mask of each field */ 2779aebddd1SJeff Kirsher struct amap_eq_context { 2789aebddd1SJeff Kirsher u8 cidx[13]; /* dword 0*/ 2799aebddd1SJeff Kirsher u8 rsvd0[3]; /* dword 0*/ 2809aebddd1SJeff Kirsher u8 epidx[13]; /* dword 0*/ 2819aebddd1SJeff Kirsher u8 valid; /* dword 0*/ 2829aebddd1SJeff Kirsher u8 rsvd1; /* dword 0*/ 2839aebddd1SJeff Kirsher u8 size; /* dword 0*/ 2849aebddd1SJeff Kirsher u8 pidx[13]; /* dword 1*/ 2859aebddd1SJeff Kirsher u8 rsvd2[3]; /* dword 1*/ 2869aebddd1SJeff Kirsher u8 pd[10]; /* dword 1*/ 2879aebddd1SJeff Kirsher u8 count[3]; /* dword 1*/ 2889aebddd1SJeff Kirsher u8 solevent; /* dword 1*/ 2899aebddd1SJeff Kirsher u8 stalled; /* dword 1*/ 2909aebddd1SJeff Kirsher u8 armed; /* dword 1*/ 2919aebddd1SJeff Kirsher u8 rsvd3[4]; /* dword 2*/ 2929aebddd1SJeff Kirsher u8 func[8]; /* dword 2*/ 2939aebddd1SJeff Kirsher u8 rsvd4; /* dword 2*/ 2949aebddd1SJeff Kirsher u8 delaymult[10]; /* dword 2*/ 2959aebddd1SJeff Kirsher u8 rsvd5[2]; /* dword 2*/ 2969aebddd1SJeff Kirsher u8 phase[2]; /* dword 2*/ 2979aebddd1SJeff Kirsher u8 nodelay; /* dword 2*/ 2989aebddd1SJeff Kirsher u8 rsvd6[4]; /* dword 2*/ 2999aebddd1SJeff Kirsher u8 rsvd7[32]; /* dword 3*/ 3009aebddd1SJeff Kirsher } __packed; 3019aebddd1SJeff Kirsher 3029aebddd1SJeff Kirsher struct be_cmd_req_eq_create { 3039aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 3049aebddd1SJeff Kirsher u16 num_pages; /* sword */ 3059aebddd1SJeff Kirsher u16 rsvd0; /* sword */ 3069aebddd1SJeff Kirsher u8 context[sizeof(struct amap_eq_context) / 8]; 3079aebddd1SJeff Kirsher struct phys_addr pages[8]; 3089aebddd1SJeff Kirsher } __packed; 3099aebddd1SJeff Kirsher 3109aebddd1SJeff Kirsher struct be_cmd_resp_eq_create { 3119aebddd1SJeff Kirsher struct be_cmd_resp_hdr resp_hdr; 3129aebddd1SJeff Kirsher u16 eq_id; /* sword */ 313f2f781a7SSathya Perla u16 msix_idx; /* available only in v2 */ 3149aebddd1SJeff Kirsher } __packed; 3159aebddd1SJeff Kirsher 3169aebddd1SJeff Kirsher /******************** Mac query ***************************/ 3179aebddd1SJeff Kirsher enum { 3189aebddd1SJeff Kirsher MAC_ADDRESS_TYPE_STORAGE = 0x0, 3199aebddd1SJeff Kirsher MAC_ADDRESS_TYPE_NETWORK = 0x1, 3209aebddd1SJeff Kirsher MAC_ADDRESS_TYPE_PD = 0x2, 3219aebddd1SJeff Kirsher MAC_ADDRESS_TYPE_MANAGEMENT = 0x3 3229aebddd1SJeff Kirsher }; 3239aebddd1SJeff Kirsher 3249aebddd1SJeff Kirsher struct mac_addr { 3259aebddd1SJeff Kirsher u16 size_of_struct; 3269aebddd1SJeff Kirsher u8 addr[ETH_ALEN]; 3279aebddd1SJeff Kirsher } __packed; 3289aebddd1SJeff Kirsher 3299aebddd1SJeff Kirsher struct be_cmd_req_mac_query { 3309aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 3319aebddd1SJeff Kirsher u8 type; 3329aebddd1SJeff Kirsher u8 permanent; 3339aebddd1SJeff Kirsher u16 if_id; 334590c391dSPadmanabh Ratnakar u32 pmac_id; 3359aebddd1SJeff Kirsher } __packed; 3369aebddd1SJeff Kirsher 3379aebddd1SJeff Kirsher struct be_cmd_resp_mac_query { 3389aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 3399aebddd1SJeff Kirsher struct mac_addr mac; 3409aebddd1SJeff Kirsher }; 3419aebddd1SJeff Kirsher 3429aebddd1SJeff Kirsher /******************** PMac Add ***************************/ 3439aebddd1SJeff Kirsher struct be_cmd_req_pmac_add { 3449aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 3459aebddd1SJeff Kirsher u32 if_id; 3469aebddd1SJeff Kirsher u8 mac_address[ETH_ALEN]; 3479aebddd1SJeff Kirsher u8 rsvd0[2]; 3489aebddd1SJeff Kirsher } __packed; 3499aebddd1SJeff Kirsher 3509aebddd1SJeff Kirsher struct be_cmd_resp_pmac_add { 3519aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 3529aebddd1SJeff Kirsher u32 pmac_id; 3539aebddd1SJeff Kirsher }; 3549aebddd1SJeff Kirsher 3559aebddd1SJeff Kirsher /******************** PMac Del ***************************/ 3569aebddd1SJeff Kirsher struct be_cmd_req_pmac_del { 3579aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 3589aebddd1SJeff Kirsher u32 if_id; 3599aebddd1SJeff Kirsher u32 pmac_id; 3609aebddd1SJeff Kirsher }; 3619aebddd1SJeff Kirsher 3629aebddd1SJeff Kirsher /******************** Create CQ ***************************/ 3639aebddd1SJeff Kirsher /* Pseudo amap definition in which each bit of the actual structure is defined 3649aebddd1SJeff Kirsher * as a byte: used to calculate offset/shift/mask of each field */ 3659aebddd1SJeff Kirsher struct amap_cq_context_be { 3669aebddd1SJeff Kirsher u8 cidx[11]; /* dword 0*/ 3679aebddd1SJeff Kirsher u8 rsvd0; /* dword 0*/ 3689aebddd1SJeff Kirsher u8 coalescwm[2]; /* dword 0*/ 3699aebddd1SJeff Kirsher u8 nodelay; /* dword 0*/ 3709aebddd1SJeff Kirsher u8 epidx[11]; /* dword 0*/ 3719aebddd1SJeff Kirsher u8 rsvd1; /* dword 0*/ 3729aebddd1SJeff Kirsher u8 count[2]; /* dword 0*/ 3739aebddd1SJeff Kirsher u8 valid; /* dword 0*/ 3749aebddd1SJeff Kirsher u8 solevent; /* dword 0*/ 3759aebddd1SJeff Kirsher u8 eventable; /* dword 0*/ 3769aebddd1SJeff Kirsher u8 pidx[11]; /* dword 1*/ 3779aebddd1SJeff Kirsher u8 rsvd2; /* dword 1*/ 3789aebddd1SJeff Kirsher u8 pd[10]; /* dword 1*/ 3799aebddd1SJeff Kirsher u8 eqid[8]; /* dword 1*/ 3809aebddd1SJeff Kirsher u8 stalled; /* dword 1*/ 3819aebddd1SJeff Kirsher u8 armed; /* dword 1*/ 3829aebddd1SJeff Kirsher u8 rsvd3[4]; /* dword 2*/ 3839aebddd1SJeff Kirsher u8 func[8]; /* dword 2*/ 3849aebddd1SJeff Kirsher u8 rsvd4[20]; /* dword 2*/ 3859aebddd1SJeff Kirsher u8 rsvd5[32]; /* dword 3*/ 3869aebddd1SJeff Kirsher } __packed; 3879aebddd1SJeff Kirsher 388bbdc42f8SAjit Khaparde struct amap_cq_context_v2 { 3899aebddd1SJeff Kirsher u8 rsvd0[12]; /* dword 0*/ 3909aebddd1SJeff Kirsher u8 coalescwm[2]; /* dword 0*/ 3919aebddd1SJeff Kirsher u8 nodelay; /* dword 0*/ 3929aebddd1SJeff Kirsher u8 rsvd1[12]; /* dword 0*/ 3939aebddd1SJeff Kirsher u8 count[2]; /* dword 0*/ 3949aebddd1SJeff Kirsher u8 valid; /* dword 0*/ 3959aebddd1SJeff Kirsher u8 rsvd2; /* dword 0*/ 3969aebddd1SJeff Kirsher u8 eventable; /* dword 0*/ 3979aebddd1SJeff Kirsher u8 eqid[16]; /* dword 1*/ 3989aebddd1SJeff Kirsher u8 rsvd3[15]; /* dword 1*/ 3999aebddd1SJeff Kirsher u8 armed; /* dword 1*/ 4009aebddd1SJeff Kirsher u8 rsvd4[32]; /* dword 2*/ 4019aebddd1SJeff Kirsher u8 rsvd5[32]; /* dword 3*/ 4029aebddd1SJeff Kirsher } __packed; 4039aebddd1SJeff Kirsher 4049aebddd1SJeff Kirsher struct be_cmd_req_cq_create { 4059aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 4069aebddd1SJeff Kirsher u16 num_pages; 4079aebddd1SJeff Kirsher u8 page_size; 4089aebddd1SJeff Kirsher u8 rsvd0; 4099aebddd1SJeff Kirsher u8 context[sizeof(struct amap_cq_context_be) / 8]; 4109aebddd1SJeff Kirsher struct phys_addr pages[8]; 4119aebddd1SJeff Kirsher } __packed; 4129aebddd1SJeff Kirsher 4139aebddd1SJeff Kirsher 4149aebddd1SJeff Kirsher struct be_cmd_resp_cq_create { 4159aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 4169aebddd1SJeff Kirsher u16 cq_id; 4179aebddd1SJeff Kirsher u16 rsvd0; 4189aebddd1SJeff Kirsher } __packed; 4199aebddd1SJeff Kirsher 4209aebddd1SJeff Kirsher struct be_cmd_req_get_fat { 4219aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 4229aebddd1SJeff Kirsher u32 fat_operation; 4239aebddd1SJeff Kirsher u32 read_log_offset; 4249aebddd1SJeff Kirsher u32 read_log_length; 4259aebddd1SJeff Kirsher u32 data_buffer_size; 4269aebddd1SJeff Kirsher u32 data_buffer[1]; 4279aebddd1SJeff Kirsher } __packed; 4289aebddd1SJeff Kirsher 4299aebddd1SJeff Kirsher struct be_cmd_resp_get_fat { 4309aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 4319aebddd1SJeff Kirsher u32 log_size; 4329aebddd1SJeff Kirsher u32 read_log_length; 4339aebddd1SJeff Kirsher u32 rsvd[2]; 4349aebddd1SJeff Kirsher u32 data_buffer[1]; 4359aebddd1SJeff Kirsher } __packed; 4369aebddd1SJeff Kirsher 4379aebddd1SJeff Kirsher 4389aebddd1SJeff Kirsher /******************** Create MCCQ ***************************/ 4399aebddd1SJeff Kirsher /* Pseudo amap definition in which each bit of the actual structure is defined 4409aebddd1SJeff Kirsher * as a byte: used to calculate offset/shift/mask of each field */ 4419aebddd1SJeff Kirsher struct amap_mcc_context_be { 4429aebddd1SJeff Kirsher u8 con_index[14]; 4439aebddd1SJeff Kirsher u8 rsvd0[2]; 4449aebddd1SJeff Kirsher u8 ring_size[4]; 4459aebddd1SJeff Kirsher u8 fetch_wrb; 4469aebddd1SJeff Kirsher u8 fetch_r2t; 4479aebddd1SJeff Kirsher u8 cq_id[10]; 4489aebddd1SJeff Kirsher u8 prod_index[14]; 4499aebddd1SJeff Kirsher u8 fid[8]; 4509aebddd1SJeff Kirsher u8 pdid[9]; 4519aebddd1SJeff Kirsher u8 valid; 4529aebddd1SJeff Kirsher u8 rsvd1[32]; 4539aebddd1SJeff Kirsher u8 rsvd2[32]; 4549aebddd1SJeff Kirsher } __packed; 4559aebddd1SJeff Kirsher 456666d39c7SVasundhara Volam struct amap_mcc_context_v1 { 4579aebddd1SJeff Kirsher u8 async_cq_id[16]; 4589aebddd1SJeff Kirsher u8 ring_size[4]; 4599aebddd1SJeff Kirsher u8 rsvd0[12]; 4609aebddd1SJeff Kirsher u8 rsvd1[31]; 4619aebddd1SJeff Kirsher u8 valid; 4629aebddd1SJeff Kirsher u8 async_cq_valid[1]; 4639aebddd1SJeff Kirsher u8 rsvd2[31]; 4649aebddd1SJeff Kirsher u8 rsvd3[32]; 4659aebddd1SJeff Kirsher } __packed; 4669aebddd1SJeff Kirsher 4679aebddd1SJeff Kirsher struct be_cmd_req_mcc_create { 4689aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 4699aebddd1SJeff Kirsher u16 num_pages; 4709aebddd1SJeff Kirsher u16 cq_id; 4719aebddd1SJeff Kirsher u8 context[sizeof(struct amap_mcc_context_be) / 8]; 4729aebddd1SJeff Kirsher struct phys_addr pages[8]; 4739aebddd1SJeff Kirsher } __packed; 4749aebddd1SJeff Kirsher 4759aebddd1SJeff Kirsher struct be_cmd_req_mcc_ext_create { 4769aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 4779aebddd1SJeff Kirsher u16 num_pages; 4789aebddd1SJeff Kirsher u16 cq_id; 4799aebddd1SJeff Kirsher u32 async_event_bitmap[1]; 480666d39c7SVasundhara Volam u8 context[sizeof(struct amap_mcc_context_v1) / 8]; 4819aebddd1SJeff Kirsher struct phys_addr pages[8]; 4829aebddd1SJeff Kirsher } __packed; 4839aebddd1SJeff Kirsher 4849aebddd1SJeff Kirsher struct be_cmd_resp_mcc_create { 4859aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 4869aebddd1SJeff Kirsher u16 id; 4879aebddd1SJeff Kirsher u16 rsvd0; 4889aebddd1SJeff Kirsher } __packed; 4899aebddd1SJeff Kirsher 4909aebddd1SJeff Kirsher /******************** Create TxQ ***************************/ 4919aebddd1SJeff Kirsher #define BE_ETH_TX_RING_TYPE_STANDARD 2 4929aebddd1SJeff Kirsher #define BE_ULP1_NUM 1 4939aebddd1SJeff Kirsher 4949aebddd1SJeff Kirsher struct be_cmd_req_eth_tx_create { 4959aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 4969aebddd1SJeff Kirsher u8 num_pages; 4979aebddd1SJeff Kirsher u8 ulp_num; 49894d73aaaSVasundhara Volam u16 type; 49994d73aaaSVasundhara Volam u16 if_id; 50094d73aaaSVasundhara Volam u8 queue_size; 50194d73aaaSVasundhara Volam u8 rsvd0; 50294d73aaaSVasundhara Volam u32 rsvd1; 50394d73aaaSVasundhara Volam u16 cq_id; 50494d73aaaSVasundhara Volam u16 rsvd2; 50594d73aaaSVasundhara Volam u32 rsvd3[13]; 5069aebddd1SJeff Kirsher struct phys_addr pages[8]; 5079aebddd1SJeff Kirsher } __packed; 5089aebddd1SJeff Kirsher 5099aebddd1SJeff Kirsher struct be_cmd_resp_eth_tx_create { 5109aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 5119aebddd1SJeff Kirsher u16 cid; 51294d73aaaSVasundhara Volam u16 rid; 51394d73aaaSVasundhara Volam u32 db_offset; 51494d73aaaSVasundhara Volam u32 rsvd0[4]; 5159aebddd1SJeff Kirsher } __packed; 5169aebddd1SJeff Kirsher 5179aebddd1SJeff Kirsher /******************** Create RxQ ***************************/ 5189aebddd1SJeff Kirsher struct be_cmd_req_eth_rx_create { 5199aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 5209aebddd1SJeff Kirsher u16 cq_id; 5219aebddd1SJeff Kirsher u8 frag_size; 5229aebddd1SJeff Kirsher u8 num_pages; 5239aebddd1SJeff Kirsher struct phys_addr pages[2]; 5249aebddd1SJeff Kirsher u32 interface_id; 5259aebddd1SJeff Kirsher u16 max_frame_size; 5269aebddd1SJeff Kirsher u16 rsvd0; 5279aebddd1SJeff Kirsher u32 rss_queue; 5289aebddd1SJeff Kirsher } __packed; 5299aebddd1SJeff Kirsher 5309aebddd1SJeff Kirsher struct be_cmd_resp_eth_rx_create { 5319aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 5329aebddd1SJeff Kirsher u16 id; 5339aebddd1SJeff Kirsher u8 rss_id; 5349aebddd1SJeff Kirsher u8 rsvd0; 5359aebddd1SJeff Kirsher } __packed; 5369aebddd1SJeff Kirsher 5379aebddd1SJeff Kirsher /******************** Q Destroy ***************************/ 5389aebddd1SJeff Kirsher /* Type of Queue to be destroyed */ 5399aebddd1SJeff Kirsher enum { 5409aebddd1SJeff Kirsher QTYPE_EQ = 1, 5419aebddd1SJeff Kirsher QTYPE_CQ, 5429aebddd1SJeff Kirsher QTYPE_TXQ, 5439aebddd1SJeff Kirsher QTYPE_RXQ, 5449aebddd1SJeff Kirsher QTYPE_MCCQ 5459aebddd1SJeff Kirsher }; 5469aebddd1SJeff Kirsher 5479aebddd1SJeff Kirsher struct be_cmd_req_q_destroy { 5489aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 5499aebddd1SJeff Kirsher u16 id; 5509aebddd1SJeff Kirsher u16 bypass_flush; /* valid only for rx q destroy */ 5519aebddd1SJeff Kirsher } __packed; 5529aebddd1SJeff Kirsher 5539aebddd1SJeff Kirsher /************ I/f Create (it's actually I/f Config Create)**********/ 5549aebddd1SJeff Kirsher 5559aebddd1SJeff Kirsher /* Capability flags for the i/f */ 5569aebddd1SJeff Kirsher enum be_if_flags { 5579aebddd1SJeff Kirsher BE_IF_FLAGS_RSS = 0x4, 5589aebddd1SJeff Kirsher BE_IF_FLAGS_PROMISCUOUS = 0x8, 5599aebddd1SJeff Kirsher BE_IF_FLAGS_BROADCAST = 0x10, 5609aebddd1SJeff Kirsher BE_IF_FLAGS_UNTAGGED = 0x20, 5619aebddd1SJeff Kirsher BE_IF_FLAGS_ULP = 0x40, 5629aebddd1SJeff Kirsher BE_IF_FLAGS_VLAN_PROMISCUOUS = 0x80, 5639aebddd1SJeff Kirsher BE_IF_FLAGS_VLAN = 0x100, 5649aebddd1SJeff Kirsher BE_IF_FLAGS_MCAST_PROMISCUOUS = 0x200, 5659aebddd1SJeff Kirsher BE_IF_FLAGS_PASS_L2_ERRORS = 0x400, 5669aebddd1SJeff Kirsher BE_IF_FLAGS_PASS_L3L4_ERRORS = 0x800, 5679aebddd1SJeff Kirsher BE_IF_FLAGS_MULTICAST = 0x1000 5689aebddd1SJeff Kirsher }; 5699aebddd1SJeff Kirsher 5703da988c9SSarveshwar Bandi #define BE_IF_CAP_FLAGS_WANT (BE_IF_FLAGS_RSS | BE_IF_FLAGS_PROMISCUOUS |\ 5713da988c9SSarveshwar Bandi BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_VLAN_PROMISCUOUS |\ 5723da988c9SSarveshwar Bandi BE_IF_FLAGS_VLAN | BE_IF_FLAGS_MCAST_PROMISCUOUS |\ 5733da988c9SSarveshwar Bandi BE_IF_FLAGS_PASS_L3L4_ERRORS | BE_IF_FLAGS_MULTICAST |\ 5743da988c9SSarveshwar Bandi BE_IF_FLAGS_UNTAGGED) 5753da988c9SSarveshwar Bandi 5769aebddd1SJeff Kirsher /* An RX interface is an object with one or more MAC addresses and 5779aebddd1SJeff Kirsher * filtering capabilities. */ 5789aebddd1SJeff Kirsher struct be_cmd_req_if_create { 5799aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 5809aebddd1SJeff Kirsher u32 version; /* ignore currently */ 5819aebddd1SJeff Kirsher u32 capability_flags; 5829aebddd1SJeff Kirsher u32 enable_flags; 5839aebddd1SJeff Kirsher u8 mac_addr[ETH_ALEN]; 5849aebddd1SJeff Kirsher u8 rsvd0; 5859aebddd1SJeff Kirsher u8 pmac_invalid; /* if set, don't attach the mac addr to the i/f */ 5869aebddd1SJeff Kirsher u32 vlan_tag; /* not used currently */ 5879aebddd1SJeff Kirsher } __packed; 5889aebddd1SJeff Kirsher 5899aebddd1SJeff Kirsher struct be_cmd_resp_if_create { 5909aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 5919aebddd1SJeff Kirsher u32 interface_id; 5929aebddd1SJeff Kirsher u32 pmac_id; 5939aebddd1SJeff Kirsher }; 5949aebddd1SJeff Kirsher 5959aebddd1SJeff Kirsher /****** I/f Destroy(it's actually I/f Config Destroy )**********/ 5969aebddd1SJeff Kirsher struct be_cmd_req_if_destroy { 5979aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 5989aebddd1SJeff Kirsher u32 interface_id; 5999aebddd1SJeff Kirsher }; 6009aebddd1SJeff Kirsher 6019aebddd1SJeff Kirsher /*************** HW Stats Get **********************************/ 6029aebddd1SJeff Kirsher struct be_port_rxf_stats_v0 { 6039aebddd1SJeff Kirsher u32 rx_bytes_lsd; /* dword 0*/ 6049aebddd1SJeff Kirsher u32 rx_bytes_msd; /* dword 1*/ 6059aebddd1SJeff Kirsher u32 rx_total_frames; /* dword 2*/ 6069aebddd1SJeff Kirsher u32 rx_unicast_frames; /* dword 3*/ 6079aebddd1SJeff Kirsher u32 rx_multicast_frames; /* dword 4*/ 6089aebddd1SJeff Kirsher u32 rx_broadcast_frames; /* dword 5*/ 6099aebddd1SJeff Kirsher u32 rx_crc_errors; /* dword 6*/ 6109aebddd1SJeff Kirsher u32 rx_alignment_symbol_errors; /* dword 7*/ 6119aebddd1SJeff Kirsher u32 rx_pause_frames; /* dword 8*/ 6129aebddd1SJeff Kirsher u32 rx_control_frames; /* dword 9*/ 6139aebddd1SJeff Kirsher u32 rx_in_range_errors; /* dword 10*/ 6149aebddd1SJeff Kirsher u32 rx_out_range_errors; /* dword 11*/ 6159aebddd1SJeff Kirsher u32 rx_frame_too_long; /* dword 12*/ 61618fb06a1SSuresh Reddy u32 rx_address_filtered; /* dword 13*/ 61718fb06a1SSuresh Reddy u32 rx_vlan_filtered; /* dword 14*/ 6189aebddd1SJeff Kirsher u32 rx_dropped_too_small; /* dword 15*/ 6199aebddd1SJeff Kirsher u32 rx_dropped_too_short; /* dword 16*/ 6209aebddd1SJeff Kirsher u32 rx_dropped_header_too_small; /* dword 17*/ 6219aebddd1SJeff Kirsher u32 rx_dropped_tcp_length; /* dword 18*/ 6229aebddd1SJeff Kirsher u32 rx_dropped_runt; /* dword 19*/ 6239aebddd1SJeff Kirsher u32 rx_64_byte_packets; /* dword 20*/ 6249aebddd1SJeff Kirsher u32 rx_65_127_byte_packets; /* dword 21*/ 6259aebddd1SJeff Kirsher u32 rx_128_256_byte_packets; /* dword 22*/ 6269aebddd1SJeff Kirsher u32 rx_256_511_byte_packets; /* dword 23*/ 6279aebddd1SJeff Kirsher u32 rx_512_1023_byte_packets; /* dword 24*/ 6289aebddd1SJeff Kirsher u32 rx_1024_1518_byte_packets; /* dword 25*/ 6299aebddd1SJeff Kirsher u32 rx_1519_2047_byte_packets; /* dword 26*/ 6309aebddd1SJeff Kirsher u32 rx_2048_4095_byte_packets; /* dword 27*/ 6319aebddd1SJeff Kirsher u32 rx_4096_8191_byte_packets; /* dword 28*/ 6329aebddd1SJeff Kirsher u32 rx_8192_9216_byte_packets; /* dword 29*/ 6339aebddd1SJeff Kirsher u32 rx_ip_checksum_errs; /* dword 30*/ 6349aebddd1SJeff Kirsher u32 rx_tcp_checksum_errs; /* dword 31*/ 6359aebddd1SJeff Kirsher u32 rx_udp_checksum_errs; /* dword 32*/ 6369aebddd1SJeff Kirsher u32 rx_non_rss_packets; /* dword 33*/ 6379aebddd1SJeff Kirsher u32 rx_ipv4_packets; /* dword 34*/ 6389aebddd1SJeff Kirsher u32 rx_ipv6_packets; /* dword 35*/ 6399aebddd1SJeff Kirsher u32 rx_ipv4_bytes_lsd; /* dword 36*/ 6409aebddd1SJeff Kirsher u32 rx_ipv4_bytes_msd; /* dword 37*/ 6419aebddd1SJeff Kirsher u32 rx_ipv6_bytes_lsd; /* dword 38*/ 6429aebddd1SJeff Kirsher u32 rx_ipv6_bytes_msd; /* dword 39*/ 6439aebddd1SJeff Kirsher u32 rx_chute1_packets; /* dword 40*/ 6449aebddd1SJeff Kirsher u32 rx_chute2_packets; /* dword 41*/ 6459aebddd1SJeff Kirsher u32 rx_chute3_packets; /* dword 42*/ 6469aebddd1SJeff Kirsher u32 rx_management_packets; /* dword 43*/ 6479aebddd1SJeff Kirsher u32 rx_switched_unicast_packets; /* dword 44*/ 6489aebddd1SJeff Kirsher u32 rx_switched_multicast_packets; /* dword 45*/ 6499aebddd1SJeff Kirsher u32 rx_switched_broadcast_packets; /* dword 46*/ 6509aebddd1SJeff Kirsher u32 tx_bytes_lsd; /* dword 47*/ 6519aebddd1SJeff Kirsher u32 tx_bytes_msd; /* dword 48*/ 6529aebddd1SJeff Kirsher u32 tx_unicastframes; /* dword 49*/ 6539aebddd1SJeff Kirsher u32 tx_multicastframes; /* dword 50*/ 6549aebddd1SJeff Kirsher u32 tx_broadcastframes; /* dword 51*/ 6559aebddd1SJeff Kirsher u32 tx_pauseframes; /* dword 52*/ 6569aebddd1SJeff Kirsher u32 tx_controlframes; /* dword 53*/ 6579aebddd1SJeff Kirsher u32 tx_64_byte_packets; /* dword 54*/ 6589aebddd1SJeff Kirsher u32 tx_65_127_byte_packets; /* dword 55*/ 6599aebddd1SJeff Kirsher u32 tx_128_256_byte_packets; /* dword 56*/ 6609aebddd1SJeff Kirsher u32 tx_256_511_byte_packets; /* dword 57*/ 6619aebddd1SJeff Kirsher u32 tx_512_1023_byte_packets; /* dword 58*/ 6629aebddd1SJeff Kirsher u32 tx_1024_1518_byte_packets; /* dword 59*/ 6639aebddd1SJeff Kirsher u32 tx_1519_2047_byte_packets; /* dword 60*/ 6649aebddd1SJeff Kirsher u32 tx_2048_4095_byte_packets; /* dword 61*/ 6659aebddd1SJeff Kirsher u32 tx_4096_8191_byte_packets; /* dword 62*/ 6669aebddd1SJeff Kirsher u32 tx_8192_9216_byte_packets; /* dword 63*/ 6679aebddd1SJeff Kirsher u32 rx_fifo_overflow; /* dword 64*/ 6689aebddd1SJeff Kirsher u32 rx_input_fifo_overflow; /* dword 65*/ 6699aebddd1SJeff Kirsher }; 6709aebddd1SJeff Kirsher 6719aebddd1SJeff Kirsher struct be_rxf_stats_v0 { 6729aebddd1SJeff Kirsher struct be_port_rxf_stats_v0 port[2]; 6739aebddd1SJeff Kirsher u32 rx_drops_no_pbuf; /* dword 132*/ 6749aebddd1SJeff Kirsher u32 rx_drops_no_txpb; /* dword 133*/ 6759aebddd1SJeff Kirsher u32 rx_drops_no_erx_descr; /* dword 134*/ 6769aebddd1SJeff Kirsher u32 rx_drops_no_tpre_descr; /* dword 135*/ 6779aebddd1SJeff Kirsher u32 management_rx_port_packets; /* dword 136*/ 6789aebddd1SJeff Kirsher u32 management_rx_port_bytes; /* dword 137*/ 6799aebddd1SJeff Kirsher u32 management_rx_port_pause_frames; /* dword 138*/ 6809aebddd1SJeff Kirsher u32 management_rx_port_errors; /* dword 139*/ 6819aebddd1SJeff Kirsher u32 management_tx_port_packets; /* dword 140*/ 6829aebddd1SJeff Kirsher u32 management_tx_port_bytes; /* dword 141*/ 6839aebddd1SJeff Kirsher u32 management_tx_port_pause; /* dword 142*/ 6849aebddd1SJeff Kirsher u32 management_rx_port_rxfifo_overflow; /* dword 143*/ 6859aebddd1SJeff Kirsher u32 rx_drops_too_many_frags; /* dword 144*/ 6869aebddd1SJeff Kirsher u32 rx_drops_invalid_ring; /* dword 145*/ 6879aebddd1SJeff Kirsher u32 forwarded_packets; /* dword 146*/ 6889aebddd1SJeff Kirsher u32 rx_drops_mtu; /* dword 147*/ 6899aebddd1SJeff Kirsher u32 rsvd0[7]; 6909aebddd1SJeff Kirsher u32 port0_jabber_events; 6919aebddd1SJeff Kirsher u32 port1_jabber_events; 6929aebddd1SJeff Kirsher u32 rsvd1[6]; 6939aebddd1SJeff Kirsher }; 6949aebddd1SJeff Kirsher 6959aebddd1SJeff Kirsher struct be_erx_stats_v0 { 6969aebddd1SJeff Kirsher u32 rx_drops_no_fragments[44]; /* dwordS 0 to 43*/ 6979aebddd1SJeff Kirsher u32 rsvd[4]; 6989aebddd1SJeff Kirsher }; 6999aebddd1SJeff Kirsher 7009aebddd1SJeff Kirsher struct be_pmem_stats { 7019aebddd1SJeff Kirsher u32 eth_red_drops; 7029aebddd1SJeff Kirsher u32 rsvd[5]; 7039aebddd1SJeff Kirsher }; 7049aebddd1SJeff Kirsher 7059aebddd1SJeff Kirsher struct be_hw_stats_v0 { 7069aebddd1SJeff Kirsher struct be_rxf_stats_v0 rxf; 7079aebddd1SJeff Kirsher u32 rsvd[48]; 7089aebddd1SJeff Kirsher struct be_erx_stats_v0 erx; 7099aebddd1SJeff Kirsher struct be_pmem_stats pmem; 7109aebddd1SJeff Kirsher }; 7119aebddd1SJeff Kirsher 7129aebddd1SJeff Kirsher struct be_cmd_req_get_stats_v0 { 7139aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 7149aebddd1SJeff Kirsher u8 rsvd[sizeof(struct be_hw_stats_v0)]; 7159aebddd1SJeff Kirsher }; 7169aebddd1SJeff Kirsher 7179aebddd1SJeff Kirsher struct be_cmd_resp_get_stats_v0 { 7189aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 7199aebddd1SJeff Kirsher struct be_hw_stats_v0 hw_stats; 7209aebddd1SJeff Kirsher }; 7219aebddd1SJeff Kirsher 7229aebddd1SJeff Kirsher struct lancer_pport_stats { 7239aebddd1SJeff Kirsher u32 tx_packets_lo; 7249aebddd1SJeff Kirsher u32 tx_packets_hi; 7259aebddd1SJeff Kirsher u32 tx_unicast_packets_lo; 7269aebddd1SJeff Kirsher u32 tx_unicast_packets_hi; 7279aebddd1SJeff Kirsher u32 tx_multicast_packets_lo; 7289aebddd1SJeff Kirsher u32 tx_multicast_packets_hi; 7299aebddd1SJeff Kirsher u32 tx_broadcast_packets_lo; 7309aebddd1SJeff Kirsher u32 tx_broadcast_packets_hi; 7319aebddd1SJeff Kirsher u32 tx_bytes_lo; 7329aebddd1SJeff Kirsher u32 tx_bytes_hi; 7339aebddd1SJeff Kirsher u32 tx_unicast_bytes_lo; 7349aebddd1SJeff Kirsher u32 tx_unicast_bytes_hi; 7359aebddd1SJeff Kirsher u32 tx_multicast_bytes_lo; 7369aebddd1SJeff Kirsher u32 tx_multicast_bytes_hi; 7379aebddd1SJeff Kirsher u32 tx_broadcast_bytes_lo; 7389aebddd1SJeff Kirsher u32 tx_broadcast_bytes_hi; 7399aebddd1SJeff Kirsher u32 tx_discards_lo; 7409aebddd1SJeff Kirsher u32 tx_discards_hi; 7419aebddd1SJeff Kirsher u32 tx_errors_lo; 7429aebddd1SJeff Kirsher u32 tx_errors_hi; 7439aebddd1SJeff Kirsher u32 tx_pause_frames_lo; 7449aebddd1SJeff Kirsher u32 tx_pause_frames_hi; 7459aebddd1SJeff Kirsher u32 tx_pause_on_frames_lo; 7469aebddd1SJeff Kirsher u32 tx_pause_on_frames_hi; 7479aebddd1SJeff Kirsher u32 tx_pause_off_frames_lo; 7489aebddd1SJeff Kirsher u32 tx_pause_off_frames_hi; 7499aebddd1SJeff Kirsher u32 tx_internal_mac_errors_lo; 7509aebddd1SJeff Kirsher u32 tx_internal_mac_errors_hi; 7519aebddd1SJeff Kirsher u32 tx_control_frames_lo; 7529aebddd1SJeff Kirsher u32 tx_control_frames_hi; 7539aebddd1SJeff Kirsher u32 tx_packets_64_bytes_lo; 7549aebddd1SJeff Kirsher u32 tx_packets_64_bytes_hi; 7559aebddd1SJeff Kirsher u32 tx_packets_65_to_127_bytes_lo; 7569aebddd1SJeff Kirsher u32 tx_packets_65_to_127_bytes_hi; 7579aebddd1SJeff Kirsher u32 tx_packets_128_to_255_bytes_lo; 7589aebddd1SJeff Kirsher u32 tx_packets_128_to_255_bytes_hi; 7599aebddd1SJeff Kirsher u32 tx_packets_256_to_511_bytes_lo; 7609aebddd1SJeff Kirsher u32 tx_packets_256_to_511_bytes_hi; 7619aebddd1SJeff Kirsher u32 tx_packets_512_to_1023_bytes_lo; 7629aebddd1SJeff Kirsher u32 tx_packets_512_to_1023_bytes_hi; 7639aebddd1SJeff Kirsher u32 tx_packets_1024_to_1518_bytes_lo; 7649aebddd1SJeff Kirsher u32 tx_packets_1024_to_1518_bytes_hi; 7659aebddd1SJeff Kirsher u32 tx_packets_1519_to_2047_bytes_lo; 7669aebddd1SJeff Kirsher u32 tx_packets_1519_to_2047_bytes_hi; 7679aebddd1SJeff Kirsher u32 tx_packets_2048_to_4095_bytes_lo; 7689aebddd1SJeff Kirsher u32 tx_packets_2048_to_4095_bytes_hi; 7699aebddd1SJeff Kirsher u32 tx_packets_4096_to_8191_bytes_lo; 7709aebddd1SJeff Kirsher u32 tx_packets_4096_to_8191_bytes_hi; 7719aebddd1SJeff Kirsher u32 tx_packets_8192_to_9216_bytes_lo; 7729aebddd1SJeff Kirsher u32 tx_packets_8192_to_9216_bytes_hi; 7739aebddd1SJeff Kirsher u32 tx_lso_packets_lo; 7749aebddd1SJeff Kirsher u32 tx_lso_packets_hi; 7759aebddd1SJeff Kirsher u32 rx_packets_lo; 7769aebddd1SJeff Kirsher u32 rx_packets_hi; 7779aebddd1SJeff Kirsher u32 rx_unicast_packets_lo; 7789aebddd1SJeff Kirsher u32 rx_unicast_packets_hi; 7799aebddd1SJeff Kirsher u32 rx_multicast_packets_lo; 7809aebddd1SJeff Kirsher u32 rx_multicast_packets_hi; 7819aebddd1SJeff Kirsher u32 rx_broadcast_packets_lo; 7829aebddd1SJeff Kirsher u32 rx_broadcast_packets_hi; 7839aebddd1SJeff Kirsher u32 rx_bytes_lo; 7849aebddd1SJeff Kirsher u32 rx_bytes_hi; 7859aebddd1SJeff Kirsher u32 rx_unicast_bytes_lo; 7869aebddd1SJeff Kirsher u32 rx_unicast_bytes_hi; 7879aebddd1SJeff Kirsher u32 rx_multicast_bytes_lo; 7889aebddd1SJeff Kirsher u32 rx_multicast_bytes_hi; 7899aebddd1SJeff Kirsher u32 rx_broadcast_bytes_lo; 7909aebddd1SJeff Kirsher u32 rx_broadcast_bytes_hi; 7919aebddd1SJeff Kirsher u32 rx_unknown_protos; 7929aebddd1SJeff Kirsher u32 rsvd_69; /* Word 69 is reserved */ 7939aebddd1SJeff Kirsher u32 rx_discards_lo; 7949aebddd1SJeff Kirsher u32 rx_discards_hi; 7959aebddd1SJeff Kirsher u32 rx_errors_lo; 7969aebddd1SJeff Kirsher u32 rx_errors_hi; 7979aebddd1SJeff Kirsher u32 rx_crc_errors_lo; 7989aebddd1SJeff Kirsher u32 rx_crc_errors_hi; 7999aebddd1SJeff Kirsher u32 rx_alignment_errors_lo; 8009aebddd1SJeff Kirsher u32 rx_alignment_errors_hi; 8019aebddd1SJeff Kirsher u32 rx_symbol_errors_lo; 8029aebddd1SJeff Kirsher u32 rx_symbol_errors_hi; 8039aebddd1SJeff Kirsher u32 rx_pause_frames_lo; 8049aebddd1SJeff Kirsher u32 rx_pause_frames_hi; 8059aebddd1SJeff Kirsher u32 rx_pause_on_frames_lo; 8069aebddd1SJeff Kirsher u32 rx_pause_on_frames_hi; 8079aebddd1SJeff Kirsher u32 rx_pause_off_frames_lo; 8089aebddd1SJeff Kirsher u32 rx_pause_off_frames_hi; 8099aebddd1SJeff Kirsher u32 rx_frames_too_long_lo; 8109aebddd1SJeff Kirsher u32 rx_frames_too_long_hi; 8119aebddd1SJeff Kirsher u32 rx_internal_mac_errors_lo; 8129aebddd1SJeff Kirsher u32 rx_internal_mac_errors_hi; 8139aebddd1SJeff Kirsher u32 rx_undersize_packets; 8149aebddd1SJeff Kirsher u32 rx_oversize_packets; 8159aebddd1SJeff Kirsher u32 rx_fragment_packets; 8169aebddd1SJeff Kirsher u32 rx_jabbers; 8179aebddd1SJeff Kirsher u32 rx_control_frames_lo; 8189aebddd1SJeff Kirsher u32 rx_control_frames_hi; 8199aebddd1SJeff Kirsher u32 rx_control_frames_unknown_opcode_lo; 8209aebddd1SJeff Kirsher u32 rx_control_frames_unknown_opcode_hi; 8219aebddd1SJeff Kirsher u32 rx_in_range_errors; 8229aebddd1SJeff Kirsher u32 rx_out_of_range_errors; 82318fb06a1SSuresh Reddy u32 rx_address_filtered; 82418fb06a1SSuresh Reddy u32 rx_vlan_filtered; 8259aebddd1SJeff Kirsher u32 rx_dropped_too_small; 8269aebddd1SJeff Kirsher u32 rx_dropped_too_short; 8279aebddd1SJeff Kirsher u32 rx_dropped_header_too_small; 8289aebddd1SJeff Kirsher u32 rx_dropped_invalid_tcp_length; 8299aebddd1SJeff Kirsher u32 rx_dropped_runt; 8309aebddd1SJeff Kirsher u32 rx_ip_checksum_errors; 8319aebddd1SJeff Kirsher u32 rx_tcp_checksum_errors; 8329aebddd1SJeff Kirsher u32 rx_udp_checksum_errors; 8339aebddd1SJeff Kirsher u32 rx_non_rss_packets; 8349aebddd1SJeff Kirsher u32 rsvd_111; 8359aebddd1SJeff Kirsher u32 rx_ipv4_packets_lo; 8369aebddd1SJeff Kirsher u32 rx_ipv4_packets_hi; 8379aebddd1SJeff Kirsher u32 rx_ipv6_packets_lo; 8389aebddd1SJeff Kirsher u32 rx_ipv6_packets_hi; 8399aebddd1SJeff Kirsher u32 rx_ipv4_bytes_lo; 8409aebddd1SJeff Kirsher u32 rx_ipv4_bytes_hi; 8419aebddd1SJeff Kirsher u32 rx_ipv6_bytes_lo; 8429aebddd1SJeff Kirsher u32 rx_ipv6_bytes_hi; 8439aebddd1SJeff Kirsher u32 rx_nic_packets_lo; 8449aebddd1SJeff Kirsher u32 rx_nic_packets_hi; 8459aebddd1SJeff Kirsher u32 rx_tcp_packets_lo; 8469aebddd1SJeff Kirsher u32 rx_tcp_packets_hi; 8479aebddd1SJeff Kirsher u32 rx_iscsi_packets_lo; 8489aebddd1SJeff Kirsher u32 rx_iscsi_packets_hi; 8499aebddd1SJeff Kirsher u32 rx_management_packets_lo; 8509aebddd1SJeff Kirsher u32 rx_management_packets_hi; 8519aebddd1SJeff Kirsher u32 rx_switched_unicast_packets_lo; 8529aebddd1SJeff Kirsher u32 rx_switched_unicast_packets_hi; 8539aebddd1SJeff Kirsher u32 rx_switched_multicast_packets_lo; 8549aebddd1SJeff Kirsher u32 rx_switched_multicast_packets_hi; 8559aebddd1SJeff Kirsher u32 rx_switched_broadcast_packets_lo; 8569aebddd1SJeff Kirsher u32 rx_switched_broadcast_packets_hi; 8579aebddd1SJeff Kirsher u32 num_forwards_lo; 8589aebddd1SJeff Kirsher u32 num_forwards_hi; 8599aebddd1SJeff Kirsher u32 rx_fifo_overflow; 8609aebddd1SJeff Kirsher u32 rx_input_fifo_overflow; 8619aebddd1SJeff Kirsher u32 rx_drops_too_many_frags_lo; 8629aebddd1SJeff Kirsher u32 rx_drops_too_many_frags_hi; 8639aebddd1SJeff Kirsher u32 rx_drops_invalid_queue; 8649aebddd1SJeff Kirsher u32 rsvd_141; 8659aebddd1SJeff Kirsher u32 rx_drops_mtu_lo; 8669aebddd1SJeff Kirsher u32 rx_drops_mtu_hi; 8679aebddd1SJeff Kirsher u32 rx_packets_64_bytes_lo; 8689aebddd1SJeff Kirsher u32 rx_packets_64_bytes_hi; 8699aebddd1SJeff Kirsher u32 rx_packets_65_to_127_bytes_lo; 8709aebddd1SJeff Kirsher u32 rx_packets_65_to_127_bytes_hi; 8719aebddd1SJeff Kirsher u32 rx_packets_128_to_255_bytes_lo; 8729aebddd1SJeff Kirsher u32 rx_packets_128_to_255_bytes_hi; 8739aebddd1SJeff Kirsher u32 rx_packets_256_to_511_bytes_lo; 8749aebddd1SJeff Kirsher u32 rx_packets_256_to_511_bytes_hi; 8759aebddd1SJeff Kirsher u32 rx_packets_512_to_1023_bytes_lo; 8769aebddd1SJeff Kirsher u32 rx_packets_512_to_1023_bytes_hi; 8779aebddd1SJeff Kirsher u32 rx_packets_1024_to_1518_bytes_lo; 8789aebddd1SJeff Kirsher u32 rx_packets_1024_to_1518_bytes_hi; 8799aebddd1SJeff Kirsher u32 rx_packets_1519_to_2047_bytes_lo; 8809aebddd1SJeff Kirsher u32 rx_packets_1519_to_2047_bytes_hi; 8819aebddd1SJeff Kirsher u32 rx_packets_2048_to_4095_bytes_lo; 8829aebddd1SJeff Kirsher u32 rx_packets_2048_to_4095_bytes_hi; 8839aebddd1SJeff Kirsher u32 rx_packets_4096_to_8191_bytes_lo; 8849aebddd1SJeff Kirsher u32 rx_packets_4096_to_8191_bytes_hi; 8859aebddd1SJeff Kirsher u32 rx_packets_8192_to_9216_bytes_lo; 8869aebddd1SJeff Kirsher u32 rx_packets_8192_to_9216_bytes_hi; 8879aebddd1SJeff Kirsher }; 8889aebddd1SJeff Kirsher 8899aebddd1SJeff Kirsher struct pport_stats_params { 8909aebddd1SJeff Kirsher u16 pport_num; 8919aebddd1SJeff Kirsher u8 rsvd; 8929aebddd1SJeff Kirsher u8 reset_stats; 8939aebddd1SJeff Kirsher }; 8949aebddd1SJeff Kirsher 8959aebddd1SJeff Kirsher struct lancer_cmd_req_pport_stats { 8969aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 8979aebddd1SJeff Kirsher union { 8989aebddd1SJeff Kirsher struct pport_stats_params params; 8999aebddd1SJeff Kirsher u8 rsvd[sizeof(struct lancer_pport_stats)]; 9009aebddd1SJeff Kirsher } cmd_params; 9019aebddd1SJeff Kirsher }; 9029aebddd1SJeff Kirsher 9039aebddd1SJeff Kirsher struct lancer_cmd_resp_pport_stats { 9049aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 9059aebddd1SJeff Kirsher struct lancer_pport_stats pport_stats; 9069aebddd1SJeff Kirsher }; 9079aebddd1SJeff Kirsher 9089aebddd1SJeff Kirsher static inline struct lancer_pport_stats* 9099aebddd1SJeff Kirsher pport_stats_from_cmd(struct be_adapter *adapter) 9109aebddd1SJeff Kirsher { 9119aebddd1SJeff Kirsher struct lancer_cmd_resp_pport_stats *cmd = adapter->stats_cmd.va; 9129aebddd1SJeff Kirsher return &cmd->pport_stats; 9139aebddd1SJeff Kirsher } 9149aebddd1SJeff Kirsher 9159aebddd1SJeff Kirsher struct be_cmd_req_get_cntl_addnl_attribs { 9169aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 9179aebddd1SJeff Kirsher u8 rsvd[8]; 9189aebddd1SJeff Kirsher }; 9199aebddd1SJeff Kirsher 9209aebddd1SJeff Kirsher struct be_cmd_resp_get_cntl_addnl_attribs { 9219aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 9229aebddd1SJeff Kirsher u16 ipl_file_number; 9239aebddd1SJeff Kirsher u8 ipl_file_version; 9249aebddd1SJeff Kirsher u8 rsvd0; 9259aebddd1SJeff Kirsher u8 on_die_temperature; /* in degrees centigrade*/ 9269aebddd1SJeff Kirsher u8 rsvd1[3]; 9279aebddd1SJeff Kirsher }; 9289aebddd1SJeff Kirsher 9299aebddd1SJeff Kirsher struct be_cmd_req_vlan_config { 9309aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 9319aebddd1SJeff Kirsher u8 interface_id; 9329aebddd1SJeff Kirsher u8 promiscuous; 9339aebddd1SJeff Kirsher u8 untagged; 9349aebddd1SJeff Kirsher u8 num_vlan; 9359aebddd1SJeff Kirsher u16 normal_vlan[64]; 9369aebddd1SJeff Kirsher } __packed; 9379aebddd1SJeff Kirsher 9389aebddd1SJeff Kirsher /******************* RX FILTER ******************************/ 9399aebddd1SJeff Kirsher #define BE_MAX_MC 64 /* set mcast promisc if > 64 */ 9409aebddd1SJeff Kirsher struct macaddr { 9419aebddd1SJeff Kirsher u8 byte[ETH_ALEN]; 9429aebddd1SJeff Kirsher }; 9439aebddd1SJeff Kirsher 9449aebddd1SJeff Kirsher struct be_cmd_req_rx_filter { 9459aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 9469aebddd1SJeff Kirsher u32 global_flags_mask; 9479aebddd1SJeff Kirsher u32 global_flags; 9489aebddd1SJeff Kirsher u32 if_flags_mask; 9499aebddd1SJeff Kirsher u32 if_flags; 9509aebddd1SJeff Kirsher u32 if_id; 9519aebddd1SJeff Kirsher u32 mcast_num; 9529aebddd1SJeff Kirsher struct macaddr mcast_mac[BE_MAX_MC]; 9539aebddd1SJeff Kirsher }; 9549aebddd1SJeff Kirsher 9559aebddd1SJeff Kirsher /******************** Link Status Query *******************/ 9569aebddd1SJeff Kirsher struct be_cmd_req_link_status { 9579aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 9589aebddd1SJeff Kirsher u32 rsvd; 9599aebddd1SJeff Kirsher }; 9609aebddd1SJeff Kirsher 9619aebddd1SJeff Kirsher enum { 9629aebddd1SJeff Kirsher PHY_LINK_DUPLEX_NONE = 0x0, 9639aebddd1SJeff Kirsher PHY_LINK_DUPLEX_HALF = 0x1, 9649aebddd1SJeff Kirsher PHY_LINK_DUPLEX_FULL = 0x2 9659aebddd1SJeff Kirsher }; 9669aebddd1SJeff Kirsher 9679aebddd1SJeff Kirsher enum { 9689aebddd1SJeff Kirsher PHY_LINK_SPEED_ZERO = 0x0, /* => No link */ 9699aebddd1SJeff Kirsher PHY_LINK_SPEED_10MBPS = 0x1, 9709aebddd1SJeff Kirsher PHY_LINK_SPEED_100MBPS = 0x2, 9719aebddd1SJeff Kirsher PHY_LINK_SPEED_1GBPS = 0x3, 972b971f847SVasundhara Volam PHY_LINK_SPEED_10GBPS = 0x4, 973b971f847SVasundhara Volam PHY_LINK_SPEED_20GBPS = 0x5, 974b971f847SVasundhara Volam PHY_LINK_SPEED_25GBPS = 0x6, 975b971f847SVasundhara Volam PHY_LINK_SPEED_40GBPS = 0x7 9769aebddd1SJeff Kirsher }; 9779aebddd1SJeff Kirsher 9789aebddd1SJeff Kirsher struct be_cmd_resp_link_status { 9799aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 9809aebddd1SJeff Kirsher u8 physical_port; 9819aebddd1SJeff Kirsher u8 mac_duplex; 9829aebddd1SJeff Kirsher u8 mac_speed; 9839aebddd1SJeff Kirsher u8 mac_fault; 9849aebddd1SJeff Kirsher u8 mgmt_mac_duplex; 9859aebddd1SJeff Kirsher u8 mgmt_mac_speed; 9869aebddd1SJeff Kirsher u16 link_speed; 987b236916aSAjit Khaparde u8 logical_link_status; 988b236916aSAjit Khaparde u8 rsvd1[3]; 9899aebddd1SJeff Kirsher } __packed; 9909aebddd1SJeff Kirsher 9919aebddd1SJeff Kirsher /******************** Port Identification ***************************/ 9929aebddd1SJeff Kirsher /* Identifies the type of port attached to NIC */ 9939aebddd1SJeff Kirsher struct be_cmd_req_port_type { 9949aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 9959aebddd1SJeff Kirsher u32 page_num; 9969aebddd1SJeff Kirsher u32 port; 9979aebddd1SJeff Kirsher }; 9989aebddd1SJeff Kirsher 9999aebddd1SJeff Kirsher enum { 10009aebddd1SJeff Kirsher TR_PAGE_A0 = 0xa0, 10019aebddd1SJeff Kirsher TR_PAGE_A2 = 0xa2 10029aebddd1SJeff Kirsher }; 10039aebddd1SJeff Kirsher 10049aebddd1SJeff Kirsher struct be_cmd_resp_port_type { 10059aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 10069aebddd1SJeff Kirsher u32 page_num; 10079aebddd1SJeff Kirsher u32 port; 10089aebddd1SJeff Kirsher struct data { 10099aebddd1SJeff Kirsher u8 identifier; 10109aebddd1SJeff Kirsher u8 identifier_ext; 10119aebddd1SJeff Kirsher u8 connector; 10129aebddd1SJeff Kirsher u8 transceiver[8]; 10139aebddd1SJeff Kirsher u8 rsvd0[3]; 10149aebddd1SJeff Kirsher u8 length_km; 10159aebddd1SJeff Kirsher u8 length_hm; 10169aebddd1SJeff Kirsher u8 length_om1; 10179aebddd1SJeff Kirsher u8 length_om2; 10189aebddd1SJeff Kirsher u8 length_cu; 10199aebddd1SJeff Kirsher u8 length_cu_m; 10209aebddd1SJeff Kirsher u8 vendor_name[16]; 10219aebddd1SJeff Kirsher u8 rsvd; 10229aebddd1SJeff Kirsher u8 vendor_oui[3]; 10239aebddd1SJeff Kirsher u8 vendor_pn[16]; 10249aebddd1SJeff Kirsher u8 vendor_rev[4]; 10259aebddd1SJeff Kirsher } data; 10269aebddd1SJeff Kirsher }; 10279aebddd1SJeff Kirsher 10289aebddd1SJeff Kirsher /******************** Get FW Version *******************/ 10299aebddd1SJeff Kirsher struct be_cmd_req_get_fw_version { 10309aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 10319aebddd1SJeff Kirsher u8 rsvd0[FW_VER_LEN]; 10329aebddd1SJeff Kirsher u8 rsvd1[FW_VER_LEN]; 10339aebddd1SJeff Kirsher } __packed; 10349aebddd1SJeff Kirsher 10359aebddd1SJeff Kirsher struct be_cmd_resp_get_fw_version { 10369aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 10379aebddd1SJeff Kirsher u8 firmware_version_string[FW_VER_LEN]; 10389aebddd1SJeff Kirsher u8 fw_on_flash_version_string[FW_VER_LEN]; 10399aebddd1SJeff Kirsher } __packed; 10409aebddd1SJeff Kirsher 10419aebddd1SJeff Kirsher /******************** Set Flow Contrl *******************/ 10429aebddd1SJeff Kirsher struct be_cmd_req_set_flow_control { 10439aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 10449aebddd1SJeff Kirsher u16 tx_flow_control; 10459aebddd1SJeff Kirsher u16 rx_flow_control; 10469aebddd1SJeff Kirsher } __packed; 10479aebddd1SJeff Kirsher 10489aebddd1SJeff Kirsher /******************** Get Flow Contrl *******************/ 10499aebddd1SJeff Kirsher struct be_cmd_req_get_flow_control { 10509aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 10519aebddd1SJeff Kirsher u32 rsvd; 10529aebddd1SJeff Kirsher }; 10539aebddd1SJeff Kirsher 10549aebddd1SJeff Kirsher struct be_cmd_resp_get_flow_control { 10559aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 10569aebddd1SJeff Kirsher u16 tx_flow_control; 10579aebddd1SJeff Kirsher u16 rx_flow_control; 10589aebddd1SJeff Kirsher } __packed; 10599aebddd1SJeff Kirsher 10609aebddd1SJeff Kirsher /******************** Modify EQ Delay *******************/ 10612632bafdSSathya Perla struct be_set_eqd { 10629aebddd1SJeff Kirsher u32 eq_id; 10639aebddd1SJeff Kirsher u32 phase; 10649aebddd1SJeff Kirsher u32 delay_multiplier; 10652632bafdSSathya Perla }; 10662632bafdSSathya Perla 10672632bafdSSathya Perla struct be_cmd_req_modify_eq_delay { 10682632bafdSSathya Perla struct be_cmd_req_hdr hdr; 10692632bafdSSathya Perla u32 num_eq; 10702632bafdSSathya Perla struct be_set_eqd set_eqd[MAX_EVT_QS]; 10719aebddd1SJeff Kirsher } __packed; 10729aebddd1SJeff Kirsher 10739aebddd1SJeff Kirsher struct be_cmd_resp_modify_eq_delay { 10749aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 10759aebddd1SJeff Kirsher u32 rsvd0; 10769aebddd1SJeff Kirsher } __packed; 10779aebddd1SJeff Kirsher 10789aebddd1SJeff Kirsher /******************** Get FW Config *******************/ 1079752961a1SSathya Perla /* The HW can come up in either of the following multi-channel modes 1080752961a1SSathya Perla * based on the skew/IPL. 1081752961a1SSathya Perla */ 1082045508a8SParav Pandit #define RDMA_ENABLED 0x4 1083752961a1SSathya Perla #define FLEX10_MODE 0x400 1084752961a1SSathya Perla #define VNIC_MODE 0x20000 1085752961a1SSathya Perla #define UMC_ENABLED 0x1000000 10869aebddd1SJeff Kirsher struct be_cmd_req_query_fw_cfg { 10879aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 10889aebddd1SJeff Kirsher u32 rsvd[31]; 10899aebddd1SJeff Kirsher }; 10909aebddd1SJeff Kirsher 10919aebddd1SJeff Kirsher struct be_cmd_resp_query_fw_cfg { 10929aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 10939aebddd1SJeff Kirsher u32 be_config_number; 10949aebddd1SJeff Kirsher u32 asic_revision; 10959aebddd1SJeff Kirsher u32 phys_port; 10969aebddd1SJeff Kirsher u32 function_mode; 10979aebddd1SJeff Kirsher u32 rsvd[26]; 10989aebddd1SJeff Kirsher u32 function_caps; 10999aebddd1SJeff Kirsher }; 11009aebddd1SJeff Kirsher 110173dea398SPadmanabh Ratnakar /******************** RSS Config ****************************************/ 110273dea398SPadmanabh Ratnakar /* RSS type Input parameters used to compute RX hash 110373dea398SPadmanabh Ratnakar * RSS_ENABLE_IPV4 SRC IPv4, DST IPv4 110473dea398SPadmanabh Ratnakar * RSS_ENABLE_TCP_IPV4 SRC IPv4, DST IPv4, TCP SRC PORT, TCP DST PORT 110573dea398SPadmanabh Ratnakar * RSS_ENABLE_IPV6 SRC IPv6, DST IPv6 110673dea398SPadmanabh Ratnakar * RSS_ENABLE_TCP_IPV6 SRC IPv6, DST IPv6, TCP SRC PORT, TCP DST PORT 110773dea398SPadmanabh Ratnakar * RSS_ENABLE_UDP_IPV4 SRC IPv4, DST IPv4, UDP SRC PORT, UDP DST PORT 110873dea398SPadmanabh Ratnakar * RSS_ENABLE_UDP_IPV6 SRC IPv6, DST IPv6, UDP SRC PORT, UDP DST PORT 110973dea398SPadmanabh Ratnakar * 111073dea398SPadmanabh Ratnakar * When multiple RSS types are enabled, HW picks the best hash policy 111173dea398SPadmanabh Ratnakar * based on the type of the received packet. 111273dea398SPadmanabh Ratnakar */ 11139aebddd1SJeff Kirsher #define RSS_ENABLE_NONE 0x0 11149aebddd1SJeff Kirsher #define RSS_ENABLE_IPV4 0x1 11159aebddd1SJeff Kirsher #define RSS_ENABLE_TCP_IPV4 0x2 11169aebddd1SJeff Kirsher #define RSS_ENABLE_IPV6 0x4 11179aebddd1SJeff Kirsher #define RSS_ENABLE_TCP_IPV6 0x8 1118d3bd3a5eSPadmanabh Ratnakar #define RSS_ENABLE_UDP_IPV4 0x10 1119d3bd3a5eSPadmanabh Ratnakar #define RSS_ENABLE_UDP_IPV6 0x20 11209aebddd1SJeff Kirsher 1121594ad54aSSuresh Reddy #define L3_RSS_FLAGS (RXH_IP_DST | RXH_IP_SRC) 1122594ad54aSSuresh Reddy #define L4_RSS_FLAGS (RXH_L4_B_0_1 | RXH_L4_B_2_3) 1123594ad54aSSuresh Reddy 11249aebddd1SJeff Kirsher struct be_cmd_req_rss_config { 11259aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 11269aebddd1SJeff Kirsher u32 if_id; 11279aebddd1SJeff Kirsher u16 enable_rss; 11289aebddd1SJeff Kirsher u16 cpu_table_size_log2; 11299aebddd1SJeff Kirsher u32 hash[10]; 11309aebddd1SJeff Kirsher u8 cpu_table[128]; 11319aebddd1SJeff Kirsher u8 flush; 11329aebddd1SJeff Kirsher u8 rsvd0[3]; 11339aebddd1SJeff Kirsher }; 11349aebddd1SJeff Kirsher 11359aebddd1SJeff Kirsher /******************** Port Beacon ***************************/ 11369aebddd1SJeff Kirsher 11379aebddd1SJeff Kirsher #define BEACON_STATE_ENABLED 0x1 11389aebddd1SJeff Kirsher #define BEACON_STATE_DISABLED 0x0 11399aebddd1SJeff Kirsher 11409aebddd1SJeff Kirsher struct be_cmd_req_enable_disable_beacon { 11419aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 11429aebddd1SJeff Kirsher u8 port_num; 11439aebddd1SJeff Kirsher u8 beacon_state; 11449aebddd1SJeff Kirsher u8 beacon_duration; 11459aebddd1SJeff Kirsher u8 status_duration; 11469aebddd1SJeff Kirsher } __packed; 11479aebddd1SJeff Kirsher 11489aebddd1SJeff Kirsher struct be_cmd_resp_enable_disable_beacon { 11499aebddd1SJeff Kirsher struct be_cmd_resp_hdr resp_hdr; 11509aebddd1SJeff Kirsher u32 rsvd0; 11519aebddd1SJeff Kirsher } __packed; 11529aebddd1SJeff Kirsher 11539aebddd1SJeff Kirsher struct be_cmd_req_get_beacon_state { 11549aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 11559aebddd1SJeff Kirsher u8 port_num; 11569aebddd1SJeff Kirsher u8 rsvd0; 11579aebddd1SJeff Kirsher u16 rsvd1; 11589aebddd1SJeff Kirsher } __packed; 11599aebddd1SJeff Kirsher 11609aebddd1SJeff Kirsher struct be_cmd_resp_get_beacon_state { 11619aebddd1SJeff Kirsher struct be_cmd_resp_hdr resp_hdr; 11629aebddd1SJeff Kirsher u8 beacon_state; 11639aebddd1SJeff Kirsher u8 rsvd0[3]; 11649aebddd1SJeff Kirsher } __packed; 11659aebddd1SJeff Kirsher 11669aebddd1SJeff Kirsher /****************** Firmware Flash ******************/ 11679aebddd1SJeff Kirsher struct flashrom_params { 11689aebddd1SJeff Kirsher u32 op_code; 11699aebddd1SJeff Kirsher u32 op_type; 11709aebddd1SJeff Kirsher u32 data_buf_size; 11719aebddd1SJeff Kirsher u32 offset; 11729aebddd1SJeff Kirsher }; 11739aebddd1SJeff Kirsher 11749aebddd1SJeff Kirsher struct be_cmd_write_flashrom { 11759aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 11769aebddd1SJeff Kirsher struct flashrom_params params; 1177be716446SPadmanabh Ratnakar u8 data_buf[32768]; 1178be716446SPadmanabh Ratnakar u8 rsvd[4]; 1179be716446SPadmanabh Ratnakar } __packed; 11809aebddd1SJeff Kirsher 1181be716446SPadmanabh Ratnakar /* cmd to read flash crc */ 1182be716446SPadmanabh Ratnakar struct be_cmd_read_flash_crc { 1183be716446SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1184be716446SPadmanabh Ratnakar struct flashrom_params params; 1185be716446SPadmanabh Ratnakar u8 crc[4]; 1186be716446SPadmanabh Ratnakar u8 rsvd[4]; 1187be716446SPadmanabh Ratnakar }; 11889aebddd1SJeff Kirsher /**************** Lancer Firmware Flash ************/ 11899aebddd1SJeff Kirsher struct amap_lancer_write_obj_context { 11909aebddd1SJeff Kirsher u8 write_length[24]; 11919aebddd1SJeff Kirsher u8 reserved1[7]; 11929aebddd1SJeff Kirsher u8 eof; 11939aebddd1SJeff Kirsher } __packed; 11949aebddd1SJeff Kirsher 11959aebddd1SJeff Kirsher struct lancer_cmd_req_write_object { 11969aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 11979aebddd1SJeff Kirsher u8 context[sizeof(struct amap_lancer_write_obj_context) / 8]; 11989aebddd1SJeff Kirsher u32 write_offset; 11999aebddd1SJeff Kirsher u8 object_name[104]; 12009aebddd1SJeff Kirsher u32 descriptor_count; 12019aebddd1SJeff Kirsher u32 buf_len; 12029aebddd1SJeff Kirsher u32 addr_low; 12039aebddd1SJeff Kirsher u32 addr_high; 12049aebddd1SJeff Kirsher }; 12059aebddd1SJeff Kirsher 1206f67ef7baSPadmanabh Ratnakar #define LANCER_NO_RESET_NEEDED 0x00 1207f67ef7baSPadmanabh Ratnakar #define LANCER_FW_RESET_NEEDED 0x02 12089aebddd1SJeff Kirsher struct lancer_cmd_resp_write_object { 12099aebddd1SJeff Kirsher u8 opcode; 12109aebddd1SJeff Kirsher u8 subsystem; 12119aebddd1SJeff Kirsher u8 rsvd1[2]; 12129aebddd1SJeff Kirsher u8 status; 12139aebddd1SJeff Kirsher u8 additional_status; 12149aebddd1SJeff Kirsher u8 rsvd2[2]; 12159aebddd1SJeff Kirsher u32 resp_len; 12169aebddd1SJeff Kirsher u32 actual_resp_len; 12179aebddd1SJeff Kirsher u32 actual_write_len; 1218f67ef7baSPadmanabh Ratnakar u8 change_status; 1219f67ef7baSPadmanabh Ratnakar u8 rsvd3[3]; 12209aebddd1SJeff Kirsher }; 12219aebddd1SJeff Kirsher 1222de49bd5aSPadmanabh Ratnakar /************************ Lancer Read FW info **************/ 1223de49bd5aSPadmanabh Ratnakar #define LANCER_READ_FILE_CHUNK (32*1024) 1224de49bd5aSPadmanabh Ratnakar #define LANCER_READ_FILE_EOF_MASK 0x80000000 1225de49bd5aSPadmanabh Ratnakar 1226de49bd5aSPadmanabh Ratnakar #define LANCER_FW_DUMP_FILE "/dbg/dump.bin" 1227af5875bdSPadmanabh Ratnakar #define LANCER_VPD_PF_FILE "/vpd/ntr_pf.vpd" 1228af5875bdSPadmanabh Ratnakar #define LANCER_VPD_VF_FILE "/vpd/ntr_vf.vpd" 1229de49bd5aSPadmanabh Ratnakar 1230de49bd5aSPadmanabh Ratnakar struct lancer_cmd_req_read_object { 1231de49bd5aSPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1232de49bd5aSPadmanabh Ratnakar u32 desired_read_len; 1233de49bd5aSPadmanabh Ratnakar u32 read_offset; 1234de49bd5aSPadmanabh Ratnakar u8 object_name[104]; 1235de49bd5aSPadmanabh Ratnakar u32 descriptor_count; 1236de49bd5aSPadmanabh Ratnakar u32 buf_len; 1237de49bd5aSPadmanabh Ratnakar u32 addr_low; 1238de49bd5aSPadmanabh Ratnakar u32 addr_high; 1239de49bd5aSPadmanabh Ratnakar }; 1240de49bd5aSPadmanabh Ratnakar 1241de49bd5aSPadmanabh Ratnakar struct lancer_cmd_resp_read_object { 1242de49bd5aSPadmanabh Ratnakar u8 opcode; 1243de49bd5aSPadmanabh Ratnakar u8 subsystem; 1244de49bd5aSPadmanabh Ratnakar u8 rsvd1[2]; 1245de49bd5aSPadmanabh Ratnakar u8 status; 1246de49bd5aSPadmanabh Ratnakar u8 additional_status; 1247de49bd5aSPadmanabh Ratnakar u8 rsvd2[2]; 1248de49bd5aSPadmanabh Ratnakar u32 resp_len; 1249de49bd5aSPadmanabh Ratnakar u32 actual_resp_len; 1250de49bd5aSPadmanabh Ratnakar u32 actual_read_len; 1251de49bd5aSPadmanabh Ratnakar u32 eof; 1252de49bd5aSPadmanabh Ratnakar }; 1253de49bd5aSPadmanabh Ratnakar 12549aebddd1SJeff Kirsher /************************ WOL *******************************/ 12559aebddd1SJeff Kirsher struct be_cmd_req_acpi_wol_magic_config{ 12569aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 12579aebddd1SJeff Kirsher u32 rsvd0[145]; 12589aebddd1SJeff Kirsher u8 magic_mac[6]; 12599aebddd1SJeff Kirsher u8 rsvd2[2]; 12609aebddd1SJeff Kirsher } __packed; 12619aebddd1SJeff Kirsher 12624762f6ceSAjit Khaparde struct be_cmd_req_acpi_wol_magic_config_v1 { 12634762f6ceSAjit Khaparde struct be_cmd_req_hdr hdr; 12644762f6ceSAjit Khaparde u8 rsvd0[2]; 12654762f6ceSAjit Khaparde u8 query_options; 12664762f6ceSAjit Khaparde u8 rsvd1[5]; 12674762f6ceSAjit Khaparde u32 rsvd2[288]; 12684762f6ceSAjit Khaparde u8 magic_mac[6]; 12694762f6ceSAjit Khaparde u8 rsvd3[22]; 12704762f6ceSAjit Khaparde } __packed; 12714762f6ceSAjit Khaparde 12724762f6ceSAjit Khaparde struct be_cmd_resp_acpi_wol_magic_config_v1 { 12734762f6ceSAjit Khaparde struct be_cmd_resp_hdr hdr; 12744762f6ceSAjit Khaparde u8 rsvd0[2]; 12754762f6ceSAjit Khaparde u8 wol_settings; 12764762f6ceSAjit Khaparde u8 rsvd1[5]; 12774762f6ceSAjit Khaparde u32 rsvd2[295]; 12784762f6ceSAjit Khaparde } __packed; 12794762f6ceSAjit Khaparde 12804762f6ceSAjit Khaparde #define BE_GET_WOL_CAP 2 12814762f6ceSAjit Khaparde 12824762f6ceSAjit Khaparde #define BE_WOL_CAP 0x1 12834762f6ceSAjit Khaparde #define BE_PME_D0_CAP 0x8 12844762f6ceSAjit Khaparde #define BE_PME_D1_CAP 0x10 12854762f6ceSAjit Khaparde #define BE_PME_D2_CAP 0x20 12864762f6ceSAjit Khaparde #define BE_PME_D3HOT_CAP 0x40 12874762f6ceSAjit Khaparde #define BE_PME_D3COLD_CAP 0x80 12884762f6ceSAjit Khaparde 12899aebddd1SJeff Kirsher /********************** LoopBack test *********************/ 12909aebddd1SJeff Kirsher struct be_cmd_req_loopback_test { 12919aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 12929aebddd1SJeff Kirsher u32 loopback_type; 12939aebddd1SJeff Kirsher u32 num_pkts; 12949aebddd1SJeff Kirsher u64 pattern; 12959aebddd1SJeff Kirsher u32 src_port; 12969aebddd1SJeff Kirsher u32 dest_port; 12979aebddd1SJeff Kirsher u32 pkt_size; 12989aebddd1SJeff Kirsher }; 12999aebddd1SJeff Kirsher 13009aebddd1SJeff Kirsher struct be_cmd_resp_loopback_test { 13019aebddd1SJeff Kirsher struct be_cmd_resp_hdr resp_hdr; 13029aebddd1SJeff Kirsher u32 status; 13039aebddd1SJeff Kirsher u32 num_txfer; 13049aebddd1SJeff Kirsher u32 num_rx; 13059aebddd1SJeff Kirsher u32 miscomp_off; 13069aebddd1SJeff Kirsher u32 ticks_compl; 13079aebddd1SJeff Kirsher }; 13089aebddd1SJeff Kirsher 13099aebddd1SJeff Kirsher struct be_cmd_req_set_lmode { 13109aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 13119aebddd1SJeff Kirsher u8 src_port; 13129aebddd1SJeff Kirsher u8 dest_port; 13139aebddd1SJeff Kirsher u8 loopback_type; 13149aebddd1SJeff Kirsher u8 loopback_state; 13159aebddd1SJeff Kirsher }; 13169aebddd1SJeff Kirsher 13179aebddd1SJeff Kirsher struct be_cmd_resp_set_lmode { 13189aebddd1SJeff Kirsher struct be_cmd_resp_hdr resp_hdr; 13199aebddd1SJeff Kirsher u8 rsvd0[4]; 13209aebddd1SJeff Kirsher }; 13219aebddd1SJeff Kirsher 13229aebddd1SJeff Kirsher /********************** DDR DMA test *********************/ 13239aebddd1SJeff Kirsher struct be_cmd_req_ddrdma_test { 13249aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 13259aebddd1SJeff Kirsher u64 pattern; 13269aebddd1SJeff Kirsher u32 byte_count; 13279aebddd1SJeff Kirsher u32 rsvd0; 13289aebddd1SJeff Kirsher u8 snd_buff[4096]; 13299aebddd1SJeff Kirsher u8 rsvd1[4096]; 13309aebddd1SJeff Kirsher }; 13319aebddd1SJeff Kirsher 13329aebddd1SJeff Kirsher struct be_cmd_resp_ddrdma_test { 13339aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 13349aebddd1SJeff Kirsher u64 pattern; 13359aebddd1SJeff Kirsher u32 byte_cnt; 13369aebddd1SJeff Kirsher u32 snd_err; 13379aebddd1SJeff Kirsher u8 rsvd0[4096]; 13389aebddd1SJeff Kirsher u8 rcv_buff[4096]; 13399aebddd1SJeff Kirsher }; 13409aebddd1SJeff Kirsher 13419aebddd1SJeff Kirsher /*********************** SEEPROM Read ***********************/ 13429aebddd1SJeff Kirsher 13439aebddd1SJeff Kirsher #define BE_READ_SEEPROM_LEN 1024 13449aebddd1SJeff Kirsher struct be_cmd_req_seeprom_read { 13459aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 13469aebddd1SJeff Kirsher u8 rsvd0[BE_READ_SEEPROM_LEN]; 13479aebddd1SJeff Kirsher }; 13489aebddd1SJeff Kirsher 13499aebddd1SJeff Kirsher struct be_cmd_resp_seeprom_read { 13509aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 13519aebddd1SJeff Kirsher u8 seeprom_data[BE_READ_SEEPROM_LEN]; 13529aebddd1SJeff Kirsher }; 13539aebddd1SJeff Kirsher 13549aebddd1SJeff Kirsher enum { 13559aebddd1SJeff Kirsher PHY_TYPE_CX4_10GB = 0, 13569aebddd1SJeff Kirsher PHY_TYPE_XFP_10GB, 13579aebddd1SJeff Kirsher PHY_TYPE_SFP_1GB, 13589aebddd1SJeff Kirsher PHY_TYPE_SFP_PLUS_10GB, 13599aebddd1SJeff Kirsher PHY_TYPE_KR_10GB, 13609aebddd1SJeff Kirsher PHY_TYPE_KX4_10GB, 13619aebddd1SJeff Kirsher PHY_TYPE_BASET_10GB, 13629aebddd1SJeff Kirsher PHY_TYPE_BASET_1GB, 136342f11cf2SAjit Khaparde PHY_TYPE_BASEX_1GB, 136442f11cf2SAjit Khaparde PHY_TYPE_SGMII, 13659aebddd1SJeff Kirsher PHY_TYPE_DISABLED = 255 13669aebddd1SJeff Kirsher }; 13679aebddd1SJeff Kirsher 136842f11cf2SAjit Khaparde #define BE_SUPPORTED_SPEED_NONE 0 136942f11cf2SAjit Khaparde #define BE_SUPPORTED_SPEED_10MBPS 1 137042f11cf2SAjit Khaparde #define BE_SUPPORTED_SPEED_100MBPS 2 137142f11cf2SAjit Khaparde #define BE_SUPPORTED_SPEED_1GBPS 4 137242f11cf2SAjit Khaparde #define BE_SUPPORTED_SPEED_10GBPS 8 137342f11cf2SAjit Khaparde 137442f11cf2SAjit Khaparde #define BE_AN_EN 0x2 137542f11cf2SAjit Khaparde #define BE_PAUSE_SYM_EN 0x80 137642f11cf2SAjit Khaparde 137742f11cf2SAjit Khaparde /* MAC speed valid values */ 137842f11cf2SAjit Khaparde #define SPEED_DEFAULT 0x0 137942f11cf2SAjit Khaparde #define SPEED_FORCED_10GB 0x1 138042f11cf2SAjit Khaparde #define SPEED_FORCED_1GB 0x2 138142f11cf2SAjit Khaparde #define SPEED_AUTONEG_10GB 0x3 138242f11cf2SAjit Khaparde #define SPEED_AUTONEG_1GB 0x4 138342f11cf2SAjit Khaparde #define SPEED_AUTONEG_100MB 0x5 138442f11cf2SAjit Khaparde #define SPEED_AUTONEG_10GB_1GB 0x6 138542f11cf2SAjit Khaparde #define SPEED_AUTONEG_10GB_1GB_100MB 0x7 138642f11cf2SAjit Khaparde #define SPEED_AUTONEG_1GB_100MB 0x8 138742f11cf2SAjit Khaparde #define SPEED_AUTONEG_10MB 0x9 138842f11cf2SAjit Khaparde #define SPEED_AUTONEG_1GB_100MB_10MB 0xa 138942f11cf2SAjit Khaparde #define SPEED_AUTONEG_100MB_10MB 0xb 139042f11cf2SAjit Khaparde #define SPEED_FORCED_100MB 0xc 139142f11cf2SAjit Khaparde #define SPEED_FORCED_10MB 0xd 139242f11cf2SAjit Khaparde 13939aebddd1SJeff Kirsher struct be_cmd_req_get_phy_info { 13949aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 13959aebddd1SJeff Kirsher u8 rsvd0[24]; 13969aebddd1SJeff Kirsher }; 13979aebddd1SJeff Kirsher 13989aebddd1SJeff Kirsher struct be_phy_info { 13999aebddd1SJeff Kirsher u16 phy_type; 14009aebddd1SJeff Kirsher u16 interface_type; 14019aebddd1SJeff Kirsher u32 misc_params; 140242f11cf2SAjit Khaparde u16 ext_phy_details; 140342f11cf2SAjit Khaparde u16 rsvd; 140442f11cf2SAjit Khaparde u16 auto_speeds_supported; 140542f11cf2SAjit Khaparde u16 fixed_speeds_supported; 140642f11cf2SAjit Khaparde u32 future_use[2]; 14079aebddd1SJeff Kirsher }; 14089aebddd1SJeff Kirsher 14099aebddd1SJeff Kirsher struct be_cmd_resp_get_phy_info { 14109aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 14119aebddd1SJeff Kirsher struct be_phy_info phy_info; 14129aebddd1SJeff Kirsher }; 14139aebddd1SJeff Kirsher 14149aebddd1SJeff Kirsher /*********************** Set QOS ***********************/ 14159aebddd1SJeff Kirsher 14169aebddd1SJeff Kirsher #define BE_QOS_BITS_NIC 1 14179aebddd1SJeff Kirsher 14189aebddd1SJeff Kirsher struct be_cmd_req_set_qos { 14199aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 14209aebddd1SJeff Kirsher u32 valid_bits; 14219aebddd1SJeff Kirsher u32 max_bps_nic; 14229aebddd1SJeff Kirsher u32 rsvd[7]; 14239aebddd1SJeff Kirsher }; 14249aebddd1SJeff Kirsher 14259aebddd1SJeff Kirsher struct be_cmd_resp_set_qos { 14269aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 14279aebddd1SJeff Kirsher u32 rsvd; 14289aebddd1SJeff Kirsher }; 14299aebddd1SJeff Kirsher 14309aebddd1SJeff Kirsher /*********************** Controller Attributes ***********************/ 14319aebddd1SJeff Kirsher struct be_cmd_req_cntl_attribs { 14329aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 14339aebddd1SJeff Kirsher }; 14349aebddd1SJeff Kirsher 14359aebddd1SJeff Kirsher struct be_cmd_resp_cntl_attribs { 14369aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 14379aebddd1SJeff Kirsher struct mgmt_controller_attrib attribs; 14389aebddd1SJeff Kirsher }; 14399aebddd1SJeff Kirsher 14409aebddd1SJeff Kirsher /*********************** Set driver function ***********************/ 14419aebddd1SJeff Kirsher #define CAPABILITY_SW_TIMESTAMPS 2 14429aebddd1SJeff Kirsher #define CAPABILITY_BE3_NATIVE_ERX_API 4 14439aebddd1SJeff Kirsher 14449aebddd1SJeff Kirsher struct be_cmd_req_set_func_cap { 14459aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 14469aebddd1SJeff Kirsher u32 valid_cap_flags; 14479aebddd1SJeff Kirsher u32 cap_flags; 14489aebddd1SJeff Kirsher u8 rsvd[212]; 14499aebddd1SJeff Kirsher }; 14509aebddd1SJeff Kirsher 14519aebddd1SJeff Kirsher struct be_cmd_resp_set_func_cap { 14529aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 14539aebddd1SJeff Kirsher u32 valid_cap_flags; 14549aebddd1SJeff Kirsher u32 cap_flags; 14559aebddd1SJeff Kirsher u8 rsvd[212]; 14569aebddd1SJeff Kirsher }; 14579aebddd1SJeff Kirsher 1458f25b119cSPadmanabh Ratnakar /*********************** Function Privileges ***********************/ 1459f25b119cSPadmanabh Ratnakar enum { 1460f25b119cSPadmanabh Ratnakar BE_PRIV_DEFAULT = 0x1, 1461f25b119cSPadmanabh Ratnakar BE_PRIV_LNKQUERY = 0x2, 1462f25b119cSPadmanabh Ratnakar BE_PRIV_LNKSTATS = 0x4, 1463f25b119cSPadmanabh Ratnakar BE_PRIV_LNKMGMT = 0x8, 1464f25b119cSPadmanabh Ratnakar BE_PRIV_LNKDIAG = 0x10, 1465f25b119cSPadmanabh Ratnakar BE_PRIV_UTILQUERY = 0x20, 1466f25b119cSPadmanabh Ratnakar BE_PRIV_FILTMGMT = 0x40, 1467f25b119cSPadmanabh Ratnakar BE_PRIV_IFACEMGMT = 0x80, 1468f25b119cSPadmanabh Ratnakar BE_PRIV_VHADM = 0x100, 1469f25b119cSPadmanabh Ratnakar BE_PRIV_DEVCFG = 0x200, 1470f25b119cSPadmanabh Ratnakar BE_PRIV_DEVSEC = 0x400 1471f25b119cSPadmanabh Ratnakar }; 1472f25b119cSPadmanabh Ratnakar #define MAX_PRIVILEGES (BE_PRIV_VHADM | BE_PRIV_DEVCFG | \ 1473f25b119cSPadmanabh Ratnakar BE_PRIV_DEVSEC) 1474f25b119cSPadmanabh Ratnakar #define MIN_PRIVILEGES BE_PRIV_DEFAULT 1475f25b119cSPadmanabh Ratnakar 1476f25b119cSPadmanabh Ratnakar struct be_cmd_priv_map { 1477f25b119cSPadmanabh Ratnakar u8 opcode; 1478f25b119cSPadmanabh Ratnakar u8 subsystem; 1479f25b119cSPadmanabh Ratnakar u32 priv_mask; 1480f25b119cSPadmanabh Ratnakar }; 1481f25b119cSPadmanabh Ratnakar 1482f25b119cSPadmanabh Ratnakar struct be_cmd_req_get_fn_privileges { 1483f25b119cSPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1484f25b119cSPadmanabh Ratnakar u32 rsvd; 1485f25b119cSPadmanabh Ratnakar }; 1486f25b119cSPadmanabh Ratnakar 1487f25b119cSPadmanabh Ratnakar struct be_cmd_resp_get_fn_privileges { 1488f25b119cSPadmanabh Ratnakar struct be_cmd_resp_hdr hdr; 1489f25b119cSPadmanabh Ratnakar u32 privilege_mask; 1490f25b119cSPadmanabh Ratnakar }; 1491f25b119cSPadmanabh Ratnakar 149204a06028SSathya Perla struct be_cmd_req_set_fn_privileges { 149304a06028SSathya Perla struct be_cmd_req_hdr hdr; 149404a06028SSathya Perla u32 privileges; /* Used by BE3, SH-R */ 149504a06028SSathya Perla u32 privileges_lancer; /* Used by Lancer */ 149604a06028SSathya Perla }; 1497f25b119cSPadmanabh Ratnakar 1498590c391dSPadmanabh Ratnakar /******************** GET/SET_MACLIST **************************/ 1499590c391dSPadmanabh Ratnakar #define BE_MAX_MAC 64 1500590c391dSPadmanabh Ratnakar struct be_cmd_req_get_mac_list { 1501590c391dSPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1502e5e1ee89SPadmanabh Ratnakar u8 mac_type; 1503e5e1ee89SPadmanabh Ratnakar u8 perm_override; 1504e5e1ee89SPadmanabh Ratnakar u16 iface_id; 1505e5e1ee89SPadmanabh Ratnakar u32 mac_id; 1506e5e1ee89SPadmanabh Ratnakar u32 rsvd[3]; 1507e5e1ee89SPadmanabh Ratnakar } __packed; 1508e5e1ee89SPadmanabh Ratnakar 1509e5e1ee89SPadmanabh Ratnakar struct get_list_macaddr { 1510e5e1ee89SPadmanabh Ratnakar u16 mac_addr_size; 1511e5e1ee89SPadmanabh Ratnakar union { 1512e5e1ee89SPadmanabh Ratnakar u8 macaddr[6]; 1513e5e1ee89SPadmanabh Ratnakar struct { 1514e5e1ee89SPadmanabh Ratnakar u8 rsvd[2]; 1515e5e1ee89SPadmanabh Ratnakar u32 mac_id; 1516e5e1ee89SPadmanabh Ratnakar } __packed s_mac_id; 1517e5e1ee89SPadmanabh Ratnakar } __packed mac_addr_id; 1518590c391dSPadmanabh Ratnakar } __packed; 1519590c391dSPadmanabh Ratnakar 1520590c391dSPadmanabh Ratnakar struct be_cmd_resp_get_mac_list { 1521590c391dSPadmanabh Ratnakar struct be_cmd_resp_hdr hdr; 1522e5e1ee89SPadmanabh Ratnakar struct get_list_macaddr fd_macaddr; /* Factory default mac */ 1523e5e1ee89SPadmanabh Ratnakar struct get_list_macaddr macid_macaddr; /* soft mac */ 1524e5e1ee89SPadmanabh Ratnakar u8 true_mac_count; 1525e5e1ee89SPadmanabh Ratnakar u8 pseudo_mac_count; 1526e5e1ee89SPadmanabh Ratnakar u8 mac_list_size; 1527e5e1ee89SPadmanabh Ratnakar u8 rsvd; 1528e5e1ee89SPadmanabh Ratnakar /* perm override mac */ 1529e5e1ee89SPadmanabh Ratnakar struct get_list_macaddr macaddr_list[BE_MAX_MAC]; 1530590c391dSPadmanabh Ratnakar } __packed; 1531590c391dSPadmanabh Ratnakar 1532590c391dSPadmanabh Ratnakar struct be_cmd_req_set_mac_list { 1533590c391dSPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1534590c391dSPadmanabh Ratnakar u8 mac_count; 1535590c391dSPadmanabh Ratnakar u8 rsvd1; 1536590c391dSPadmanabh Ratnakar u16 rsvd2; 1537590c391dSPadmanabh Ratnakar struct macaddr mac[BE_MAX_MAC]; 1538590c391dSPadmanabh Ratnakar } __packed; 1539590c391dSPadmanabh Ratnakar 1540f1f3ee1bSAjit Khaparde /*********************** HSW Config ***********************/ 1541a77dcb8cSAjit Khaparde #define PORT_FWD_TYPE_VEPA 0x3 1542a77dcb8cSAjit Khaparde #define PORT_FWD_TYPE_VEB 0x2 1543a77dcb8cSAjit Khaparde 1544f1f3ee1bSAjit Khaparde struct amap_set_hsw_context { 1545f1f3ee1bSAjit Khaparde u8 interface_id[16]; 1546f1f3ee1bSAjit Khaparde u8 rsvd0[14]; 1547f1f3ee1bSAjit Khaparde u8 pvid_valid; 1548a77dcb8cSAjit Khaparde u8 pport; 1549a77dcb8cSAjit Khaparde u8 rsvd1[6]; 1550a77dcb8cSAjit Khaparde u8 port_fwd_type[3]; 1551a77dcb8cSAjit Khaparde u8 rsvd2[7]; 1552f1f3ee1bSAjit Khaparde u8 pvid[16]; 1553f1f3ee1bSAjit Khaparde u8 rsvd3[32]; 1554f1f3ee1bSAjit Khaparde u8 rsvd4[32]; 1555f1f3ee1bSAjit Khaparde u8 rsvd5[32]; 1556f1f3ee1bSAjit Khaparde } __packed; 1557f1f3ee1bSAjit Khaparde 1558f1f3ee1bSAjit Khaparde struct be_cmd_req_set_hsw_config { 1559f1f3ee1bSAjit Khaparde struct be_cmd_req_hdr hdr; 1560f1f3ee1bSAjit Khaparde u8 context[sizeof(struct amap_set_hsw_context) / 8]; 1561f1f3ee1bSAjit Khaparde } __packed; 1562f1f3ee1bSAjit Khaparde 1563f1f3ee1bSAjit Khaparde struct be_cmd_resp_set_hsw_config { 1564f1f3ee1bSAjit Khaparde struct be_cmd_resp_hdr hdr; 1565f1f3ee1bSAjit Khaparde u32 rsvd; 1566f1f3ee1bSAjit Khaparde }; 1567f1f3ee1bSAjit Khaparde 1568f1f3ee1bSAjit Khaparde struct amap_get_hsw_req_context { 1569f1f3ee1bSAjit Khaparde u8 interface_id[16]; 1570f1f3ee1bSAjit Khaparde u8 rsvd0[14]; 1571f1f3ee1bSAjit Khaparde u8 pvid_valid; 1572f1f3ee1bSAjit Khaparde u8 pport; 1573f1f3ee1bSAjit Khaparde } __packed; 1574f1f3ee1bSAjit Khaparde 1575f1f3ee1bSAjit Khaparde struct amap_get_hsw_resp_context { 1576a77dcb8cSAjit Khaparde u8 rsvd0[6]; 1577a77dcb8cSAjit Khaparde u8 port_fwd_type[3]; 1578a77dcb8cSAjit Khaparde u8 rsvd1[7]; 1579f1f3ee1bSAjit Khaparde u8 pvid[16]; 1580f1f3ee1bSAjit Khaparde u8 rsvd2[32]; 1581f1f3ee1bSAjit Khaparde u8 rsvd3[32]; 1582f1f3ee1bSAjit Khaparde u8 rsvd4[32]; 1583f1f3ee1bSAjit Khaparde } __packed; 1584f1f3ee1bSAjit Khaparde 1585f1f3ee1bSAjit Khaparde struct be_cmd_req_get_hsw_config { 1586f1f3ee1bSAjit Khaparde struct be_cmd_req_hdr hdr; 1587f1f3ee1bSAjit Khaparde u8 context[sizeof(struct amap_get_hsw_req_context) / 8]; 1588f1f3ee1bSAjit Khaparde } __packed; 1589f1f3ee1bSAjit Khaparde 1590f1f3ee1bSAjit Khaparde struct be_cmd_resp_get_hsw_config { 1591f1f3ee1bSAjit Khaparde struct be_cmd_resp_hdr hdr; 1592f1f3ee1bSAjit Khaparde u8 context[sizeof(struct amap_get_hsw_resp_context) / 8]; 1593f1f3ee1bSAjit Khaparde u32 rsvd; 1594f1f3ee1bSAjit Khaparde }; 1595f1f3ee1bSAjit Khaparde 1596b4e32a71SPadmanabh Ratnakar /******************* get port names ***************/ 1597b4e32a71SPadmanabh Ratnakar struct be_cmd_req_get_port_name { 1598b4e32a71SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1599b4e32a71SPadmanabh Ratnakar u32 rsvd0; 1600b4e32a71SPadmanabh Ratnakar }; 1601b4e32a71SPadmanabh Ratnakar 1602b4e32a71SPadmanabh Ratnakar struct be_cmd_resp_get_port_name { 1603b4e32a71SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1604b4e32a71SPadmanabh Ratnakar u8 port_name[4]; 1605b4e32a71SPadmanabh Ratnakar }; 1606b4e32a71SPadmanabh Ratnakar 16079aebddd1SJeff Kirsher /*************** HW Stats Get v1 **********************************/ 16089aebddd1SJeff Kirsher #define BE_TXP_SW_SZ 48 16099aebddd1SJeff Kirsher struct be_port_rxf_stats_v1 { 16109aebddd1SJeff Kirsher u32 rsvd0[12]; 16119aebddd1SJeff Kirsher u32 rx_crc_errors; 16129aebddd1SJeff Kirsher u32 rx_alignment_symbol_errors; 16139aebddd1SJeff Kirsher u32 rx_pause_frames; 16149aebddd1SJeff Kirsher u32 rx_priority_pause_frames; 16159aebddd1SJeff Kirsher u32 rx_control_frames; 16169aebddd1SJeff Kirsher u32 rx_in_range_errors; 16179aebddd1SJeff Kirsher u32 rx_out_range_errors; 16189aebddd1SJeff Kirsher u32 rx_frame_too_long; 161918fb06a1SSuresh Reddy u32 rx_address_filtered; 16209aebddd1SJeff Kirsher u32 rx_dropped_too_small; 16219aebddd1SJeff Kirsher u32 rx_dropped_too_short; 16229aebddd1SJeff Kirsher u32 rx_dropped_header_too_small; 16239aebddd1SJeff Kirsher u32 rx_dropped_tcp_length; 16249aebddd1SJeff Kirsher u32 rx_dropped_runt; 16259aebddd1SJeff Kirsher u32 rsvd1[10]; 16269aebddd1SJeff Kirsher u32 rx_ip_checksum_errs; 16279aebddd1SJeff Kirsher u32 rx_tcp_checksum_errs; 16289aebddd1SJeff Kirsher u32 rx_udp_checksum_errs; 16299aebddd1SJeff Kirsher u32 rsvd2[7]; 16309aebddd1SJeff Kirsher u32 rx_switched_unicast_packets; 16319aebddd1SJeff Kirsher u32 rx_switched_multicast_packets; 16329aebddd1SJeff Kirsher u32 rx_switched_broadcast_packets; 16339aebddd1SJeff Kirsher u32 rsvd3[3]; 16349aebddd1SJeff Kirsher u32 tx_pauseframes; 16359aebddd1SJeff Kirsher u32 tx_priority_pauseframes; 16369aebddd1SJeff Kirsher u32 tx_controlframes; 16379aebddd1SJeff Kirsher u32 rsvd4[10]; 16389aebddd1SJeff Kirsher u32 rxpp_fifo_overflow_drop; 16399aebddd1SJeff Kirsher u32 rx_input_fifo_overflow_drop; 16409aebddd1SJeff Kirsher u32 pmem_fifo_overflow_drop; 16419aebddd1SJeff Kirsher u32 jabber_events; 16429aebddd1SJeff Kirsher u32 rsvd5[3]; 16439aebddd1SJeff Kirsher }; 16449aebddd1SJeff Kirsher 16459aebddd1SJeff Kirsher 16469aebddd1SJeff Kirsher struct be_rxf_stats_v1 { 16479aebddd1SJeff Kirsher struct be_port_rxf_stats_v1 port[4]; 16489aebddd1SJeff Kirsher u32 rsvd0[2]; 16499aebddd1SJeff Kirsher u32 rx_drops_no_pbuf; 16509aebddd1SJeff Kirsher u32 rx_drops_no_txpb; 16519aebddd1SJeff Kirsher u32 rx_drops_no_erx_descr; 16529aebddd1SJeff Kirsher u32 rx_drops_no_tpre_descr; 16539aebddd1SJeff Kirsher u32 rsvd1[6]; 16549aebddd1SJeff Kirsher u32 rx_drops_too_many_frags; 16559aebddd1SJeff Kirsher u32 rx_drops_invalid_ring; 16569aebddd1SJeff Kirsher u32 forwarded_packets; 16579aebddd1SJeff Kirsher u32 rx_drops_mtu; 16589aebddd1SJeff Kirsher u32 rsvd2[14]; 16599aebddd1SJeff Kirsher }; 16609aebddd1SJeff Kirsher 16619aebddd1SJeff Kirsher struct be_erx_stats_v1 { 16629aebddd1SJeff Kirsher u32 rx_drops_no_fragments[68]; /* dwordS 0 to 67*/ 16639aebddd1SJeff Kirsher u32 rsvd[4]; 16649aebddd1SJeff Kirsher }; 16659aebddd1SJeff Kirsher 166661000861SAjit Khaparde struct be_port_rxf_stats_v2 { 166761000861SAjit Khaparde u32 rsvd0[10]; 166861000861SAjit Khaparde u32 roce_bytes_received_lsd; 166961000861SAjit Khaparde u32 roce_bytes_received_msd; 167061000861SAjit Khaparde u32 rsvd1[5]; 167161000861SAjit Khaparde u32 roce_frames_received; 167261000861SAjit Khaparde u32 rx_crc_errors; 167361000861SAjit Khaparde u32 rx_alignment_symbol_errors; 167461000861SAjit Khaparde u32 rx_pause_frames; 167561000861SAjit Khaparde u32 rx_priority_pause_frames; 167661000861SAjit Khaparde u32 rx_control_frames; 167761000861SAjit Khaparde u32 rx_in_range_errors; 167861000861SAjit Khaparde u32 rx_out_range_errors; 167961000861SAjit Khaparde u32 rx_frame_too_long; 168061000861SAjit Khaparde u32 rx_address_filtered; 168161000861SAjit Khaparde u32 rx_dropped_too_small; 168261000861SAjit Khaparde u32 rx_dropped_too_short; 168361000861SAjit Khaparde u32 rx_dropped_header_too_small; 168461000861SAjit Khaparde u32 rx_dropped_tcp_length; 168561000861SAjit Khaparde u32 rx_dropped_runt; 168661000861SAjit Khaparde u32 rsvd2[10]; 168761000861SAjit Khaparde u32 rx_ip_checksum_errs; 168861000861SAjit Khaparde u32 rx_tcp_checksum_errs; 168961000861SAjit Khaparde u32 rx_udp_checksum_errs; 169061000861SAjit Khaparde u32 rsvd3[7]; 169161000861SAjit Khaparde u32 rx_switched_unicast_packets; 169261000861SAjit Khaparde u32 rx_switched_multicast_packets; 169361000861SAjit Khaparde u32 rx_switched_broadcast_packets; 169461000861SAjit Khaparde u32 rsvd4[3]; 169561000861SAjit Khaparde u32 tx_pauseframes; 169661000861SAjit Khaparde u32 tx_priority_pauseframes; 169761000861SAjit Khaparde u32 tx_controlframes; 169861000861SAjit Khaparde u32 rsvd5[10]; 169961000861SAjit Khaparde u32 rxpp_fifo_overflow_drop; 170061000861SAjit Khaparde u32 rx_input_fifo_overflow_drop; 170161000861SAjit Khaparde u32 pmem_fifo_overflow_drop; 170261000861SAjit Khaparde u32 jabber_events; 170361000861SAjit Khaparde u32 rsvd6[3]; 170461000861SAjit Khaparde u32 rx_drops_payload_size; 170561000861SAjit Khaparde u32 rx_drops_clipped_header; 170661000861SAjit Khaparde u32 rx_drops_crc; 170761000861SAjit Khaparde u32 roce_drops_payload_len; 170861000861SAjit Khaparde u32 roce_drops_crc; 170961000861SAjit Khaparde u32 rsvd7[19]; 171061000861SAjit Khaparde }; 171161000861SAjit Khaparde 171261000861SAjit Khaparde struct be_rxf_stats_v2 { 171361000861SAjit Khaparde struct be_port_rxf_stats_v2 port[4]; 171461000861SAjit Khaparde u32 rsvd0[2]; 171561000861SAjit Khaparde u32 rx_drops_no_pbuf; 171661000861SAjit Khaparde u32 rx_drops_no_txpb; 171761000861SAjit Khaparde u32 rx_drops_no_erx_descr; 171861000861SAjit Khaparde u32 rx_drops_no_tpre_descr; 171961000861SAjit Khaparde u32 rsvd1[6]; 172061000861SAjit Khaparde u32 rx_drops_too_many_frags; 172161000861SAjit Khaparde u32 rx_drops_invalid_ring; 172261000861SAjit Khaparde u32 forwarded_packets; 172361000861SAjit Khaparde u32 rx_drops_mtu; 172461000861SAjit Khaparde u32 rsvd2[35]; 172561000861SAjit Khaparde }; 172661000861SAjit Khaparde 17279aebddd1SJeff Kirsher struct be_hw_stats_v1 { 17289aebddd1SJeff Kirsher struct be_rxf_stats_v1 rxf; 17299aebddd1SJeff Kirsher u32 rsvd0[BE_TXP_SW_SZ]; 17309aebddd1SJeff Kirsher struct be_erx_stats_v1 erx; 17319aebddd1SJeff Kirsher struct be_pmem_stats pmem; 17320b3f0e7aSVasundhara Volam u32 rsvd1[18]; 17339aebddd1SJeff Kirsher }; 17349aebddd1SJeff Kirsher 17359aebddd1SJeff Kirsher struct be_cmd_req_get_stats_v1 { 17369aebddd1SJeff Kirsher struct be_cmd_req_hdr hdr; 17379aebddd1SJeff Kirsher u8 rsvd[sizeof(struct be_hw_stats_v1)]; 17389aebddd1SJeff Kirsher }; 17399aebddd1SJeff Kirsher 17409aebddd1SJeff Kirsher struct be_cmd_resp_get_stats_v1 { 17419aebddd1SJeff Kirsher struct be_cmd_resp_hdr hdr; 17429aebddd1SJeff Kirsher struct be_hw_stats_v1 hw_stats; 17439aebddd1SJeff Kirsher }; 17449aebddd1SJeff Kirsher 174561000861SAjit Khaparde struct be_erx_stats_v2 { 174661000861SAjit Khaparde u32 rx_drops_no_fragments[136]; /* dwordS 0 to 135*/ 174761000861SAjit Khaparde u32 rsvd[3]; 174861000861SAjit Khaparde }; 174961000861SAjit Khaparde 175061000861SAjit Khaparde struct be_hw_stats_v2 { 175161000861SAjit Khaparde struct be_rxf_stats_v2 rxf; 175261000861SAjit Khaparde u32 rsvd0[BE_TXP_SW_SZ]; 175361000861SAjit Khaparde struct be_erx_stats_v2 erx; 175461000861SAjit Khaparde struct be_pmem_stats pmem; 175561000861SAjit Khaparde u32 rsvd1[18]; 175661000861SAjit Khaparde }; 175761000861SAjit Khaparde 175861000861SAjit Khaparde struct be_cmd_req_get_stats_v2 { 175961000861SAjit Khaparde struct be_cmd_req_hdr hdr; 176061000861SAjit Khaparde u8 rsvd[sizeof(struct be_hw_stats_v2)]; 176161000861SAjit Khaparde }; 176261000861SAjit Khaparde 176361000861SAjit Khaparde struct be_cmd_resp_get_stats_v2 { 176461000861SAjit Khaparde struct be_cmd_resp_hdr hdr; 176561000861SAjit Khaparde struct be_hw_stats_v2 hw_stats; 176661000861SAjit Khaparde }; 176761000861SAjit Khaparde 1768941a77d5SSomnath Kotur /************** get fat capabilites *******************/ 1769941a77d5SSomnath Kotur #define MAX_MODULES 27 1770941a77d5SSomnath Kotur #define MAX_MODES 4 1771941a77d5SSomnath Kotur #define MODE_UART 0 1772941a77d5SSomnath Kotur #define FW_LOG_LEVEL_DEFAULT 48 1773941a77d5SSomnath Kotur #define FW_LOG_LEVEL_FATAL 64 1774941a77d5SSomnath Kotur 1775941a77d5SSomnath Kotur struct ext_fat_mode { 1776941a77d5SSomnath Kotur u8 mode; 1777941a77d5SSomnath Kotur u8 rsvd0; 1778941a77d5SSomnath Kotur u16 port_mask; 1779941a77d5SSomnath Kotur u32 dbg_lvl; 1780941a77d5SSomnath Kotur u64 fun_mask; 1781941a77d5SSomnath Kotur } __packed; 1782941a77d5SSomnath Kotur 1783941a77d5SSomnath Kotur struct ext_fat_modules { 1784941a77d5SSomnath Kotur u8 modules_str[32]; 1785941a77d5SSomnath Kotur u32 modules_id; 1786941a77d5SSomnath Kotur u32 num_modes; 1787941a77d5SSomnath Kotur struct ext_fat_mode trace_lvl[MAX_MODES]; 1788941a77d5SSomnath Kotur } __packed; 1789941a77d5SSomnath Kotur 1790941a77d5SSomnath Kotur struct be_fat_conf_params { 1791941a77d5SSomnath Kotur u32 max_log_entries; 1792941a77d5SSomnath Kotur u32 log_entry_size; 1793941a77d5SSomnath Kotur u8 log_type; 1794941a77d5SSomnath Kotur u8 max_log_funs; 1795941a77d5SSomnath Kotur u8 max_log_ports; 1796941a77d5SSomnath Kotur u8 rsvd0; 1797941a77d5SSomnath Kotur u32 supp_modes; 1798941a77d5SSomnath Kotur u32 num_modules; 1799941a77d5SSomnath Kotur struct ext_fat_modules module[MAX_MODULES]; 1800941a77d5SSomnath Kotur } __packed; 1801941a77d5SSomnath Kotur 1802941a77d5SSomnath Kotur struct be_cmd_req_get_ext_fat_caps { 1803941a77d5SSomnath Kotur struct be_cmd_req_hdr hdr; 1804941a77d5SSomnath Kotur u32 parameter_type; 1805941a77d5SSomnath Kotur }; 1806941a77d5SSomnath Kotur 1807941a77d5SSomnath Kotur struct be_cmd_resp_get_ext_fat_caps { 1808941a77d5SSomnath Kotur struct be_cmd_resp_hdr hdr; 1809941a77d5SSomnath Kotur struct be_fat_conf_params get_params; 1810941a77d5SSomnath Kotur }; 1811941a77d5SSomnath Kotur 1812941a77d5SSomnath Kotur struct be_cmd_req_set_ext_fat_caps { 1813941a77d5SSomnath Kotur struct be_cmd_req_hdr hdr; 1814941a77d5SSomnath Kotur struct be_fat_conf_params set_params; 1815941a77d5SSomnath Kotur }; 1816941a77d5SSomnath Kotur 1817150d58c7SVasundhara Volam #define RESOURCE_DESC_SIZE_V0 72 1818150d58c7SVasundhara Volam #define RESOURCE_DESC_SIZE_V1 88 1819150d58c7SVasundhara Volam #define PCIE_RESOURCE_DESC_TYPE_V0 0x40 1820a05f99dbSVasundhara Volam #define NIC_RESOURCE_DESC_TYPE_V0 0x41 1821150d58c7SVasundhara Volam #define PCIE_RESOURCE_DESC_TYPE_V1 0x50 1822a05f99dbSVasundhara Volam #define NIC_RESOURCE_DESC_TYPE_V1 0x51 1823150d58c7SVasundhara Volam #define MAX_RESOURCE_DESC 264 1824d5c18473SPadmanabh Ratnakar 1825d5c18473SPadmanabh Ratnakar /* QOS unit number */ 1826d5c18473SPadmanabh Ratnakar #define QUN 4 1827d5c18473SPadmanabh Ratnakar /* Immediate */ 1828d5c18473SPadmanabh Ratnakar #define IMM 6 1829d5c18473SPadmanabh Ratnakar /* No save */ 1830d5c18473SPadmanabh Ratnakar #define NOSV 7 1831d5c18473SPadmanabh Ratnakar 1832150d58c7SVasundhara Volam struct be_res_desc_hdr { 1833abb93951SPadmanabh Ratnakar u8 desc_type; 1834abb93951SPadmanabh Ratnakar u8 desc_len; 1835150d58c7SVasundhara Volam } __packed; 1836150d58c7SVasundhara Volam 1837150d58c7SVasundhara Volam struct be_pcie_res_desc { 1838150d58c7SVasundhara Volam struct be_res_desc_hdr hdr; 1839150d58c7SVasundhara Volam u8 rsvd0; 1840150d58c7SVasundhara Volam u8 flags; 1841150d58c7SVasundhara Volam u16 rsvd1; 1842150d58c7SVasundhara Volam u8 pf_num; 1843150d58c7SVasundhara Volam u8 rsvd2; 1844150d58c7SVasundhara Volam u32 rsvd3; 1845150d58c7SVasundhara Volam u8 sriov_state; 1846150d58c7SVasundhara Volam u8 pf_state; 1847150d58c7SVasundhara Volam u8 pf_type; 1848150d58c7SVasundhara Volam u8 rsvd4; 1849150d58c7SVasundhara Volam u16 num_vfs; 1850150d58c7SVasundhara Volam u16 rsvd5; 1851150d58c7SVasundhara Volam u32 rsvd6[17]; 1852150d58c7SVasundhara Volam } __packed; 1853150d58c7SVasundhara Volam 1854150d58c7SVasundhara Volam struct be_nic_res_desc { 1855150d58c7SVasundhara Volam struct be_res_desc_hdr hdr; 1856abb93951SPadmanabh Ratnakar u8 rsvd1; 1857abb93951SPadmanabh Ratnakar u8 flags; 1858abb93951SPadmanabh Ratnakar u8 vf_num; 1859abb93951SPadmanabh Ratnakar u8 rsvd2; 1860abb93951SPadmanabh Ratnakar u8 pf_num; 1861abb93951SPadmanabh Ratnakar u8 rsvd3; 1862abb93951SPadmanabh Ratnakar u16 unicast_mac_count; 1863abb93951SPadmanabh Ratnakar u8 rsvd4[6]; 1864abb93951SPadmanabh Ratnakar u16 mcc_count; 1865abb93951SPadmanabh Ratnakar u16 vlan_count; 1866abb93951SPadmanabh Ratnakar u16 mcast_mac_count; 1867abb93951SPadmanabh Ratnakar u16 txq_count; 1868abb93951SPadmanabh Ratnakar u16 rq_count; 1869abb93951SPadmanabh Ratnakar u16 rssq_count; 1870abb93951SPadmanabh Ratnakar u16 lro_count; 1871abb93951SPadmanabh Ratnakar u16 cq_count; 1872abb93951SPadmanabh Ratnakar u16 toe_conn_count; 1873abb93951SPadmanabh Ratnakar u16 eq_count; 1874abb93951SPadmanabh Ratnakar u32 rsvd5; 1875abb93951SPadmanabh Ratnakar u32 cap_flags; 1876abb93951SPadmanabh Ratnakar u8 link_param; 1877abb93951SPadmanabh Ratnakar u8 rsvd6[3]; 1878abb93951SPadmanabh Ratnakar u32 bw_min; 1879abb93951SPadmanabh Ratnakar u32 bw_max; 1880abb93951SPadmanabh Ratnakar u8 acpi_params; 1881abb93951SPadmanabh Ratnakar u8 wol_param; 1882abb93951SPadmanabh Ratnakar u16 rsvd7; 1883d44517fdSAjit Khaparde u32 rsvd8[7]; 1884150d58c7SVasundhara Volam } __packed; 1885abb93951SPadmanabh Ratnakar 1886abb93951SPadmanabh Ratnakar struct be_cmd_req_get_func_config { 1887abb93951SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1888abb93951SPadmanabh Ratnakar }; 1889abb93951SPadmanabh Ratnakar 1890abb93951SPadmanabh Ratnakar struct be_cmd_resp_get_func_config { 189128710c55SKalesh AP struct be_cmd_resp_hdr hdr; 1892abb93951SPadmanabh Ratnakar u32 desc_count; 1893150d58c7SVasundhara Volam u8 func_param[MAX_RESOURCE_DESC * RESOURCE_DESC_SIZE_V1]; 1894abb93951SPadmanabh Ratnakar }; 1895abb93951SPadmanabh Ratnakar 1896abb93951SPadmanabh Ratnakar #define ACTIVE_PROFILE_TYPE 0x2 1897abb93951SPadmanabh Ratnakar struct be_cmd_req_get_profile_config { 1898abb93951SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1899abb93951SPadmanabh Ratnakar u8 rsvd; 1900abb93951SPadmanabh Ratnakar u8 type; 1901abb93951SPadmanabh Ratnakar u16 rsvd1; 1902abb93951SPadmanabh Ratnakar }; 1903abb93951SPadmanabh Ratnakar 1904abb93951SPadmanabh Ratnakar struct be_cmd_resp_get_profile_config { 1905150d58c7SVasundhara Volam struct be_cmd_resp_hdr hdr; 1906abb93951SPadmanabh Ratnakar u32 desc_count; 1907150d58c7SVasundhara Volam u8 func_param[MAX_RESOURCE_DESC * RESOURCE_DESC_SIZE_V1]; 1908a05f99dbSVasundhara Volam }; 1909a05f99dbSVasundhara Volam 1910d5c18473SPadmanabh Ratnakar struct be_cmd_req_set_profile_config { 1911d5c18473SPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1912d5c18473SPadmanabh Ratnakar u32 rsvd; 1913d5c18473SPadmanabh Ratnakar u32 desc_count; 1914150d58c7SVasundhara Volam struct be_nic_res_desc nic_desc; 1915d5c18473SPadmanabh Ratnakar }; 1916d5c18473SPadmanabh Ratnakar 1917d5c18473SPadmanabh Ratnakar struct be_cmd_resp_set_profile_config { 1918150d58c7SVasundhara Volam struct be_cmd_resp_hdr hdr; 1919d5c18473SPadmanabh Ratnakar }; 1920d5c18473SPadmanabh Ratnakar 1921542963b7SVasundhara Volam struct be_cmd_req_get_active_profile { 1922542963b7SVasundhara Volam struct be_cmd_req_hdr hdr; 1923542963b7SVasundhara Volam u32 rsvd; 1924542963b7SVasundhara Volam } __packed; 1925542963b7SVasundhara Volam 1926542963b7SVasundhara Volam struct be_cmd_resp_get_active_profile { 1927542963b7SVasundhara Volam struct be_cmd_resp_hdr hdr; 1928542963b7SVasundhara Volam u16 active_profile_id; 1929542963b7SVasundhara Volam u16 next_profile_id; 1930542963b7SVasundhara Volam } __packed; 1931542963b7SVasundhara Volam 1932dcf7ebbaSPadmanabh Ratnakar struct be_cmd_enable_disable_vf { 1933dcf7ebbaSPadmanabh Ratnakar struct be_cmd_req_hdr hdr; 1934dcf7ebbaSPadmanabh Ratnakar u8 enable; 1935dcf7ebbaSPadmanabh Ratnakar u8 rsvd[3]; 1936dcf7ebbaSPadmanabh Ratnakar }; 1937dcf7ebbaSPadmanabh Ratnakar 193868c45a2dSSomnath Kotur struct be_cmd_req_intr_set { 193968c45a2dSSomnath Kotur struct be_cmd_req_hdr hdr; 194068c45a2dSSomnath Kotur u8 intr_enabled; 194168c45a2dSSomnath Kotur u8 rsvd[3]; 194268c45a2dSSomnath Kotur }; 194368c45a2dSSomnath Kotur 1944f25b119cSPadmanabh Ratnakar static inline bool check_privilege(struct be_adapter *adapter, u32 flags) 1945f25b119cSPadmanabh Ratnakar { 1946f25b119cSPadmanabh Ratnakar return flags & adapter->cmd_privileges ? true : false; 1947f25b119cSPadmanabh Ratnakar } 1948f25b119cSPadmanabh Ratnakar 19494c876616SSathya Perla /************** Get IFACE LIST *******************/ 19504c876616SSathya Perla struct be_if_desc { 19514c876616SSathya Perla u32 if_id; 19524c876616SSathya Perla u32 cap_flags; 19534c876616SSathya Perla u32 en_flags; 19544c876616SSathya Perla }; 19554c876616SSathya Perla 19564c876616SSathya Perla struct be_cmd_req_get_iface_list { 19574c876616SSathya Perla struct be_cmd_req_hdr hdr; 19584c876616SSathya Perla }; 19594c876616SSathya Perla 19604c876616SSathya Perla struct be_cmd_resp_get_iface_list { 19614c876616SSathya Perla struct be_cmd_req_hdr hdr; 19624c876616SSathya Perla u32 if_cnt; 19634c876616SSathya Perla struct be_if_desc if_desc; 19644c876616SSathya Perla }; 19654c876616SSathya Perla 196631886e87SJoe Perches int be_pci_fnum_get(struct be_adapter *adapter); 196731886e87SJoe Perches int be_fw_wait_ready(struct be_adapter *adapter); 196831886e87SJoe Perches int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr, 19695ee4979bSSathya Perla bool permanent, u32 if_handle, u32 pmac_id); 197031886e87SJoe Perches int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, u32 if_id, 197131886e87SJoe Perches u32 *pmac_id, u32 domain); 197231886e87SJoe Perches int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, int pmac_id, 19739aebddd1SJeff Kirsher u32 domain); 197431886e87SJoe Perches int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, u32 en_flags, 197531886e87SJoe Perches u32 *if_handle, u32 domain); 197631886e87SJoe Perches int be_cmd_if_destroy(struct be_adapter *adapter, int if_handle, u32 domain); 197731886e87SJoe Perches int be_cmd_eq_create(struct be_adapter *adapter, struct be_eq_obj *eqo); 197831886e87SJoe Perches int be_cmd_cq_create(struct be_adapter *adapter, struct be_queue_info *cq, 197931886e87SJoe Perches struct be_queue_info *eq, bool no_delay, 198031886e87SJoe Perches int num_cqe_dma_coalesce); 198131886e87SJoe Perches int be_cmd_mccq_create(struct be_adapter *adapter, struct be_queue_info *mccq, 19829aebddd1SJeff Kirsher struct be_queue_info *cq); 198331886e87SJoe Perches int be_cmd_txq_create(struct be_adapter *adapter, struct be_tx_obj *txo); 198431886e87SJoe Perches int be_cmd_rxq_create(struct be_adapter *adapter, struct be_queue_info *rxq, 198531886e87SJoe Perches u16 cq_id, u16 frag_size, u32 if_id, u32 rss, u8 *rss_id); 198631886e87SJoe Perches int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q, 19879aebddd1SJeff Kirsher int type); 198831886e87SJoe Perches int be_cmd_rxq_destroy(struct be_adapter *adapter, struct be_queue_info *q); 198931886e87SJoe Perches int be_cmd_link_status_query(struct be_adapter *adapter, u16 *link_speed, 1990323ff71eSSathya Perla u8 *link_status, u32 dom); 199131886e87SJoe Perches int be_cmd_reset(struct be_adapter *adapter); 199231886e87SJoe Perches int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd); 199331886e87SJoe Perches int lancer_cmd_get_pport_stats(struct be_adapter *adapter, 19949aebddd1SJeff Kirsher struct be_dma_mem *nonemb_cmd); 199531886e87SJoe Perches int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver, 199604b71175SSathya Perla char *fw_on_flash); 19972632bafdSSathya Perla int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num); 199831886e87SJoe Perches int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, 1999012bd387SAjit Khaparde u32 num, bool promiscuous); 200031886e87SJoe Perches int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status); 200131886e87SJoe Perches int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc); 200231886e87SJoe Perches int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc); 200331886e87SJoe Perches int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num, 20040ad3157eSVasundhara Volam u32 *function_mode, u32 *function_caps, u16 *asic_rev); 200531886e87SJoe Perches int be_cmd_reset_function(struct be_adapter *adapter); 200631886e87SJoe Perches int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable, 2007594ad54aSSuresh Reddy u32 rss_hash_opts, u16 table_size); 200831886e87SJoe Perches int be_process_mcc(struct be_adapter *adapter); 200931886e87SJoe Perches int be_cmd_set_beacon_state(struct be_adapter *adapter, u8 port_num, u8 beacon, 201031886e87SJoe Perches u8 status, u8 state); 201131886e87SJoe Perches int be_cmd_get_beacon_state(struct be_adapter *adapter, u8 port_num, 201231886e87SJoe Perches u32 *state); 201331886e87SJoe Perches int be_cmd_write_flashrom(struct be_adapter *adapter, struct be_dma_mem *cmd, 201431886e87SJoe Perches u32 flash_oper, u32 flash_opcode, u32 buf_size); 201531886e87SJoe Perches int lancer_cmd_write_object(struct be_adapter *adapter, struct be_dma_mem *cmd, 20169aebddd1SJeff Kirsher u32 data_size, u32 data_offset, 201731886e87SJoe Perches const char *obj_name, u32 *data_written, 201831886e87SJoe Perches u8 *change_status, u8 *addn_status); 2019de49bd5aSPadmanabh Ratnakar int lancer_cmd_read_object(struct be_adapter *adapter, struct be_dma_mem *cmd, 2020de49bd5aSPadmanabh Ratnakar u32 data_size, u32 data_offset, const char *obj_name, 2021de49bd5aSPadmanabh Ratnakar u32 *data_read, u32 *eof, u8 *addn_status); 20229aebddd1SJeff Kirsher int be_cmd_get_flash_crc(struct be_adapter *adapter, u8 *flashed_crc, 20239aebddd1SJeff Kirsher int offset); 202431886e87SJoe Perches int be_cmd_enable_magic_wol(struct be_adapter *adapter, u8 *mac, 20259aebddd1SJeff Kirsher struct be_dma_mem *nonemb_cmd); 202631886e87SJoe Perches int be_cmd_fw_init(struct be_adapter *adapter); 202731886e87SJoe Perches int be_cmd_fw_clean(struct be_adapter *adapter); 202831886e87SJoe Perches void be_async_mcc_enable(struct be_adapter *adapter); 202931886e87SJoe Perches void be_async_mcc_disable(struct be_adapter *adapter); 203031886e87SJoe Perches int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num, 203131886e87SJoe Perches u32 loopback_type, u32 pkt_size, u32 num_pkts, 203231886e87SJoe Perches u64 pattern); 203331886e87SJoe Perches int be_cmd_ddr_dma_test(struct be_adapter *adapter, u64 pattern, u32 byte_cnt, 2034941a77d5SSomnath Kotur struct be_dma_mem *cmd); 203531886e87SJoe Perches int be_cmd_get_seeprom_data(struct be_adapter *adapter, 203631886e87SJoe Perches struct be_dma_mem *nonemb_cmd); 203731886e87SJoe Perches int be_cmd_set_loopback(struct be_adapter *adapter, u8 port_num, 203831886e87SJoe Perches u8 loopback_type, u8 enable); 203931886e87SJoe Perches int be_cmd_get_phy_info(struct be_adapter *adapter); 204031886e87SJoe Perches int be_cmd_set_qos(struct be_adapter *adapter, u32 bps, u32 domain); 204131886e87SJoe Perches void be_detect_error(struct be_adapter *adapter); 204231886e87SJoe Perches int be_cmd_get_die_temperature(struct be_adapter *adapter); 204331886e87SJoe Perches int be_cmd_get_cntl_attributes(struct be_adapter *adapter); 204431886e87SJoe Perches int be_cmd_req_native_mode(struct be_adapter *adapter); 204531886e87SJoe Perches int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size); 204631886e87SJoe Perches void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf); 204731886e87SJoe Perches int be_cmd_get_fn_privileges(struct be_adapter *adapter, u32 *privilege, 204831886e87SJoe Perches u32 domain); 204931886e87SJoe Perches int be_cmd_set_fn_privileges(struct be_adapter *adapter, u32 privileges, 205031886e87SJoe Perches u32 vf_num); 205131886e87SJoe Perches int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, 205231886e87SJoe Perches bool *pmac_id_active, u32 *pmac_id, u8 domain); 205331886e87SJoe Perches int be_cmd_get_active_mac(struct be_adapter *adapter, u32 pmac_id, u8 *mac); 205431886e87SJoe Perches int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac); 205531886e87SJoe Perches int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array, u8 mac_count, 205631886e87SJoe Perches u32 domain); 205731886e87SJoe Perches int be_cmd_set_mac(struct be_adapter *adapter, u8 *mac, int if_id, u32 dom); 205831886e87SJoe Perches int be_cmd_set_hsw_config(struct be_adapter *adapter, u16 pvid, u32 domain, 205931886e87SJoe Perches u16 intf_id, u16 hsw_mode); 206031886e87SJoe Perches int be_cmd_get_hsw_config(struct be_adapter *adapter, u16 *pvid, u32 domain, 206131886e87SJoe Perches u16 intf_id, u8 *mode); 206231886e87SJoe Perches int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter); 206331886e87SJoe Perches int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter, 206431886e87SJoe Perches struct be_dma_mem *cmd); 206531886e87SJoe Perches int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter, 2066941a77d5SSomnath Kotur struct be_dma_mem *cmd, 2067941a77d5SSomnath Kotur struct be_fat_conf_params *cfgs); 206831886e87SJoe Perches int lancer_physdev_ctrl(struct be_adapter *adapter, u32 mask); 206931886e87SJoe Perches int lancer_initiate_dump(struct be_adapter *adapter); 207031886e87SJoe Perches bool dump_present(struct be_adapter *adapter); 207131886e87SJoe Perches int lancer_test_and_set_rdy_state(struct be_adapter *adapter); 207231886e87SJoe Perches int be_cmd_query_port_name(struct be_adapter *adapter, u8 *port_name); 207392bf14abSSathya Perla int be_cmd_get_func_config(struct be_adapter *adapter, 207492bf14abSSathya Perla struct be_resources *res); 207592bf14abSSathya Perla int be_cmd_get_profile_config(struct be_adapter *adapter, 207692bf14abSSathya Perla struct be_resources *res, u8 domain); 207731886e87SJoe Perches int be_cmd_set_profile_config(struct be_adapter *adapter, u32 bps, u8 domain); 2078542963b7SVasundhara Volam int be_cmd_get_active_profile(struct be_adapter *adapter, u16 *profile); 207931886e87SJoe Perches int be_cmd_get_if_id(struct be_adapter *adapter, struct be_vf_cfg *vf_cfg, 208031886e87SJoe Perches int vf_num); 208131886e87SJoe Perches int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain); 208231886e87SJoe Perches int be_cmd_intr_set(struct be_adapter *adapter, bool intr_enable); 2083