diff options
Diffstat (limited to 'sys/dev/hpt27xx')
-rw-r--r-- | sys/dev/hpt27xx/hpt27xx_config.c | 2 | ||||
-rw-r--r-- | sys/dev/hpt27xx/hpt27xx_os_bsd.c (renamed from sys/dev/hpt27xx/os_bsd.c) | 0 | ||||
-rw-r--r-- | sys/dev/hpt27xx/hpt27xx_osm_bsd.c (renamed from sys/dev/hpt27xx/osm_bsd.c) | 45 |
3 files changed, 14 insertions, 33 deletions
diff --git a/sys/dev/hpt27xx/hpt27xx_config.c b/sys/dev/hpt27xx/hpt27xx_config.c index 5203f4a..c37862b 100644 --- a/sys/dev/hpt27xx/hpt27xx_config.c +++ b/sys/dev/hpt27xx/hpt27xx_config.c @@ -60,7 +60,7 @@ int init_config(void) const char driver_name[] = "hpt27xx"; const char driver_name_long[] = "RocketRAID 27xx controller driver"; -const char driver_ver[] = "v1.0"; +const char driver_ver[] = "v1.1"; int osm_max_targets = 0xff; diff --git a/sys/dev/hpt27xx/os_bsd.c b/sys/dev/hpt27xx/hpt27xx_os_bsd.c index 12f832b..12f832b 100644 --- a/sys/dev/hpt27xx/os_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_os_bsd.c diff --git a/sys/dev/hpt27xx/osm_bsd.c b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c index 59707ca..636906d 100644 --- a/sys/dev/hpt27xx/osm_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c @@ -944,7 +944,6 @@ static void hpt_stop_tasks(PVBUS_EXT vbus_ext) static d_open_t hpt_open; static d_close_t hpt_close; static d_ioctl_t hpt_ioctl; -static void hpt_bus_scan_cb(struct cam_periph *periph, union ccb *ccb); static int hpt_rescan_bus(void); static struct cdevsw hpt_cdevsw = { @@ -974,7 +973,7 @@ static struct intr_config_hook hpt_ich; */ static void hpt_final_init(void *dummy) { - int i; + int i,unit_number=0; PVBUS_EXT vbus_ext; PVBUS vbus; PHBA hba; @@ -1058,12 +1057,12 @@ static void hpt_final_init(void *dummy) #if __FreeBSD_version > 700025 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name, - vbus_ext, 0, &Giant, os_max_queue_comm, /*tagged*/8, devq); + vbus_ext, unit_number, &Giant, os_max_queue_comm, /*tagged*/8, devq); #else vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name, - vbus_ext, 0, os_max_queue_comm, /*tagged*/8, devq); + vbus_ext, unit_number, os_max_queue_comm, /*tagged*/8, devq); #endif - + unit_number++; if (!vbus_ext->sim) { os_printk("cam_sim_alloc failed"); cam_simq_free(devq); @@ -1337,44 +1336,26 @@ invalid: static int hpt_rescan_bus(void) { - struct cam_path *path; union ccb *ccb; PVBUS vbus; PVBUS_EXT vbus_ext; -#if (__FreeBSD_version >= 500000) mtx_lock(&Giant); -#endif ldm_for_each_vbus(vbus, vbus_ext) { - if (xpt_create_path(&path, NULL, cam_sim_path(vbus_ext->sim), + if ((ccb = xpt_alloc_ccb()) == NULL) + { + return(ENOMEM); + } + if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) + { + xpt_free_ccb(ccb); return(EIO); - if ((ccb = malloc(sizeof(union ccb), M_TEMP, M_WAITOK)) == NULL) - return(ENOMEM); - bzero(ccb, sizeof(union ccb)); - xpt_setup_ccb(&ccb->ccb_h, path, 5); - ccb->ccb_h.func_code = XPT_SCAN_BUS; - ccb->ccb_h.cbfcnp = hpt_bus_scan_cb; - ccb->crcn.flags = CAM_FLAG_NONE; - xpt_action(ccb); + } + xpt_rescan(ccb); } - -#if (__FreeBSD_version >= 500000) mtx_unlock(&Giant); -#endif - return(0); } -static void hpt_bus_scan_cb(struct cam_periph *periph, union ccb *ccb) -{ - if (ccb->ccb_h.status != CAM_REQ_CMP) - KdPrint(("cam_scan_callback: failure status = %x",ccb->ccb_h.status)); - else - KdPrint(("Scan bus successfully!")); - - xpt_free_path(ccb->ccb_h.path); - free(ccb, M_TEMP); - return; -} |