Lines Matching +full:d +full:- +full:phy

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
32 * $Id: //depot/users/kenm/FreeBSD-test/sys/cam/scsi/smp_all.c#4 $
92 {SMP_FR_PHY_DOES_NOT_EXIST, "Phy Does Not Exist"},
94 {SMP_FR_PHY_DOES_NOT_SUP_SATA, "Phy Does Not Support SATA"},
95 {SMP_FR_UNKNOWN_PHY_OP, "Unknown Phy Operation"},
96 {SMP_FR_UNKNOWN_PHY_TEST_FUNC, "Unknown Phy Test Function"},
97 {SMP_FR_PHY_TEST_FUNC_INPROG, "Phy Test Function In Progress"},
98 {SMP_FR_PHY_VACANT, "Phy Vacant"},
99 {SMP_FR_UNKNOWN_PHY_EVENT_SRC, "Unknown Phy Event Source"},
101 {SMP_FR_UNKNOWN_PHY_FILTER, "Unknown Phy Filter"},
134 {SMP_FUNC_REPORT_SC_STATUS, "REPORT SELF-CONFIGURATION STATUS"},
138 {SMP_FUNC_REPORT_PHY_ERR_LOG, "REPORT PHY ERROR LOG"},
139 {SMP_FUNC_REPORT_PHY_SATA, "REPORT PHY SATA"},
141 {SMP_FUNC_REPORT_PHY_EVENT, "REPORT PHY EVENT"},
143 {SMP_FUNC_REPORT_PHY_EVENT_LIST, "REPORT PHY EVENT LIST"},
152 {SMP_FUNC_CONFIG_ZONE_PHY_INFO, "CONFIGURE ZONE PHY INFORMATION"},
155 {SMP_FUNC_PHY_CONTROL, "PHY CONTROL"},
156 {SMP_FUNC_PHY_TEST_FUNC, "PHY TEST FUNCTION"},
157 {SMP_FUNC_CONFIG_PHY_EVENT, "CONFIGURE PHY EVENT"}
220 cur_len = line_len - strlen(line_prefix); in smp_command_decode()
223 cur_len = cur_len - 3; in smp_command_decode()
231 sbuf_printf(sb, "%s. ", smp_command_desc(smpio->smp_request[1])); in smp_command_sbuf()
237 first_line_len -= strlen(smp_command_desc(smpio->smp_request[1])) + 2; in smp_command_sbuf()
239 smp_command_decode(smpio->smp_request, smpio->smp_request_len, sb, in smp_command_sbuf()
259 xpt_path_string(smpio->ccb_h.path, path_str, sizeof(path_str)); in smp_error_sbuf()
263 smp_command_sbuf(smpio, sb, path_str, 80 - strlen(path_str), 80); in smp_error_sbuf()
268 smp_error_desc(smpio->smp_response[2]), in smp_error_sbuf()
269 smpio->smp_response[2]); in smp_error_sbuf()
282 sbuf_printf(sb, "Response Length: %d words (%d bytes)\n", in smp_report_general_sbuf()
283 response->response_len, in smp_report_general_sbuf()
284 response->response_len * SMP_WORD_LEN); in smp_report_general_sbuf()
285 sbuf_printf(sb, "Expander Change Count: %d\n", in smp_report_general_sbuf()
286 scsi_2btoul(response->expander_change_count)); in smp_report_general_sbuf()
287 sbuf_printf(sb, "Expander Route Indexes: %d\n", in smp_report_general_sbuf()
288 scsi_2btoul(response->expander_route_indexes)); in smp_report_general_sbuf()
290 smp_yesno(response->long_response & in smp_report_general_sbuf()
292 sbuf_printf(sb, "Number of Phys: %d\n", response->num_phys); in smp_report_general_sbuf()
294 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
297 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
300 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
303 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
306 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
309 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
312 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
315 smp_yesno(response->config_bits0 & in smp_report_general_sbuf()
318 (uintmax_t)scsi_8btou64(response->encl_logical_id)); in smp_report_general_sbuf()
321 * If the response->response_len is 0, then we don't have the in smp_report_general_sbuf()
325 if ((response->response_len == 0) in smp_report_general_sbuf()
326 || (response_len < (sizeof(struct smp_report_general_response) - in smp_report_general_sbuf()
327 sizeof(response->crc)))) in smp_report_general_sbuf()
330 sbuf_printf(sb, "STP Bus Inactivity Time Limit: %d\n", in smp_report_general_sbuf()
331 scsi_2btoul(response->stp_bus_inact_time_limit)); in smp_report_general_sbuf()
332 sbuf_printf(sb, "STP Maximum Connect Time Limit: %d\n", in smp_report_general_sbuf()
333 scsi_2btoul(response->stp_max_conn_time_limit)); in smp_report_general_sbuf()
334 sbuf_printf(sb, "STP SMP I_T Nexus Loss Time: %d\n", in smp_report_general_sbuf()
335 scsi_2btoul(response->stp_smp_it_nexus_loss_time)); in smp_report_general_sbuf()
337 sbuf_printf(sb, "Number of Zone Groups: %d\n", in smp_report_general_sbuf()
338 (response->config_bits1 & SMP_RG_NUM_ZONE_GROUPS_MASK) >> in smp_report_general_sbuf()
341 smp_yesno(response->config_bits1 & SMP_RG_ZONE_LOCKED)); in smp_report_general_sbuf()
343 smp_yesno(response->config_bits1 & SMP_RG_PP_SUPPORTED)); in smp_report_general_sbuf()
345 smp_yesno(response->config_bits1 & SMP_RG_PP_ASSERTED)); in smp_report_general_sbuf()
347 smp_yesno(response->config_bits1 & in smp_report_general_sbuf()
350 smp_yesno(response->config_bits1 & SMP_RG_ZONING_ENABLED)); in smp_report_general_sbuf()
353 smp_yesno(response->config_bits2 & SMP_RG_SAVING)); in smp_report_general_sbuf()
355 smp_yesno(response->config_bits2 & in smp_report_general_sbuf()
357 sbuf_printf(sb, "Saving Zone Phy Information Supported: %s\n", in smp_report_general_sbuf()
358 smp_yesno(response->config_bits2 & in smp_report_general_sbuf()
361 smp_yesno(response->config_bits2 & in smp_report_general_sbuf()
364 smp_yesno(response->config_bits2 & in smp_report_general_sbuf()
367 sbuf_printf(sb, "Maximum Number of Routed SAS Addresses: %d\n", in smp_report_general_sbuf()
368 scsi_2btoul(response->max_num_routed_addrs)); in smp_report_general_sbuf()
371 scsi_8btou64(response->active_zm_address)); in smp_report_general_sbuf()
373 sbuf_printf(sb, "Zone Inactivity Time Limit: %d\n", in smp_report_general_sbuf()
374 scsi_2btoul(response->zone_lock_inact_time_limit)); in smp_report_general_sbuf()
376 sbuf_printf(sb, "First Enclosure Connector Element Index: %d\n", in smp_report_general_sbuf()
377 response->first_encl_conn_el_index); in smp_report_general_sbuf()
379 sbuf_printf(sb, "Number of Enclosure Connector Element Indexes: %d\n", in smp_report_general_sbuf()
380 response->num_encl_conn_el_indexes); in smp_report_general_sbuf()
383 smp_yesno(response->reduced_functionality & in smp_report_general_sbuf()
386 sbuf_printf(sb, "Time to Reduced Functionality: %d\n", in smp_report_general_sbuf()
387 response->time_to_reduced_func); in smp_report_general_sbuf()
388 sbuf_printf(sb, "Initial Time to Reduced Functionality: %d\n", in smp_report_general_sbuf()
389 response->initial_time_to_reduced_func); in smp_report_general_sbuf()
390 sbuf_printf(sb, "Maximum Reduced Functionality Time: %d\n", in smp_report_general_sbuf()
391 response->max_reduced_func_time); in smp_report_general_sbuf()
393 sbuf_printf(sb, "Last Self-Configuration Status Descriptor Index: %d\n", in smp_report_general_sbuf()
394 scsi_2btoul(response->last_sc_stat_desc_index)); in smp_report_general_sbuf()
396 sbuf_printf(sb, "Maximum Number of Storated Self-Configuration " in smp_report_general_sbuf()
397 "Status Descriptors: %d\n", in smp_report_general_sbuf()
398 scsi_2btoul(response->max_sc_stat_descs)); in smp_report_general_sbuf()
400 sbuf_printf(sb, "Last Phy Event List Descriptor Index: %d\n", in smp_report_general_sbuf()
401 scsi_2btoul(response->last_phy_evl_desc_index)); in smp_report_general_sbuf()
403 sbuf_printf(sb, "Maximum Number of Stored Phy Event List " in smp_report_general_sbuf()
404 "Descriptors: %d\n", in smp_report_general_sbuf()
405 scsi_2btoul(response->max_stored_pel_descs)); in smp_report_general_sbuf()
407 sbuf_printf(sb, "STP Reject to Open Limit: %d\n", in smp_report_general_sbuf()
408 scsi_2btoul(response->stp_reject_to_open_limit)); in smp_report_general_sbuf()
424 sbuf_printf(sb, "Expander Change count: %d\n", in smp_report_manuf_info_sbuf()
425 scsi_2btoul(response->expander_change_count)); in smp_report_manuf_info_sbuf()
427 smp_yesno(response->sas_11_format & SMP_RMI_SAS11_FORMAT)); in smp_report_manuf_info_sbuf()
428 cam_strvis(vendor, response->vendor, sizeof(response->vendor), in smp_report_manuf_info_sbuf()
430 cam_strvis(product, response->product, sizeof(response->product), in smp_report_manuf_info_sbuf()
432 cam_strvis(revision, response->revision, sizeof(response->revision), in smp_report_manuf_info_sbuf()
436 if ((response->sas_11_format & SMP_RMI_SAS11_FORMAT) == 0) { in smp_report_manuf_info_sbuf()
451 for (curbyte = (uint8_t *)&response->comp_vendor, line_start= 1, in smp_report_manuf_info_sbuf()
452 line_cursor = 0; curbyte < (uint8_t *)&response->crc; in smp_report_manuf_info_sbuf()
456 (unsigned long)(curbyte - in smp_report_manuf_info_sbuf()
475 cam_strvis(comp_vendor, response->comp_vendor, in smp_report_manuf_info_sbuf()
476 sizeof(response->comp_vendor), sizeof(comp_vendor)); in smp_report_manuf_info_sbuf()
478 sbuf_printf(sb, "Component ID: %#x\n", scsi_2btoul(response->comp_id)); in smp_report_manuf_info_sbuf()
479 sbuf_printf(sb, "Component Revision: %#x\n", response->comp_revision); in smp_report_manuf_info_sbuf()
481 (uintmax_t)scsi_8btou64(response->vendor_specific)); in smp_report_manuf_info_sbuf()
500 request_len - SMP_CRC_LEN, in smp_report_general()
507 request->frame_type = SMP_FRAME_TYPE_REQUEST; in smp_report_general()
508 request->function = SMP_FUNC_REPORT_GENERAL; in smp_report_general()
509 request->response_len = long_response ? SMP_RG_RESPONSE_LEN : 0; in smp_report_general()
510 request->request_len = 0; in smp_report_general()
522 int ignore_zone_group, int phy, uint32_t timeout) in smp_discover() argument
529 request_len - SMP_CRC_LEN, in smp_discover()
535 request->frame_type = SMP_FRAME_TYPE_REQUEST; in smp_discover()
536 request->function = SMP_FUNC_DISCOVER; in smp_discover()
537 request->response_len = long_response ? SMP_DIS_RESPONSE_LEN : 0; in smp_discover()
538 request->request_len = long_response ? SMP_DIS_REQUEST_LEN : 0; in smp_discover()
540 request->ignore_zone_group |= SMP_DIS_IGNORE_ZONE_GROUP; in smp_discover()
541 request->phy = phy; in smp_discover()
560 request_len - SMP_CRC_LEN, in smp_report_manuf_info()
567 request->frame_type = SMP_FRAME_TYPE_REQUEST; in smp_report_manuf_info()
568 request->function = SMP_FUNC_REPORT_MANUF_INFO; in smp_report_manuf_info()
569 request->response_len = long_response ? SMP_RMI_RESPONSE_LEN : 0; in smp_report_manuf_info()
570 request->request_len = long_response ? SMP_RMI_REQUEST_LEN : 0; in smp_report_manuf_info()
574 * Compose a SMP PHY CONTROL request and put it into a CCB. This is
582 uint32_t expected_exp_change_count, int phy, int phy_op, in smp_phy_control() argument
592 request_len - SMP_CRC_LEN, in smp_phy_control()
599 request->frame_type = SMP_FRAME_TYPE_REQUEST; in smp_phy_control()
600 request->function = SMP_FUNC_PHY_CONTROL; in smp_phy_control()
601 request->response_len = long_response ? SMP_PC_RESPONSE_LEN : 0; in smp_phy_control()
602 request->request_len = long_response ? SMP_PC_REQUEST_LEN : 0; in smp_phy_control()
603 scsi_ulto2b(expected_exp_change_count, request->expected_exp_chg_cnt); in smp_phy_control()
604 request->phy = phy; in smp_phy_control()
605 request->phy_operation = phy_op; in smp_phy_control()
608 request->update_pp_timeout |= SMP_PC_UPDATE_PP_TIMEOUT; in smp_phy_control()
610 scsi_u64to8b(attached_device_name, request->attached_device_name); in smp_phy_control()
611 request->prog_min_phys_link_rate = (prog_min_prl << in smp_phy_control()
613 request->prog_max_phys_link_rate = (prog_max_prl << in smp_phy_control()
615 request->config_bits0 = slumber_partial; in smp_phy_control()
616 request->pp_timeout_value = pp_timeout_value; in smp_phy_control()