• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/ocs_fc/

Lines Matching defs:ocs

34 #include "ocs.h"
58 ocs_firmware_write(ocs_t *ocs, const uint8_t *buf, size_t buf_len, uint8_t *change_status);
64 struct ocs_softc *ocs = cdev->si_drv1;
66 device_printf(ocs->dev, "%s\n", __func__);
75 struct ocs_softc *ocs = cdev->si_drv1;
77 device_printf(ocs->dev, "%s\n", __func__);
85 struct ocs_softc *ocs = arg;
88 mtx_lock(&ocs->dbg_lock);
90 mtx_unlock(&ocs->dbg_lock);
98 ocs_process_sli_config (ocs_t *ocs, ocs_ioctl_elxu_mbox_t *mcmd, ocs_dma_t *dma){
110 if (ocs_dma_alloc(ocs, dma, mcmd->out_bytes, 4096)) {
111 device_printf(ocs->dev, "%s: COMMON_READ_OBJECT - %lld allocation failed\n",
129 if (ocs_dma_alloc(ocs, dma, wrobj->desired_write_length, 4096)) {
130 device_printf(ocs->dev, "%s: COMMON_WRITE_OBJECT - %d allocation failed\n",
151 if (ocs_dma_alloc(ocs, dma, mcmd->out_bytes, 4096)) {
152 device_printf(ocs->dev, "%s: COMMON_READ_OBJECT_LIST - %lld allocation failed\n",
168 device_printf(ocs->dev, "%s: in=%p (%lld) out=%p (%lld)\n", __func__,
171 device_printf(ocs->dev, "%s: unknown (opc=%#x)\n", __func__,
178 if (ocs_dma_alloc(ocs, dma, max_bytes, 4096)) {
179 device_printf(ocs->dev, "%s: non-embedded - %u allocation failed\n",
195 ocs_process_mbx_ioctl(ocs_t *ocs, ocs_ioctl_elxu_mbox_t *mcmd)
201 device_printf(ocs->dev, "%s: malformed command m=%08x s=%08x\n",
208 if (ENXIO == ocs_process_sli_config(ocs, mcmd, &dma))
218 device_printf(ocs->dev, "command %d\n",((sli4_mbox_command_header_t *)mcmd->payload)->command);
219 device_printf(ocs->dev, "%s, command not support\n", __func__);
241 mtx_lock(&ocs->dbg_lock);
242 if (ocs_hw_command(&ocs->hw, mcmd->payload, OCS_CMD_NOWAIT,
243 __ocs_ioctl_mbox_cb, ocs)) {
244 device_printf(ocs->dev, "%s: command- %x failed\n", __func__,
247 msleep(ocs, &ocs->dbg_lock, 0, "ocsmbx", 0);
248 mtx_unlock(&ocs->dbg_lock);
256 ocs_dma_free(ocs, &dma);
267 * @param ocs pointer to ocs structure
274 ocs_process_ecd_helper (ocs_t *ocs, ocs_ioctl_ecd_helper_t *req)
290 device_printf(ocs->dev, "Error: bar %d out of range\n", req->bar);
293 if (ocs->reg[req->bar].res == NULL) {
294 device_printf(ocs->dev, "Error: bar %d not defined\n", req->bar);
304 v8 = ocs_config_read8(ocs, req->offset);
308 v16 = ocs_config_read16(ocs, req->offset);
312 v32 = ocs_config_read32(ocs, req->offset);
316 ocs_config_write8(ocs, req->offset, req->data);
319 ocs_config_write16(ocs, req->offset, req->data);
322 ocs_config_write32(ocs, req->offset, req->data);
325 req->data = ocs_reg_read8(ocs, req->bar, req->offset);
328 req->data = ocs_reg_read16(ocs, req->bar, req->offset);
331 req->data = ocs_reg_read32(ocs, req->bar, req->offset);
334 ocs_reg_write8(ocs, req->bar, req->offset, req->data);
337 ocs_reg_write16(ocs, req->bar, req->offset, req->data);
340 ocs_reg_write32(ocs, req->bar, req->offset, req->data);
343 device_printf(ocs->dev, "Invalid helper command=%d\n", req->cmd);
354 struct ocs_softc *ocs = cdev->si_drv1;
355 device_t dev = ocs->dev;
361 status = ocs_process_mbx_ioctl(ocs, mcmd);
367 status = ocs_process_ecd_helper(ocs, req);
376 domain = ocs_domain_get_instance(ocs, req->domain_index);
378 device_printf(ocs->dev, "domain [%d] nod found\n",
388 rc = ocs_sport_vport_del(ocs, domain, req->wwpn, req->wwnn);
400 if (ocs_textbuf_alloc(ocs, &textbuf, req->user_buffer_len)) {
401 device_printf(ocs->dev, "Error: ocs_textbuf_alloc failed\n");
416 if (ocs_textbuf_initialized(&ocs->ddump_saved)) {
417 ptbuf = &ocs->ddump_saved;
420 if (ocs_textbuf_alloc(ocs, &textbuf, req->user_buffer_len)) {
421 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
444 if (ocs_ddump(ocs, &textbuf, flags, req->args.q_entries) != 0) {
454 ocs_log_test(ocs, "ocs_ddump failed\n");
473 ocs_log_test(ocs, "Error: (%d) ocs_copy_to_user failed\n", __LINE__);
481 ocs_textbuf_free(ocs, &textbuf);
487 ocs_clear_saved_ddump(ocs);
490 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
500 req->pci_vendor = ocs->pci_vendor;
501 req->pci_device = ocs->pci_device;
502 ocs_strncpy(req->businfo, ocs->businfo, sizeof(req->businfo));
504 req->sli_intf = ocs_config_read32(ocs, SLI4_INTF_REG);
506 ocs_strncpy(req->fw_rev, ocs->fwrev, sizeof(req->fw_rev));
507 if (ocs->domain && ocs->domain->sport) {
508 *((uint64_t*)req->hw_addr.fc.wwnn) = ocs_htobe64(ocs->domain->sport->wwnn);
509 *((uint64_t*)req->hw_addr.fc.wwpn) = ocs_htobe64(ocs->domain->sport->wwpn);
511 ocs_strncpy(req->serialnum, ocs->serialnum, sizeof(req->serialnum));
520 if (ocs_textbuf_alloc(ocs, &textbuf, req->user_buffer_len)) {
521 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
525 ocs_mgmt_get_list(ocs, &textbuf);
531 ocs_log_test(ocs, "Error: (%d) ocs_copy_to_user failed\n", __LINE__);
536 ocs_textbuf_free(ocs, &textbuf);
549 if (ocs_textbuf_alloc(ocs, &textbuf, req->user_buffer_len)) {
550 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
554 ocs_mgmt_get_all(ocs, &textbuf);
560 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
566 ocs_textbuf_free(ocs, &textbuf);
578 ocs_log_test(ocs, "ocs_copy_from_user failed\n");
579 ocs_ioctl_free(ocs, req, sizeof(ocs_ioctl_cmd_get_t));
584 if (ocs_textbuf_alloc(ocs, &textbuf, req->value_length)) {
585 ocs_log_err(ocs, "Error: ocs_textbuf_alloc failed\n");
589 ocs_mgmt_get(ocs, name, &textbuf);
595 ocs_log_test(ocs, "Error: (%d) ocs_copy_to_user failed\n", __LINE__);
600 ocs_textbuf_free(ocs, &textbuf);
612 ocs_log_test(ocs, "Error: copy from user failed\n");
613 ocs_ioctl_free(ocs, req, sizeof(*req));
619 ocs_log_test(ocs, "Error: copy from user failed\n");
620 ocs_ioctl_free(ocs, req, sizeof(*req));
624 req->result = ocs_mgmt_set(ocs, req->name, req->value);
634 ocs_log_test(ocs, "Error: copy req.name from user failed\n");
635 ocs_ioctl_free(ocs, req, sizeof(*req));
639 req->result = ocs_mgmt_exec(ocs, action_name, req->arg_in, req->arg_in_length,
646 ocs_log_test(ocs, "Error: unknown cmd %#lx\n", cmd);
667 ocs_firmware_write(ocs_t *ocs, const uint8_t *buf, size_t buf_len,
683 if (ocs_dma_alloc(ocs, &dma, FW_WRITE_BUFSIZE, 4096)) {
684 ocs_log_err(ocs, "ocs_firmware_write: malloc failed\n");
701 ocs_hw_firmware_write(&ocs->hw, &dma, xfer_size, offset,
722 ocs_dma_free(ocs, &dma);
732 ocs_t *ocs = (ocs_t *)arg1;
742 device_printf(ocs->dev, "Unable to get Firmware. "
753 device_printf(ocs->dev,
760 if (!strncmp(ocs->fw_version, fw_image->revision,
762 device_printf(ocs->dev, "No update req. "
768 device_printf(ocs->dev, "Upgrading Firmware from %s to %s \n",
769 ocs->fw_version, fw_image->revision);
771 rc = ocs_firmware_write(ocs, fw->data, fw->datasize, &fw_change_status);
773 ocs_log_err(ocs, "Firmware update failed with status = %d\n", rc);
775 ocs_log_info(ocs, "Firmware updated successfully\n");
778 device_printf(ocs->dev,
782 device_printf(ocs->dev,
788 device_printf(ocs->dev,
793 ocs_log_warn(ocs,
812 ocs_t *ocs = oidp->oid_arg1;
816 ocs_xport_t *xport = ocs->xport;
824 wwnn = ocs_hw_get_ptr(&ocs->hw, OCS_HW_WWN_NODE);
844 return (set_req_wwnn(ocs, NULL, new));
851 ocs_t *ocs = oidp->oid_arg1;
855 ocs_xport_t *xport = ocs->xport;
862 wwpn = ocs_hw_get_ptr(&ocs->hw, OCS_HW_WWN_PORT);
881 return (set_req_wwpn(ocs, NULL, new));
887 ocs_t *ocs = oidp->oid_arg1;
890 ocs_hw_get(&ocs->hw, OCS_HW_TOPOLOGY, &value);
898 ocs_t *ocs = oidp->oid_arg1;
901 ocs_hw_get(&ocs->hw, OCS_HW_LINK_SPEED, &value);
910 ocs_t *ocs = oidp->oid_arg1;
915 ocs_hw_get(&ocs->hw, OCS_HW_CONFIG_TOPOLOGY, &old_value);
932 rc = set_configured_topology(ocs, NULL, buf);
940 ocs_t *ocs = oidp->oid_arg1;
945 ocs_hw_get(&ocs->hw, OCS_HW_LINK_CONFIG_SPEED, &old_value);
962 rc = set_configured_speed(ocs, NULL,buf);
969 ocs_t *ocs = oidp->oid_arg1;
973 if (ocs->domain && ocs->domain->attached) {
975 ocs->domain->sport->fc_id);
988 ocs_t *ocs = (ocs_t *)arg1;
990 ocs_xport_status(ocs->xport, OCS_XPORT_CONFIG_PORT_STATUS, &old);
1009 ocs_log_debug(ocs, "Setting port to %s\n", new);
1010 rc = ocs_xport_control(ocs->xport, OCS_XPORT_PORT_OFFLINE);
1012 ocs_log_err(ocs, "Setting port to offline failed\n");
1018 ocs_log_debug(ocs, "Setting port to %s\n", new);
1019 rc = ocs_xport_control(ocs->xport, OCS_XPORT_PORT_ONLINE);
1021 ocs_log_err(ocs, "Setting port to online failed\n");
1024 ocs_log_err(ocs, "Unsupported link state %s\n", new);
1061 * @param ocs pointer to ocs
1065 ocs_sysctl_init(ocs_t *ocs)
1067 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(ocs->dev);
1068 struct sysctl_oid *tree = device_get_sysctl_tree(ocs->dev);
1077 pci_get_devid(ocs->dev), "Device ID");
1079 memset(ocs->modeldesc, 0, sizeof(ocs->modeldesc));
1080 if (0 == pci_get_vpd_ident(ocs->dev, &str)) {
1081 snprintf(ocs->modeldesc, sizeof(ocs->modeldesc), "%s", str);
1085 ocs->modeldesc,
1088 memset(ocs->serialnum, 0, sizeof(ocs->serialnum));
1089 if (0 == pci_get_vpd_readonly(ocs->dev, "SN", &str)) {
1090 snprintf(ocs->serialnum, sizeof(ocs->serialnum), "%s", str);
1094 ocs->serialnum,
1097 ocs_hw_get(&ocs->hw, OCS_HW_SLI_REV, &rev);
1098 ocs_hw_get(&ocs->hw, OCS_HW_IF_TYPE, &if_type);
1099 ocs_hw_get(&ocs->hw, OCS_HW_SLI_FAMILY, &family);
1101 memset(ocs->fwrev, 0, sizeof(ocs->fwrev));
1102 snprintf(ocs->fwrev, sizeof(ocs->fwrev), "%s, sli-%d:%d:%x",
1103 (char *)ocs_hw_get_ptr(&ocs->hw, OCS_HW_FW_REV),
1107 ocs->fwrev,
1110 memset(ocs->sli_intf, 0, sizeof(ocs->sli_intf));
1111 snprintf(ocs->sli_intf, sizeof(ocs->sli_intf), "%08x",
1112 ocs_config_read32(ocs, SLI4_INTF_REG));
1115 ocs->sli_intf,
1119 CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, (void *)ocs, 0,
1124 ocs, 0, ocs_sysctl_wwnn, "A",
1129 ocs, 0, ocs_sysctl_wwpn, "A",
1134 ocs, 0, ocs_sysctl_current_topology, "IU",
1139 ocs, 0, ocs_sysctl_current_speed, "IU",
1144 ocs, 0, ocs_sysctl_config_topology, "IU",
1149 ocs, 0, ocs_sysctl_config_speed, "IU",
1154 ocs->businfo,
1159 ocs, 0, ocs_sysctl_fcid, "A", "Port FC ID");
1163 ocs, 0, ocs_sysctl_port_state, "A", "configured port state");
1165 for (i = 0; i < ocs->num_vports; i++) {
1166 fcp = FCPORT(ocs, i+1);
1191 * kenv hint.ocs.U.P=V
1198 struct ocs_softc *ocs = os;
1205 if (0 == (error = resource_int_value(device_get_name(ocs->dev), device_get_unit(ocs->dev),
1207 device_printf(ocs->dev, "setting %s to %010x\n", resname, ocs_debug_mask);
1211 unit = device_get_unit(ocs->dev);
1212 ocs->cdev = make_dev(&ocs_cdevsw, unit, UID_ROOT, GID_OPERATOR, 0640,
1213 "ocs%d", unit);
1214 if (ocs->cdev) {
1215 ocs->cdev->si_drv1 = ocs;
1219 ocs_sysctl_init(ocs);
1220 mtx_init(&ocs->dbg_lock, "ocs_dbg_lock", NULL, MTX_DEF);
1229 struct ocs_softc *ocs = os;
1231 mtx_destroy(&ocs->dbg_lock);
1233 if (ocs->cdev) {
1234 ocs->cdev->si_drv1 = NULL;
1235 destroy_dev(ocs->cdev);