882 #endif
883 } sasaddr;
884 } un;
885
886 uint8_t m_num_phys; /* # of PHYs */
887 mptsas_phy_info_t m_phy_info[MPTSAS_MAX_PHYS];
888 uint8_t m_port_chng; /* initiator port changes */
889 MPI2_CONFIG_PAGE_MAN_0 m_MANU_page0; /* Manufactor page 0 info */
890 MPI2_CONFIG_PAGE_MAN_1 m_MANU_page1; /* Manufactor page 1 info */
891
892 /* FMA Capabilities */
893 int m_fm_capabilities;
894 ddi_taskq_t *m_dr_taskq;
895 int m_mpxio_enable;
896 uint8_t m_done_traverse_dev;
897 uint8_t m_done_traverse_smp;
898 int m_diag_action_in_progress;
899 uint16_t m_dev_handle;
900 uint16_t m_smp_devhdl;
901
902 /*
903 * Event recording
904 */
905 uint8_t m_event_index;
906 uint32_t m_event_number;
907 uint32_t m_event_mask[4];
908 mptsas_event_entry_t m_events[MPTSAS_EVENT_QUEUE_SIZE];
909
910 /*
911 * FW diag Buffer List
912 */
913 mptsas_fw_diagnostic_buffer_t
914 m_fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_COUNT];
915
916 /* GEN3 support */
917 uint8_t m_MPI25;
918
919 /*
920 * Event Replay flag (MUR support)
921 */
1310 int mptsas_send_extended_config_request_msg(mptsas_t *mpt, uint8_t action,
1311 uint8_t extpagetype, uint32_t pageaddress, uint8_t pagenumber,
1312 uint8_t pageversion, uint16_t extpagelength,
1313 uint32_t SGEflagslength, uint64_t SGEaddress);
1314
1315 int mptsas_request_from_pool(mptsas_t *mpt, mptsas_cmd_t **cmd,
1316 struct scsi_pkt **pkt);
1317 void mptsas_return_to_pool(mptsas_t *mpt, mptsas_cmd_t *cmd);
1318 void mptsas_destroy_ioc_event_cmd(mptsas_t *mpt);
1319 void mptsas_start_config_page_access(mptsas_t *mpt, mptsas_cmd_t *cmd);
1320 int mptsas_access_config_page(mptsas_t *mpt, uint8_t action, uint8_t page_type,
1321 uint8_t page_number, uint32_t page_address, int (*callback) (mptsas_t *,
1322 caddr_t, ddi_acc_handle_t, uint16_t, uint32_t, va_list), ...);
1323
1324 int mptsas_ioc_task_management(mptsas_t *mpt, int task_type,
1325 uint16_t dev_handle, int lun, uint8_t *reply, uint32_t reply_size,
1326 int mode);
1327 int mptsas_send_event_ack(mptsas_t *mpt, uint32_t event, uint32_t eventcntx);
1328 void mptsas_send_pending_event_ack(mptsas_t *mpt);
1329 void mptsas_set_throttle(struct mptsas *mpt, mptsas_target_t *ptgt, int what);
1330 int mptsas_restart_ioc(mptsas_t *mpt);
1331 void mptsas_update_driver_data(struct mptsas *mpt);
1332 uint64_t mptsas_get_sata_guid(mptsas_t *mpt, mptsas_target_t *ptgt, int lun);
1333
1334 /*
1335 * init functions
1336 */
1337 int mptsas_ioc_get_facts(mptsas_t *mpt);
1338 int mptsas_ioc_get_port_facts(mptsas_t *mpt, int port);
1339 int mptsas_ioc_enable_port(mptsas_t *mpt);
1340 int mptsas_ioc_enable_event_notification(mptsas_t *mpt);
1341 int mptsas_ioc_init(mptsas_t *mpt);
1342
1343 /*
1344 * configuration pages operation
1345 */
1346 int mptsas_get_sas_device_page0(mptsas_t *mpt, uint32_t page_address,
1347 uint16_t *dev_handle, uint64_t *sas_wwn, uint32_t *dev_info,
1348 uint8_t *physport, uint8_t *phynum, uint16_t *pdevhandle,
1349 uint16_t *slot_num, uint16_t *enclosure, uint16_t *io_flags);
|
882 #endif
883 } sasaddr;
884 } un;
885
886 uint8_t m_num_phys; /* # of PHYs */
887 mptsas_phy_info_t m_phy_info[MPTSAS_MAX_PHYS];
888 uint8_t m_port_chng; /* initiator port changes */
889 MPI2_CONFIG_PAGE_MAN_0 m_MANU_page0; /* Manufactor page 0 info */
890 MPI2_CONFIG_PAGE_MAN_1 m_MANU_page1; /* Manufactor page 1 info */
891
892 /* FMA Capabilities */
893 int m_fm_capabilities;
894 ddi_taskq_t *m_dr_taskq;
895 int m_mpxio_enable;
896 uint8_t m_done_traverse_dev;
897 uint8_t m_done_traverse_smp;
898 int m_diag_action_in_progress;
899 uint16_t m_dev_handle;
900 uint16_t m_smp_devhdl;
901
902 /* In case of reset */
903 ddi_taskq_t *m_reset_taskq;
904
905 /*
906 * Event recording
907 */
908 uint8_t m_event_index;
909 uint32_t m_event_number;
910 uint32_t m_event_mask[4];
911 mptsas_event_entry_t m_events[MPTSAS_EVENT_QUEUE_SIZE];
912
913 /*
914 * FW diag Buffer List
915 */
916 mptsas_fw_diagnostic_buffer_t
917 m_fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_COUNT];
918
919 /* GEN3 support */
920 uint8_t m_MPI25;
921
922 /*
923 * Event Replay flag (MUR support)
924 */
1313 int mptsas_send_extended_config_request_msg(mptsas_t *mpt, uint8_t action,
1314 uint8_t extpagetype, uint32_t pageaddress, uint8_t pagenumber,
1315 uint8_t pageversion, uint16_t extpagelength,
1316 uint32_t SGEflagslength, uint64_t SGEaddress);
1317
1318 int mptsas_request_from_pool(mptsas_t *mpt, mptsas_cmd_t **cmd,
1319 struct scsi_pkt **pkt);
1320 void mptsas_return_to_pool(mptsas_t *mpt, mptsas_cmd_t *cmd);
1321 void mptsas_destroy_ioc_event_cmd(mptsas_t *mpt);
1322 void mptsas_start_config_page_access(mptsas_t *mpt, mptsas_cmd_t *cmd);
1323 int mptsas_access_config_page(mptsas_t *mpt, uint8_t action, uint8_t page_type,
1324 uint8_t page_number, uint32_t page_address, int (*callback) (mptsas_t *,
1325 caddr_t, ddi_acc_handle_t, uint16_t, uint32_t, va_list), ...);
1326
1327 int mptsas_ioc_task_management(mptsas_t *mpt, int task_type,
1328 uint16_t dev_handle, int lun, uint8_t *reply, uint32_t reply_size,
1329 int mode);
1330 int mptsas_send_event_ack(mptsas_t *mpt, uint32_t event, uint32_t eventcntx);
1331 void mptsas_send_pending_event_ack(mptsas_t *mpt);
1332 void mptsas_set_throttle(struct mptsas *mpt, mptsas_target_t *ptgt, int what);
1333 void mptsas_handle_restart_ioc(void *mpt);
1334 int mptsas_restart_ioc(mptsas_t *mpt);
1335 void mptsas_update_driver_data(struct mptsas *mpt);
1336 uint64_t mptsas_get_sata_guid(mptsas_t *mpt, mptsas_target_t *ptgt, int lun);
1337
1338 /*
1339 * init functions
1340 */
1341 int mptsas_ioc_get_facts(mptsas_t *mpt);
1342 int mptsas_ioc_get_port_facts(mptsas_t *mpt, int port);
1343 int mptsas_ioc_enable_port(mptsas_t *mpt);
1344 int mptsas_ioc_enable_event_notification(mptsas_t *mpt);
1345 int mptsas_ioc_init(mptsas_t *mpt);
1346
1347 /*
1348 * configuration pages operation
1349 */
1350 int mptsas_get_sas_device_page0(mptsas_t *mpt, uint32_t page_address,
1351 uint16_t *dev_handle, uint64_t *sas_wwn, uint32_t *dev_info,
1352 uint8_t *physport, uint8_t *phynum, uint16_t *pdevhandle,
1353 uint16_t *slot_num, uint16_t *enclosure, uint16_t *io_flags);
|