svn commit: r265281 - stable/10/sys/dev/virtio/scsi

Bryan Venteicher bryanv at FreeBSD.org
Sat May 3 17:33:30 UTC 2014


Author: bryanv
Date: Sat May  3 17:33:30 2014
New Revision: 265281
URL: http://svnweb.freebsd.org/changeset/base/265281

Log:
  MFC r261147:
      Remove spaces before tabs in the function prototype list
  MFC r261149:
      Read each field of the configuration individually

Modified:
  stable/10/sys/dev/virtio/scsi/virtio_scsi.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/virtio/scsi/virtio_scsi.c
==============================================================================
--- stable/10/sys/dev/virtio/scsi/virtio_scsi.c	Sat May  3 16:38:05 2014	(r265280)
+++ stable/10/sys/dev/virtio/scsi/virtio_scsi.c	Sat May  3 17:33:30 2014	(r265281)
@@ -75,13 +75,15 @@ static int	vtscsi_suspend(device_t);
 static int	vtscsi_resume(device_t);
 
 static void	vtscsi_negotiate_features(struct vtscsi_softc *);
+static void	vtscsi_read_config(struct vtscsi_softc *,
+		    struct virtio_scsi_config *);
 static int	vtscsi_maximum_segments(struct vtscsi_softc *, int);
 static int	vtscsi_alloc_virtqueues(struct vtscsi_softc *);
 static void	vtscsi_write_device_config(struct vtscsi_softc *);
 static int	vtscsi_reinit(struct vtscsi_softc *);
 
 static int	vtscsi_alloc_cam(struct vtscsi_softc *);
-static int 	vtscsi_register_cam(struct vtscsi_softc *);
+static int	vtscsi_register_cam(struct vtscsi_softc *);
 static void	vtscsi_free_cam(struct vtscsi_softc *);
 static void	vtscsi_cam_async(void *, uint32_t, struct cam_path *, void *);
 static int	vtscsi_register_async(struct vtscsi_softc *);
@@ -91,7 +93,7 @@ static void	vtscsi_cam_poll(struct cam_s
 
 static void	vtscsi_cam_scsi_io(struct vtscsi_softc *, struct cam_sim *,
 		    union ccb *);
-static void 	vtscsi_cam_get_tran_settings(struct vtscsi_softc *,
+static void	vtscsi_cam_get_tran_settings(struct vtscsi_softc *,
 		    union ccb *);
 static void	vtscsi_cam_reset_bus(struct vtscsi_softc *, union ccb *);
 static void	vtscsi_cam_reset_dev(struct vtscsi_softc *, union ccb *);
@@ -99,69 +101,69 @@ static void	vtscsi_cam_abort(struct vtsc
 static void	vtscsi_cam_path_inquiry(struct vtscsi_softc *,
 		    struct cam_sim *, union ccb *);
 
-static int 	vtscsi_sg_append_scsi_buf(struct vtscsi_softc *,
+static int	vtscsi_sg_append_scsi_buf(struct vtscsi_softc *,
 		    struct sglist *, struct ccb_scsiio *);
-static int 	vtscsi_fill_scsi_cmd_sglist(struct vtscsi_softc *,
+static int	vtscsi_fill_scsi_cmd_sglist(struct vtscsi_softc *,
 		    struct vtscsi_request *, int *, int *);
-static int 	vtscsi_execute_scsi_cmd(struct vtscsi_softc *,
+static int	vtscsi_execute_scsi_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
-static int 	vtscsi_start_scsi_cmd(struct vtscsi_softc *, union ccb *);
+static int	vtscsi_start_scsi_cmd(struct vtscsi_softc *, union ccb *);
 static void	vtscsi_complete_abort_timedout_scsi_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
-static int 	vtscsi_abort_timedout_scsi_cmd(struct vtscsi_softc *,
+static int	vtscsi_abort_timedout_scsi_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
 static void	vtscsi_timedout_scsi_cmd(void *);
 static cam_status vtscsi_scsi_cmd_cam_status(struct virtio_scsi_cmd_resp *);
 static cam_status vtscsi_complete_scsi_cmd_response(struct vtscsi_softc *,
 		    struct ccb_scsiio *, struct virtio_scsi_cmd_resp *);
-static void 	vtscsi_complete_scsi_cmd(struct vtscsi_softc *,
+static void	vtscsi_complete_scsi_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
 
 static void	vtscsi_poll_ctrl_req(struct vtscsi_softc *,
 		    struct vtscsi_request *);
-static int 	vtscsi_execute_ctrl_req(struct vtscsi_softc *,
+static int	vtscsi_execute_ctrl_req(struct vtscsi_softc *,
 		    struct vtscsi_request *, struct sglist *, int, int, int);
-static void 	vtscsi_complete_abort_task_cmd(struct vtscsi_softc *c,
+static void	vtscsi_complete_abort_task_cmd(struct vtscsi_softc *c,
 		    struct vtscsi_request *);
-static int 	vtscsi_execute_abort_task_cmd(struct vtscsi_softc *,
+static int	vtscsi_execute_abort_task_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
-static int 	vtscsi_execute_reset_dev_cmd(struct vtscsi_softc *,
+static int	vtscsi_execute_reset_dev_cmd(struct vtscsi_softc *,
 		    struct vtscsi_request *);
 
-static void 	vtscsi_get_request_lun(uint8_t [], target_id_t *, lun_id_t *);
+static void	vtscsi_get_request_lun(uint8_t [], target_id_t *, lun_id_t *);
 static void	vtscsi_set_request_lun(struct ccb_hdr *, uint8_t []);
 static void	vtscsi_init_scsi_cmd_req(struct ccb_scsiio *,
 		    struct virtio_scsi_cmd_req *);
 static void	vtscsi_init_ctrl_tmf_req(struct ccb_hdr *, uint32_t,
 		    uintptr_t, struct virtio_scsi_ctrl_tmf_req *);
 
-static void 	vtscsi_freeze_simq(struct vtscsi_softc *, int);
+static void	vtscsi_freeze_simq(struct vtscsi_softc *, int);
 static int	vtscsi_thaw_simq(struct vtscsi_softc *, int);
 
-static void 	vtscsi_announce(struct vtscsi_softc *, uint32_t, target_id_t,
+static void	vtscsi_announce(struct vtscsi_softc *, uint32_t, target_id_t,
 		    lun_id_t);
-static void 	vtscsi_execute_rescan(struct vtscsi_softc *, target_id_t,
+static void	vtscsi_execute_rescan(struct vtscsi_softc *, target_id_t,
 		    lun_id_t);
-static void 	vtscsi_execute_rescan_bus(struct vtscsi_softc *);
+static void	vtscsi_execute_rescan_bus(struct vtscsi_softc *);
 
-static void 	vtscsi_handle_event(struct vtscsi_softc *,
+static void	vtscsi_handle_event(struct vtscsi_softc *,
 		    struct virtio_scsi_event *);
-static int 	vtscsi_enqueue_event_buf(struct vtscsi_softc *,
+static int	vtscsi_enqueue_event_buf(struct vtscsi_softc *,
 		    struct virtio_scsi_event *);
 static int	vtscsi_init_event_vq(struct vtscsi_softc *);
-static void 	vtscsi_reinit_event_vq(struct vtscsi_softc *);
-static void 	vtscsi_drain_event_vq(struct vtscsi_softc *);
+static void	vtscsi_reinit_event_vq(struct vtscsi_softc *);
+static void	vtscsi_drain_event_vq(struct vtscsi_softc *);
 
-static void 	vtscsi_complete_vqs_locked(struct vtscsi_softc *);
-static void 	vtscsi_complete_vqs(struct vtscsi_softc *);
-static void 	vtscsi_drain_vqs(struct vtscsi_softc *);
-static void 	vtscsi_cancel_request(struct vtscsi_softc *,
+static void	vtscsi_complete_vqs_locked(struct vtscsi_softc *);
+static void	vtscsi_complete_vqs(struct vtscsi_softc *);
+static void	vtscsi_drain_vqs(struct vtscsi_softc *);
+static void	vtscsi_cancel_request(struct vtscsi_softc *,
 		    struct vtscsi_request *);
 static void	vtscsi_drain_vq(struct vtscsi_softc *, struct virtqueue *);
 static void	vtscsi_stop(struct vtscsi_softc *);
 static int	vtscsi_reset_bus(struct vtscsi_softc *);
 
-static void 	vtscsi_init_request(struct vtscsi_softc *,
+static void	vtscsi_init_request(struct vtscsi_softc *,
 		    struct vtscsi_request *);
 static int	vtscsi_alloc_requests(struct vtscsi_softc *);
 static void	vtscsi_free_requests(struct vtscsi_softc *);
@@ -170,18 +172,18 @@ static void	vtscsi_enqueue_request(struc
 static struct vtscsi_request * vtscsi_dequeue_request(struct vtscsi_softc *);
 
 static void	vtscsi_complete_request(struct vtscsi_request *);
-static void 	vtscsi_complete_vq(struct vtscsi_softc *, struct virtqueue *);
+static void	vtscsi_complete_vq(struct vtscsi_softc *, struct virtqueue *);
 
 static void	vtscsi_control_vq_intr(void *);
 static void	vtscsi_event_vq_intr(void *);
 static void	vtscsi_request_vq_intr(void *);
-static void 	vtscsi_disable_vqs_intr(struct vtscsi_softc *);
-static void 	vtscsi_enable_vqs_intr(struct vtscsi_softc *);
+static void	vtscsi_disable_vqs_intr(struct vtscsi_softc *);
+static void	vtscsi_enable_vqs_intr(struct vtscsi_softc *);
 
-static void 	vtscsi_get_tunables(struct vtscsi_softc *);
-static void 	vtscsi_add_sysctl(struct vtscsi_softc *);
+static void	vtscsi_get_tunables(struct vtscsi_softc *);
+static void	vtscsi_add_sysctl(struct vtscsi_softc *);
 
-static void 	vtscsi_printf_req(struct vtscsi_request *, const char *,
+static void	vtscsi_printf_req(struct vtscsi_request *, const char *,
 		    const char *, ...);
 
 /* Global tunables. */
@@ -287,8 +289,7 @@ vtscsi_attach(device_t dev)
 	if (virtio_with_feature(dev, VIRTIO_SCSI_F_HOTPLUG))
 		sc->vtscsi_flags |= VTSCSI_FLAG_HOTPLUG;
 
-	virtio_read_device_config(dev, 0, &scsicfg,
-	    sizeof(struct virtio_scsi_config));
+	vtscsi_read_config(sc, &scsicfg);
 
 	sc->vtscsi_max_channel = scsicfg.max_channel;
 	sc->vtscsi_max_target = scsicfg.max_target;
@@ -408,6 +409,35 @@ vtscsi_negotiate_features(struct vtscsi_
 	sc->vtscsi_features = features;
 }
 
+#define VTSCSI_GET_CONFIG(_dev, _field, _cfg)			\
+	virtio_read_device_config(_dev,				\
+	    offsetof(struct virtio_scsi_config, _field),	\
+	    &(_cfg)->_field, sizeof((_cfg)->_field))		\
+
+static void
+vtscsi_read_config(struct vtscsi_softc *sc,
+    struct virtio_scsi_config *scsicfg)
+{
+	device_t dev;
+
+	dev = sc->vtscsi_dev;
+
+	bzero(scsicfg, sizeof(struct virtio_scsi_config));
+
+	VTSCSI_GET_CONFIG(dev, num_queues, scsicfg);
+	VTSCSI_GET_CONFIG(dev, seg_max, scsicfg);
+	VTSCSI_GET_CONFIG(dev, max_sectors, scsicfg);
+	VTSCSI_GET_CONFIG(dev, cmd_per_lun, scsicfg);
+	VTSCSI_GET_CONFIG(dev, event_info_size, scsicfg);
+	VTSCSI_GET_CONFIG(dev, sense_size, scsicfg);
+	VTSCSI_GET_CONFIG(dev, cdb_size, scsicfg);
+	VTSCSI_GET_CONFIG(dev, max_channel, scsicfg);
+	VTSCSI_GET_CONFIG(dev, max_target, scsicfg);
+	VTSCSI_GET_CONFIG(dev, max_lun, scsicfg);
+}
+
+#undef VTSCSI_GET_CONFIG
+
 static int
 vtscsi_maximum_segments(struct vtscsi_softc *sc, int seg_max)
 {


More information about the svn-src-all mailing list