diff options
| -rw-r--r-- | drivers/ieee1394/sbp2.c | 110 |
1 files changed, 33 insertions, 77 deletions
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index eb7106b8fd0a..2c765ca5aa50 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c | |||
| @@ -214,6 +214,7 @@ static u32 global_outstanding_dmas = 0; | |||
| 214 | #endif | 214 | #endif |
| 215 | 215 | ||
| 216 | #define SBP2_ERR(fmt, args...) HPSB_ERR("sbp2: "fmt, ## args) | 216 | #define SBP2_ERR(fmt, args...) HPSB_ERR("sbp2: "fmt, ## args) |
| 217 | #define SBP2_DEBUG_ENTER() SBP2_DEBUG("%s", __FUNCTION__) | ||
| 217 | 218 | ||
| 218 | /* | 219 | /* |
| 219 | * Globals | 220 | * Globals |
| @@ -535,7 +536,7 @@ static struct sbp2_command_info *sbp2util_allocate_command_orb( | |||
| 535 | command->Current_SCpnt = Current_SCpnt; | 536 | command->Current_SCpnt = Current_SCpnt; |
| 536 | list_add_tail(&command->list, &scsi_id->sbp2_command_orb_inuse); | 537 | list_add_tail(&command->list, &scsi_id->sbp2_command_orb_inuse); |
| 537 | } else { | 538 | } else { |
| 538 | SBP2_ERR("sbp2util_allocate_command_orb - No orbs available!"); | 539 | SBP2_ERR("%s: no orbs available", __FUNCTION__); |
| 539 | } | 540 | } |
| 540 | spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); | 541 | spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); |
| 541 | return command; | 542 | return command; |
| @@ -549,7 +550,7 @@ static void sbp2util_free_command_dma(struct sbp2_command_info *command) | |||
| 549 | struct hpsb_host *host; | 550 | struct hpsb_host *host; |
| 550 | 551 | ||
| 551 | if (!scsi_id) { | 552 | if (!scsi_id) { |
| 552 | printk(KERN_ERR "%s: scsi_id == NULL\n", __FUNCTION__); | 553 | SBP2_ERR("%s: scsi_id == NULL", __FUNCTION__); |
| 553 | return; | 554 | return; |
| 554 | } | 555 | } |
| 555 | 556 | ||
| @@ -610,7 +611,7 @@ static int sbp2_probe(struct device *dev) | |||
| 610 | struct unit_directory *ud; | 611 | struct unit_directory *ud; |
| 611 | struct scsi_id_instance_data *scsi_id; | 612 | struct scsi_id_instance_data *scsi_id; |
| 612 | 613 | ||
| 613 | SBP2_DEBUG("sbp2_probe"); | 614 | SBP2_DEBUG_ENTER(); |
| 614 | 615 | ||
| 615 | ud = container_of(dev, struct unit_directory, device); | 616 | ud = container_of(dev, struct unit_directory, device); |
| 616 | 617 | ||
| @@ -635,7 +636,7 @@ static int sbp2_remove(struct device *dev) | |||
| 635 | struct scsi_id_instance_data *scsi_id; | 636 | struct scsi_id_instance_data *scsi_id; |
| 636 | struct scsi_device *sdev; | 637 | struct scsi_device *sdev; |
| 637 | 638 | ||
| 638 | SBP2_DEBUG("sbp2_remove"); | 639 | SBP2_DEBUG_ENTER(); |
| 639 | 640 | ||
| 640 | ud = container_of(dev, struct unit_directory, device); | 641 | ud = container_of(dev, struct unit_directory, device); |
| 641 | scsi_id = ud->device.driver_data; | 642 | scsi_id = ud->device.driver_data; |
| @@ -667,7 +668,7 @@ static int sbp2_update(struct unit_directory *ud) | |||
| 667 | { | 668 | { |
| 668 | struct scsi_id_instance_data *scsi_id = ud->device.driver_data; | 669 | struct scsi_id_instance_data *scsi_id = ud->device.driver_data; |
| 669 | 670 | ||
| 670 | SBP2_DEBUG("sbp2_update"); | 671 | SBP2_DEBUG_ENTER(); |
| 671 | 672 | ||
| 672 | if (sbp2_reconnect_device(scsi_id)) { | 673 | if (sbp2_reconnect_device(scsi_id)) { |
| 673 | 674 | ||
| @@ -715,7 +716,7 @@ static struct scsi_id_instance_data *sbp2_alloc_device(struct unit_directory *ud | |||
| 715 | struct Scsi_Host *scsi_host = NULL; | 716 | struct Scsi_Host *scsi_host = NULL; |
| 716 | struct scsi_id_instance_data *scsi_id = NULL; | 717 | struct scsi_id_instance_data *scsi_id = NULL; |
| 717 | 718 | ||
| 718 | SBP2_DEBUG("sbp2_alloc_device"); | 719 | SBP2_DEBUG_ENTER(); |
| 719 | 720 | ||
| 720 | scsi_id = kzalloc(sizeof(*scsi_id), GFP_KERNEL); | 721 | scsi_id = kzalloc(sizeof(*scsi_id), GFP_KERNEL); |
| 721 | if (!scsi_id) { | 722 | if (!scsi_id) { |
| @@ -826,7 +827,7 @@ static int sbp2_start_device(struct scsi_id_instance_data *scsi_id) | |||
| 826 | struct sbp2scsi_host_info *hi = scsi_id->hi; | 827 | struct sbp2scsi_host_info *hi = scsi_id->hi; |
| 827 | int error; | 828 | int error; |
| 828 | 829 | ||
| 829 | SBP2_DEBUG("sbp2_start_device"); | 830 | SBP2_DEBUG_ENTER(); |
| 830 | 831 | ||
| 831 | /* Login FIFO DMA */ | 832 | /* Login FIFO DMA */ |
| 832 | scsi_id->login_response = | 833 | scsi_id->login_response = |
| @@ -901,7 +902,6 @@ static int sbp2_start_device(struct scsi_id_instance_data *scsi_id) | |||
| 901 | * allows someone else to login instead. One second makes sense. */ | 902 | * allows someone else to login instead. One second makes sense. */ |
| 902 | msleep_interruptible(1000); | 903 | msleep_interruptible(1000); |
| 903 | if (signal_pending(current)) { | 904 | if (signal_pending(current)) { |
| 904 | SBP2_WARN("aborting sbp2_start_device due to event"); | ||
| 905 | sbp2_remove_device(scsi_id); | 905 | sbp2_remove_device(scsi_id); |
| 906 | return -EINTR; | 906 | return -EINTR; |
| 907 | } | 907 | } |
| @@ -954,7 +954,7 @@ static void sbp2_remove_device(struct scsi_id_instance_data *scsi_id) | |||
| 954 | { | 954 | { |
| 955 | struct sbp2scsi_host_info *hi; | 955 | struct sbp2scsi_host_info *hi; |
| 956 | 956 | ||
| 957 | SBP2_DEBUG("sbp2_remove_device"); | 957 | SBP2_DEBUG_ENTER(); |
| 958 | 958 | ||
| 959 | if (!scsi_id) | 959 | if (!scsi_id) |
| 960 | return; | 960 | return; |
| @@ -1086,23 +1086,20 @@ static int sbp2_query_logins(struct scsi_id_instance_data *scsi_id) | |||
| 1086 | int max_logins; | 1086 | int max_logins; |
| 1087 | int active_logins; | 1087 | int active_logins; |
| 1088 | 1088 | ||
| 1089 | SBP2_DEBUG("sbp2_query_logins"); | 1089 | SBP2_DEBUG_ENTER(); |
| 1090 | 1090 | ||
| 1091 | scsi_id->query_logins_orb->reserved1 = 0x0; | 1091 | scsi_id->query_logins_orb->reserved1 = 0x0; |
| 1092 | scsi_id->query_logins_orb->reserved2 = 0x0; | 1092 | scsi_id->query_logins_orb->reserved2 = 0x0; |
| 1093 | 1093 | ||
| 1094 | scsi_id->query_logins_orb->query_response_lo = scsi_id->query_logins_response_dma; | 1094 | scsi_id->query_logins_orb->query_response_lo = scsi_id->query_logins_response_dma; |
| 1095 | scsi_id->query_logins_orb->query_response_hi = ORB_SET_NODE_ID(hi->host->node_id); | 1095 | scsi_id->query_logins_orb->query_response_hi = ORB_SET_NODE_ID(hi->host->node_id); |
| 1096 | SBP2_DEBUG("sbp2_query_logins: query_response_hi/lo initialized"); | ||
| 1097 | 1096 | ||
| 1098 | scsi_id->query_logins_orb->lun_misc = ORB_SET_FUNCTION(SBP2_QUERY_LOGINS_REQUEST); | 1097 | scsi_id->query_logins_orb->lun_misc = ORB_SET_FUNCTION(SBP2_QUERY_LOGINS_REQUEST); |
| 1099 | scsi_id->query_logins_orb->lun_misc |= ORB_SET_NOTIFY(1); | 1098 | scsi_id->query_logins_orb->lun_misc |= ORB_SET_NOTIFY(1); |
| 1100 | scsi_id->query_logins_orb->lun_misc |= ORB_SET_LUN(scsi_id->sbp2_lun); | 1099 | scsi_id->query_logins_orb->lun_misc |= ORB_SET_LUN(scsi_id->sbp2_lun); |
| 1101 | SBP2_DEBUG("sbp2_query_logins: lun_misc initialized"); | ||
| 1102 | 1100 | ||
| 1103 | scsi_id->query_logins_orb->reserved_resp_length = | 1101 | scsi_id->query_logins_orb->reserved_resp_length = |
| 1104 | ORB_SET_QUERY_LOGINS_RESP_LENGTH(sizeof(struct sbp2_query_logins_response)); | 1102 | ORB_SET_QUERY_LOGINS_RESP_LENGTH(sizeof(struct sbp2_query_logins_response)); |
| 1105 | SBP2_DEBUG("sbp2_query_logins: reserved_resp_length initialized"); | ||
| 1106 | 1103 | ||
| 1107 | scsi_id->query_logins_orb->status_fifo_hi = | 1104 | scsi_id->query_logins_orb->status_fifo_hi = |
| 1108 | ORB_SET_STATUS_FIFO_HI(scsi_id->status_fifo_addr, hi->host->node_id); | 1105 | ORB_SET_STATUS_FIFO_HI(scsi_id->status_fifo_addr, hi->host->node_id); |
| @@ -1111,25 +1108,19 @@ static int sbp2_query_logins(struct scsi_id_instance_data *scsi_id) | |||
| 1111 | 1108 | ||
| 1112 | sbp2util_cpu_to_be32_buffer(scsi_id->query_logins_orb, sizeof(struct sbp2_query_logins_orb)); | 1109 | sbp2util_cpu_to_be32_buffer(scsi_id->query_logins_orb, sizeof(struct sbp2_query_logins_orb)); |
| 1113 | 1110 | ||
| 1114 | SBP2_DEBUG("sbp2_query_logins: orb byte-swapped"); | ||
| 1115 | |||
| 1116 | sbp2util_packet_dump(scsi_id->query_logins_orb, sizeof(struct sbp2_query_logins_orb), | 1111 | sbp2util_packet_dump(scsi_id->query_logins_orb, sizeof(struct sbp2_query_logins_orb), |
| 1117 | "sbp2 query logins orb", scsi_id->query_logins_orb_dma); | 1112 | "sbp2 query logins orb", scsi_id->query_logins_orb_dma); |
| 1118 | 1113 | ||
| 1119 | memset(scsi_id->query_logins_response, 0, sizeof(struct sbp2_query_logins_response)); | 1114 | memset(scsi_id->query_logins_response, 0, sizeof(struct sbp2_query_logins_response)); |
| 1120 | memset(&scsi_id->status_block, 0, sizeof(struct sbp2_status_block)); | 1115 | memset(&scsi_id->status_block, 0, sizeof(struct sbp2_status_block)); |
| 1121 | 1116 | ||
| 1122 | SBP2_DEBUG("sbp2_query_logins: query_logins_response/status FIFO memset"); | ||
| 1123 | |||
| 1124 | data[0] = ORB_SET_NODE_ID(hi->host->node_id); | 1117 | data[0] = ORB_SET_NODE_ID(hi->host->node_id); |
| 1125 | data[1] = scsi_id->query_logins_orb_dma; | 1118 | data[1] = scsi_id->query_logins_orb_dma; |
| 1126 | sbp2util_cpu_to_be32_buffer(data, 8); | 1119 | sbp2util_cpu_to_be32_buffer(data, 8); |
| 1127 | 1120 | ||
| 1128 | atomic_set(&scsi_id->sbp2_login_complete, 0); | 1121 | atomic_set(&scsi_id->sbp2_login_complete, 0); |
| 1129 | 1122 | ||
| 1130 | SBP2_DEBUG("sbp2_query_logins: prepared to write"); | ||
| 1131 | hpsb_node_write(scsi_id->ne, scsi_id->sbp2_management_agent_addr, data, 8); | 1123 | hpsb_node_write(scsi_id->ne, scsi_id->sbp2_management_agent_addr, data, 8); |
| 1132 | SBP2_DEBUG("sbp2_query_logins: written"); | ||
| 1133 | 1124 | ||
| 1134 | if (sbp2util_down_timeout(&scsi_id->sbp2_login_complete, 2*HZ)) { | 1125 | if (sbp2util_down_timeout(&scsi_id->sbp2_login_complete, 2*HZ)) { |
| 1135 | SBP2_INFO("Error querying logins to SBP-2 device - timed out"); | 1126 | SBP2_INFO("Error querying logins to SBP-2 device - timed out"); |
| @@ -1178,10 +1169,10 @@ static int sbp2_login_device(struct scsi_id_instance_data *scsi_id) | |||
| 1178 | struct sbp2scsi_host_info *hi = scsi_id->hi; | 1169 | struct sbp2scsi_host_info *hi = scsi_id->hi; |
| 1179 | quadlet_t data[2]; | 1170 | quadlet_t data[2]; |
| 1180 | 1171 | ||
| 1181 | SBP2_DEBUG("sbp2_login_device"); | 1172 | SBP2_DEBUG_ENTER(); |
| 1182 | 1173 | ||
| 1183 | if (!scsi_id->login_orb) { | 1174 | if (!scsi_id->login_orb) { |
| 1184 | SBP2_DEBUG("sbp2_login_device: login_orb not alloc'd!"); | 1175 | SBP2_DEBUG("%s: login_orb not alloc'd!", __FUNCTION__); |
| 1185 | return -EIO; | 1176 | return -EIO; |
| 1186 | } | 1177 | } |
| 1187 | 1178 | ||
| @@ -1195,59 +1186,39 @@ static int sbp2_login_device(struct scsi_id_instance_data *scsi_id) | |||
| 1195 | /* Set-up login ORB, assume no password */ | 1186 | /* Set-up login ORB, assume no password */ |
| 1196 | scsi_id->login_orb->password_hi = 0; | 1187 | scsi_id->login_orb->password_hi = 0; |
| 1197 | scsi_id->login_orb->password_lo = 0; | 1188 | scsi_id->login_orb->password_lo = 0; |
| 1198 | SBP2_DEBUG("sbp2_login_device: password_hi/lo initialized"); | ||
| 1199 | 1189 | ||
| 1200 | scsi_id->login_orb->login_response_lo = scsi_id->login_response_dma; | 1190 | scsi_id->login_orb->login_response_lo = scsi_id->login_response_dma; |
| 1201 | scsi_id->login_orb->login_response_hi = ORB_SET_NODE_ID(hi->host->node_id); | 1191 | scsi_id->login_orb->login_response_hi = ORB_SET_NODE_ID(hi->host->node_id); |
| 1202 | SBP2_DEBUG("sbp2_login_device: login_response_hi/lo initialized"); | ||
| 1203 | 1192 | ||
| 1204 | scsi_id->login_orb->lun_misc = ORB_SET_FUNCTION(SBP2_LOGIN_REQUEST); | 1193 | scsi_id->login_orb->lun_misc = ORB_SET_FUNCTION(SBP2_LOGIN_REQUEST); |
| 1205 | scsi_id->login_orb->lun_misc |= ORB_SET_RECONNECT(0); /* One second reconnect time */ | 1194 | scsi_id->login_orb->lun_misc |= ORB_SET_RECONNECT(0); /* One second reconnect time */ |
| 1206 | scsi_id->login_orb->lun_misc |= ORB_SET_EXCLUSIVE(exclusive_login); /* Exclusive access to device */ | 1195 | scsi_id->login_orb->lun_misc |= ORB_SET_EXCLUSIVE(exclusive_login); /* Exclusive access to device */ |
| 1207 | scsi_id->login_orb->lun_misc |= ORB_SET_NOTIFY(1); /* Notify us of login complete */ | 1196 | scsi_id->login_orb->lun_misc |= ORB_SET_NOTIFY(1); /* Notify us of login complete */ |
| 1208 | scsi_id->login_orb->lun_misc |= ORB_SET_LUN(scsi_id->sbp2_lun); | 1197 | scsi_id->login_orb->lun_misc |= ORB_SET_LUN(scsi_id->sbp2_lun); |
| 1209 | SBP2_DEBUG("sbp2_login_device: lun_misc initialized"); | ||
| 1210 | 1198 | ||
| 1211 | scsi_id->login_orb->passwd_resp_lengths = | 1199 | scsi_id->login_orb->passwd_resp_lengths = |
| 1212 | ORB_SET_LOGIN_RESP_LENGTH(sizeof(struct sbp2_login_response)); | 1200 | ORB_SET_LOGIN_RESP_LENGTH(sizeof(struct sbp2_login_response)); |
| 1213 | SBP2_DEBUG("sbp2_login_device: passwd_resp_lengths initialized"); | ||
| 1214 | 1201 | ||
| 1215 | scsi_id->login_orb->status_fifo_hi = | 1202 | scsi_id->login_orb->status_fifo_hi = |
| 1216 | ORB_SET_STATUS_FIFO_HI(scsi_id->status_fifo_addr, hi->host->node_id); | 1203 | ORB_SET_STATUS_FIFO_HI(scsi_id->status_fifo_addr, hi->host->node_id); |
| 1217 | scsi_id->login_orb->status_fifo_lo = | 1204 | scsi_id->login_orb->status_fifo_lo = |
| 1218 | ORB_SET_STATUS_FIFO_LO(scsi_id->status_fifo_addr); | 1205 | ORB_SET_STATUS_FIFO_LO(scsi_id->status_fifo_addr); |
| 1219 | 1206 | ||
| 1220 | /* | ||
| 1221 | * Byte swap ORB if necessary | ||
| 1222 | */ | ||
| 1223 | sbp2util_cpu_to_be32_buffer(scsi_id->login_orb, sizeof(struct sbp2_login_orb)); | 1207 | sbp2util_cpu_to_be32_buffer(scsi_id->login_orb, sizeof(struct sbp2_login_orb)); |
| 1224 | 1208 | ||
| 1225 | SBP2_DEBUG("sbp2_login_device: orb byte-swapped"); | ||
| 1226 | |||
| 1227 | sbp2util_packet_dump(scsi_id->login_orb, sizeof(struct sbp2_login_orb), | 1209 | sbp2util_packet_dump(scsi_id->login_orb, sizeof(struct sbp2_login_orb), |
| 1228 | "sbp2 login orb", scsi_id->login_orb_dma); | 1210 | "sbp2 login orb", scsi_id->login_orb_dma); |
| 1229 | 1211 | ||
| 1230 | /* | ||
| 1231 | * Initialize login response and status fifo | ||
| 1232 | */ | ||
| 1233 | memset(scsi_id->login_response, 0, sizeof(struct sbp2_login_response)); | 1212 | memset(scsi_id->login_response, 0, sizeof(struct sbp2_login_response)); |
| 1234 | memset(&scsi_id->status_block, 0, sizeof(struct sbp2_status_block)); | 1213 | memset(&scsi_id->status_block, 0, sizeof(struct sbp2_status_block)); |
| 1235 | 1214 | ||
| 1236 | SBP2_DEBUG("sbp2_login_device: login_response/status FIFO memset"); | ||
| 1237 | |||
| 1238 | /* | ||
| 1239 | * Ok, let's write to the target's management agent register | ||
| 1240 | */ | ||
| 1241 | data[0] = ORB_SET_NODE_ID(hi->host->node_id); | 1215 | data[0] = ORB_SET_NODE_ID(hi->host->node_id); |
| 1242 | data[1] = scsi_id->login_orb_dma; | 1216 | data[1] = scsi_id->login_orb_dma; |
| 1243 | sbp2util_cpu_to_be32_buffer(data, 8); | 1217 | sbp2util_cpu_to_be32_buffer(data, 8); |
| 1244 | 1218 | ||
| 1245 | atomic_set(&scsi_id->sbp2_login_complete, 0); | 1219 | atomic_set(&scsi_id->sbp2_login_complete, 0); |
| 1246 | 1220 | ||
| 1247 | SBP2_DEBUG("sbp2_login_device: prepared to write to %08x", | ||
| 1248 | (unsigned int)scsi_id->sbp2_management_agent_addr); | ||
| 1249 | hpsb_node_write(scsi_id->ne, scsi_id->sbp2_management_agent_addr, data, 8); | 1221 | hpsb_node_write(scsi_id->ne, scsi_id->sbp2_management_agent_addr, data, 8); |
| 1250 | SBP2_DEBUG("sbp2_login_device: written"); | ||
| 1251 | 1222 | ||
| 1252 | /* | 1223 | /* |
| 1253 | * Wait for login status (up to 20 seconds)... | 1224 | * Wait for login status (up to 20 seconds)... |
| @@ -1311,7 +1282,7 @@ static int sbp2_logout_device(struct scsi_id_instance_data *scsi_id) | |||
| 1311 | quadlet_t data[2]; | 1282 | quadlet_t data[2]; |
| 1312 | int error; | 1283 | int error; |
| 1313 | 1284 | ||
| 1314 | SBP2_DEBUG("sbp2_logout_device"); | 1285 | SBP2_DEBUG_ENTER(); |
| 1315 | 1286 | ||
| 1316 | /* | 1287 | /* |
| 1317 | * Set-up logout ORB | 1288 | * Set-up logout ORB |
| @@ -1375,7 +1346,7 @@ static int sbp2_reconnect_device(struct scsi_id_instance_data *scsi_id) | |||
| 1375 | quadlet_t data[2]; | 1346 | quadlet_t data[2]; |
| 1376 | int error; | 1347 | int error; |
| 1377 | 1348 | ||
| 1378 | SBP2_DEBUG("sbp2_reconnect_device"); | 1349 | SBP2_DEBUG_ENTER(); |
| 1379 | 1350 | ||
| 1380 | /* | 1351 | /* |
| 1381 | * Set-up reconnect ORB | 1352 | * Set-up reconnect ORB |
| @@ -1466,17 +1437,11 @@ static int sbp2_set_busy_timeout(struct scsi_id_instance_data *scsi_id) | |||
| 1466 | { | 1437 | { |
| 1467 | quadlet_t data; | 1438 | quadlet_t data; |
| 1468 | 1439 | ||
| 1469 | SBP2_DEBUG("sbp2_set_busy_timeout"); | 1440 | SBP2_DEBUG_ENTER(); |
| 1470 | 1441 | ||
| 1471 | /* | ||
| 1472 | * Ok, let's write to the target's busy timeout register | ||
| 1473 | */ | ||
| 1474 | data = cpu_to_be32(SBP2_BUSY_TIMEOUT_VALUE); | 1442 | data = cpu_to_be32(SBP2_BUSY_TIMEOUT_VALUE); |
| 1475 | 1443 | if (hpsb_node_write(scsi_id->ne, SBP2_BUSY_TIMEOUT_ADDRESS, &data, 4)) | |
| 1476 | if (hpsb_node_write(scsi_id->ne, SBP2_BUSY_TIMEOUT_ADDRESS, &data, 4)) { | 1444 | SBP2_ERR("%s error", __FUNCTION__); |
| 1477 | SBP2_ERR("sbp2_set_busy_timeout error"); | ||
| 1478 | } | ||
| 1479 | |||
| 1480 | return 0; | 1445 | return 0; |
| 1481 | } | 1446 | } |
| 1482 | 1447 | ||
| @@ -1495,7 +1460,7 @@ static void sbp2_parse_unit_directory(struct scsi_id_instance_data *scsi_id, | |||
| 1495 | firmware_revision, workarounds; | 1460 | firmware_revision, workarounds; |
| 1496 | int i; | 1461 | int i; |
| 1497 | 1462 | ||
| 1498 | SBP2_DEBUG("sbp2_parse_unit_directory"); | 1463 | SBP2_DEBUG_ENTER(); |
| 1499 | 1464 | ||
| 1500 | management_agent_addr = 0x0; | 1465 | management_agent_addr = 0x0; |
| 1501 | command_set_spec_id = 0x0; | 1466 | command_set_spec_id = 0x0; |
| @@ -1628,7 +1593,7 @@ static int sbp2_max_speed_and_size(struct scsi_id_instance_data *scsi_id) | |||
| 1628 | { | 1593 | { |
| 1629 | struct sbp2scsi_host_info *hi = scsi_id->hi; | 1594 | struct sbp2scsi_host_info *hi = scsi_id->hi; |
| 1630 | 1595 | ||
| 1631 | SBP2_DEBUG("sbp2_max_speed_and_size"); | 1596 | SBP2_DEBUG_ENTER(); |
| 1632 | 1597 | ||
| 1633 | /* Initial setting comes from the hosts speed map */ | 1598 | /* Initial setting comes from the hosts speed map */ |
| 1634 | scsi_id->speed_code = | 1599 | scsi_id->speed_code = |
| @@ -1665,11 +1630,8 @@ static int sbp2_agent_reset(struct scsi_id_instance_data *scsi_id, int wait) | |||
| 1665 | u64 addr; | 1630 | u64 addr; |
| 1666 | int retval; | 1631 | int retval; |
| 1667 | 1632 | ||
| 1668 | SBP2_DEBUG("sbp2_agent_reset"); | 1633 | SBP2_DEBUG_ENTER(); |
| 1669 | 1634 | ||
| 1670 | /* | ||
| 1671 | * Ok, let's write to the target's management agent register | ||
| 1672 | */ | ||
| 1673 | data = ntohl(SBP2_AGENT_RESET_DATA); | 1635 | data = ntohl(SBP2_AGENT_RESET_DATA); |
| 1674 | addr = scsi_id->sbp2_command_block_agent_addr + SBP2_AGENT_RESET_OFFSET; | 1636 | addr = scsi_id->sbp2_command_block_agent_addr + SBP2_AGENT_RESET_OFFSET; |
| 1675 | 1637 | ||
| @@ -2017,11 +1979,7 @@ static int sbp2_send_command(struct scsi_id_instance_data *scsi_id, | |||
| 2017 | unsigned int request_bufflen = SCpnt->request_bufflen; | 1979 | unsigned int request_bufflen = SCpnt->request_bufflen; |
| 2018 | struct sbp2_command_info *command; | 1980 | struct sbp2_command_info *command; |
| 2019 | 1981 | ||
| 2020 | SBP2_DEBUG("sbp2_send_command"); | 1982 | SBP2_DEBUG_ENTER(); |
| 2021 | #if (CONFIG_IEEE1394_SBP2_DEBUG >= 2) || defined(CONFIG_IEEE1394_SBP2_PACKET_DUMP) | ||
| 2022 | printk("[scsi command]\n "); | ||
| 2023 | scsi_print_command(SCpnt); | ||
| 2024 | #endif | ||
| 2025 | SBP2_DEBUG("SCSI transfer size = %x", request_bufflen); | 1983 | SBP2_DEBUG("SCSI transfer size = %x", request_bufflen); |
| 2026 | SBP2_DEBUG("SCSI s/g elements = %x", (unsigned int)SCpnt->use_sg); | 1984 | SBP2_DEBUG("SCSI s/g elements = %x", (unsigned int)SCpnt->use_sg); |
| 2027 | 1985 | ||
| @@ -2061,7 +2019,7 @@ static int sbp2_send_command(struct scsi_id_instance_data *scsi_id, | |||
| 2061 | */ | 2019 | */ |
| 2062 | static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, unchar *sense_data) | 2020 | static unsigned int sbp2_status_to_sense_data(unchar *sbp2_status, unchar *sense_data) |
| 2063 | { | 2021 | { |
| 2064 | SBP2_DEBUG("sbp2_status_to_sense_data"); | 2022 | SBP2_DEBUG_ENTER(); |
| 2065 | 2023 | ||
| 2066 | /* | 2024 | /* |
| 2067 | * Ok, it's pretty ugly... ;-) | 2025 | * Ok, it's pretty ugly... ;-) |
| @@ -2095,7 +2053,7 @@ static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id, | |||
| 2095 | { | 2053 | { |
| 2096 | u8 *scsi_buf = SCpnt->request_buffer; | 2054 | u8 *scsi_buf = SCpnt->request_buffer; |
| 2097 | 2055 | ||
| 2098 | SBP2_DEBUG("sbp2_check_sbp2_response"); | 2056 | SBP2_DEBUG_ENTER(); |
| 2099 | 2057 | ||
| 2100 | if (SCpnt->cmnd[0] == INQUIRY && (SCpnt->cmnd[1] & 3) == 0) { | 2058 | if (SCpnt->cmnd[0] == INQUIRY && (SCpnt->cmnd[1] & 3) == 0) { |
| 2101 | /* | 2059 | /* |
| @@ -2126,7 +2084,7 @@ static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int dest | |||
| 2126 | struct sbp2_command_info *command; | 2084 | struct sbp2_command_info *command; |
| 2127 | unsigned long flags; | 2085 | unsigned long flags; |
| 2128 | 2086 | ||
| 2129 | SBP2_DEBUG("sbp2_handle_status_write"); | 2087 | SBP2_DEBUG_ENTER(); |
| 2130 | 2088 | ||
| 2131 | sbp2util_packet_dump(data, length, "sbp2 status write by device", (u32)addr); | 2089 | sbp2util_packet_dump(data, length, "sbp2 status write by device", (u32)addr); |
| 2132 | 2090 | ||
| @@ -2273,7 +2231,10 @@ static int sbp2scsi_queuecommand(struct scsi_cmnd *SCpnt, | |||
| 2273 | struct sbp2scsi_host_info *hi; | 2231 | struct sbp2scsi_host_info *hi; |
| 2274 | int result = DID_NO_CONNECT << 16; | 2232 | int result = DID_NO_CONNECT << 16; |
| 2275 | 2233 | ||
| 2276 | SBP2_DEBUG("sbp2scsi_queuecommand"); | 2234 | SBP2_DEBUG_ENTER(); |
| 2235 | #if (CONFIG_IEEE1394_SBP2_DEBUG >= 2) || defined(CONFIG_IEEE1394_SBP2_PACKET_DUMP) | ||
| 2236 | scsi_print_command(SCpnt); | ||
| 2237 | #endif | ||
| 2277 | 2238 | ||
| 2278 | if (!sbp2util_node_is_available(scsi_id)) | 2239 | if (!sbp2util_node_is_available(scsi_id)) |
| 2279 | goto done; | 2240 | goto done; |
| @@ -2351,7 +2312,7 @@ static void sbp2scsi_complete_all_commands(struct scsi_id_instance_data *scsi_id | |||
| 2351 | struct sbp2_command_info *command; | 2312 | struct sbp2_command_info *command; |
| 2352 | unsigned long flags; | 2313 | unsigned long flags; |
| 2353 | 2314 | ||
| 2354 | SBP2_DEBUG("sbp2scsi_complete_all_commands"); | 2315 | SBP2_DEBUG_ENTER(); |
| 2355 | 2316 | ||
| 2356 | spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); | 2317 | spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); |
| 2357 | while (!list_empty(&scsi_id->sbp2_command_orb_inuse)) { | 2318 | while (!list_empty(&scsi_id->sbp2_command_orb_inuse)) { |
| @@ -2384,7 +2345,7 @@ static void sbp2scsi_complete_command(struct scsi_id_instance_data *scsi_id, | |||
| 2384 | u32 scsi_status, struct scsi_cmnd *SCpnt, | 2345 | u32 scsi_status, struct scsi_cmnd *SCpnt, |
| 2385 | void (*done)(struct scsi_cmnd *)) | 2346 | void (*done)(struct scsi_cmnd *)) |
| 2386 | { | 2347 | { |
| 2387 | SBP2_DEBUG("sbp2scsi_complete_command"); | 2348 | SBP2_DEBUG_ENTER(); |
| 2388 | 2349 | ||
| 2389 | /* | 2350 | /* |
| 2390 | * Sanity | 2351 | * Sanity |
| @@ -2421,15 +2382,10 @@ static void sbp2scsi_complete_command(struct scsi_id_instance_data *scsi_id, | |||
| 2421 | case SBP2_SCSI_STATUS_CHECK_CONDITION: | 2382 | case SBP2_SCSI_STATUS_CHECK_CONDITION: |
| 2422 | SBP2_DEBUG("SBP2_SCSI_STATUS_CHECK_CONDITION"); | 2383 | SBP2_DEBUG("SBP2_SCSI_STATUS_CHECK_CONDITION"); |
| 2423 | SCpnt->result = CHECK_CONDITION << 1 | DID_OK << 16; | 2384 | SCpnt->result = CHECK_CONDITION << 1 | DID_OK << 16; |
| 2424 | |||
| 2425 | /* | ||
| 2426 | * Debug stuff | ||
| 2427 | */ | ||
| 2428 | #if CONFIG_IEEE1394_SBP2_DEBUG >= 1 | 2385 | #if CONFIG_IEEE1394_SBP2_DEBUG >= 1 |
| 2429 | scsi_print_command(SCpnt); | 2386 | scsi_print_command(SCpnt); |
| 2430 | scsi_print_sense("bh", SCpnt); | 2387 | scsi_print_sense(SBP2_DEVICE_NAME, SCpnt); |
| 2431 | #endif | 2388 | #endif |
| 2432 | |||
| 2433 | break; | 2389 | break; |
| 2434 | 2390 | ||
| 2435 | case SBP2_SCSI_STATUS_SELECTION_TIMEOUT: | 2391 | case SBP2_SCSI_STATUS_SELECTION_TIMEOUT: |
| @@ -2639,7 +2595,7 @@ static int sbp2_module_init(void) | |||
| 2639 | { | 2595 | { |
| 2640 | int ret; | 2596 | int ret; |
| 2641 | 2597 | ||
| 2642 | SBP2_DEBUG("sbp2_module_init"); | 2598 | SBP2_DEBUG_ENTER(); |
| 2643 | 2599 | ||
| 2644 | /* Module load debug option to force one command at a time (serializing I/O) */ | 2600 | /* Module load debug option to force one command at a time (serializing I/O) */ |
| 2645 | if (serialize_io) { | 2601 | if (serialize_io) { |
| @@ -2667,7 +2623,7 @@ static int sbp2_module_init(void) | |||
| 2667 | 2623 | ||
| 2668 | static void __exit sbp2_module_exit(void) | 2624 | static void __exit sbp2_module_exit(void) |
| 2669 | { | 2625 | { |
| 2670 | SBP2_DEBUG("sbp2_module_exit"); | 2626 | SBP2_DEBUG_ENTER(); |
| 2671 | 2627 | ||
| 2672 | hpsb_unregister_protocol(&sbp2_driver); | 2628 | hpsb_unregister_protocol(&sbp2_driver); |
| 2673 | 2629 | ||
