summaryrefslogtreecommitdiffstats
path: root/sys/dev/hpt27xx
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/hpt27xx')
-rw-r--r--sys/dev/hpt27xx/hpt27xx_config.c2
-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;
-}
OpenPOWER on IntegriCloud