^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright 2017 Broadcom. All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * The term "Broadcom" refers to Broadcom Limited and/or its subsidiaries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Contact Information:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * linux-drivers@broadcom.com
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef _BEISCSI_MGMT_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _BEISCSI_MGMT_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <scsi/scsi_bsg_iscsi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include "be_iscsi.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include "be_main.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define IP_ACTION_ADD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define IP_ACTION_DEL 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define IP_V6_LEN 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define IP_V4_LEN 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) /* UE Status and Mask register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define PCICFG_UE_STATUS_LOW 0xA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define PCICFG_UE_STATUS_HIGH 0xA4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define PCICFG_UE_STATUS_MASK_LOW 0xA8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define PCICFG_UE_STATUS_MASK_HI 0xAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int mgmt_open_connection(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) struct sockaddr *dst_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct beiscsi_endpoint *beiscsi_ep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct be_dma_mem *nonemb_cmd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) struct bsg_job *job,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) struct be_dma_mem *nonemb_cmd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define BE_INVLDT_CMD_TBL_SZ 128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) struct invldt_cmd_tbl {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) unsigned short icd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) unsigned short cid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct invldt_cmds_params_in {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) struct be_cmd_req_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) unsigned int ref_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) unsigned int icd_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) struct invldt_cmd_tbl table[BE_INVLDT_CMD_TBL_SZ];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) unsigned short cleanup_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) unsigned short unused;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) struct invldt_cmds_params_out {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) struct be_cmd_resp_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) unsigned int ref_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) unsigned int icd_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) unsigned int icd_status[BE_INVLDT_CMD_TBL_SZ];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) union be_invldt_cmds_params {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) struct invldt_cmds_params_in request;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) struct invldt_cmds_params_out response;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) struct mgmt_hba_attributes {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) u8 flashrom_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) u8 manufacturer_name[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) u32 supported_modes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) u8 seeprom_version_lo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) u8 seeprom_version_hi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) u8 rsvd0[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) u32 fw_cmd_data_struct_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) u32 ep_fw_data_struct_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) u8 ncsi_version_string[12];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) u32 default_extended_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) u8 controller_model_number[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) u8 controller_description[64];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) u8 controller_serial_number[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) u8 ip_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) u8 firmware_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) u8 bios_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) u8 redboot_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) u8 driver_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) u8 fw_on_flash_version_string[BEISCSI_VER_STRLEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) u32 functionalities_supported;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) u16 max_cdblength;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) u8 asic_revision;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) u8 generational_guid[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) u8 hba_port_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) u16 default_link_down_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) u8 iscsi_ver_min_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) u8 multifunction_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) u8 cache_valid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) u8 hba_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) u8 max_domains_supported;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) u8 phy_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) u32 firmware_post_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) u32 hba_mtu[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) u8 iscsi_features;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) u8 asic_generation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) u8 future_u8[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) u32 future_u32[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) struct mgmt_controller_attributes {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) struct mgmt_hba_attributes hba_attribs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) u16 pci_vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) u16 pci_device_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) u16 pci_sub_vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) u16 pci_sub_system_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) u8 pci_bus_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) u8 pci_device_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) u8 pci_function_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) u8 interface_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) u64 unique_identifier;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) u8 netfilters;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) u8 rsvd0[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) u32 future_u32[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) struct be_mgmt_controller_attributes {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) struct be_cmd_req_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) struct mgmt_controller_attributes params;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) struct be_mgmt_controller_attributes_resp {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) struct be_cmd_resp_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) struct mgmt_controller_attributes params;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) struct be_bsg_vendor_cmd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) struct be_cmd_req_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) unsigned short region;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) unsigned short offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) unsigned short sector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) /* configuration management */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define GET_MGMT_CONTROLLER_WS(phba) (phba->pmgmt_ws)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define ISCSI_GET_PDU_TEMPLATE_ADDRESS(pc, pa) {\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) pa->lo = phba->init_mem[ISCSI_MEM_GLOBAL_HEADER].mem_array[0].\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) bus_address.u.a32.address_lo; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) pa->hi = phba->init_mem[ISCSI_MEM_GLOBAL_HEADER].mem_array[0].\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) bus_address.u.a32.address_hi; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define BEISCSI_WRITE_FLASH 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define BEISCSI_READ_FLASH 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) struct beiscsi_endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) struct beiscsi_hba *phba;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) struct beiscsi_conn *conn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) struct iscsi_endpoint *openiscsi_ep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) unsigned short ip_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) char dst6_addr[ISCSI_ADDRESS_BUF_LEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) unsigned long dst_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) unsigned short ep_cid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) unsigned int fw_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) u16 dst_tcpport;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) u16 cid_vld;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) int beiscsi_mgmt_invalidate_icds(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) struct invldt_cmd_tbl *inv_tbl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) unsigned int nents);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) int beiscsi_get_initiator_name(struct beiscsi_hba *phba, char *name, bool cfg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) int beiscsi_if_en_dhcp(struct beiscsi_hba *phba, u32 ip_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) int beiscsi_if_en_static(struct beiscsi_hba *phba, u32 ip_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) u8 *ip, u8 *subnet);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) int beiscsi_if_set_gw(struct beiscsi_hba *phba, u32 ip_type, u8 *gw);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) int beiscsi_if_get_gw(struct beiscsi_hba *phba, u32 ip_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) struct be_cmd_get_def_gateway_resp *resp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) int mgmt_get_nic_conf(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) struct be_cmd_get_nic_conf_resp *mac);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) int beiscsi_if_get_info(struct beiscsi_hba *phba, int ip_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) struct be_cmd_get_if_info_resp **if_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) unsigned int beiscsi_if_get_handle(struct beiscsi_hba *phba);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) int beiscsi_if_set_vlan(struct beiscsi_hba *phba, uint16_t vlan_tag);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) unsigned int beiscsi_boot_logout_sess(struct beiscsi_hba *phba);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) unsigned int beiscsi_boot_reopen_sess(struct beiscsi_hba *phba);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) unsigned int beiscsi_boot_get_sinfo(struct beiscsi_hba *phba);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) unsigned int __beiscsi_boot_get_shandle(struct beiscsi_hba *phba, int async);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) int beiscsi_boot_get_shandle(struct beiscsi_hba *phba, unsigned int *s_handle);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) ssize_t beiscsi_drvr_ver_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) ssize_t beiscsi_fw_ver_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) ssize_t beiscsi_active_session_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) ssize_t beiscsi_adap_family_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) ssize_t beiscsi_free_session_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) ssize_t beiscsi_phys_port_disp(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) struct device_attribute *attr, char *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) struct wrb_handle *pwrb_handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) struct be_mem_descriptor *mem_descr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) struct hwi_wrb_context *pwrb_context);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) struct wrb_handle *pwrb_handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) struct hwi_wrb_context *pwrb_context);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) unsigned int beiscsi_invalidate_cxn(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) struct beiscsi_endpoint *beiscsi_ep);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) unsigned int beiscsi_upload_cxn(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) struct beiscsi_endpoint *beiscsi_ep);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) int be_cmd_modify_eq_delay(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) struct be_set_eqd *, int num);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) int beiscsi_logout_fw_sess(struct beiscsi_hba *phba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) uint32_t fw_sess_handle);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #endif