> +/*
> + * Usage of the scsi_cmnd scratchpad.
> + * These fields are locked by the hashed req_lock.
> + */
> +#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr)
> +#define CMD_STATE(Cmnd) ((Cmnd)->SCp.phase)
> +#define CMD_ABTS_STATUS(Cmnd) ((Cmnd)->SCp.Message)
> +#define CMD_LR_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in)
> +#define CMD_TAG(Cmnd) ((Cmnd)->SCp.sent_command)
> +#define CMD_FLAGS(Cmnd) ((Cmnd)->SCp.Status)
Please don't abuse ->SCp for new drivers. Declare your own structure
and set .cmd_size in the host template to it's size, then access it
using scsi_cmd_priv(). That should also avoid the need for the mempool
that the driver currently creates.
> +static int
> +snic_slave_alloc(struct scsi_device *sdev)
> +{
> + u32 qdepth = 0, max_ios = 0;
> + struct snic_tgt *tgt = starget_to_tgt(scsi_target(sdev));
> +
> + if (!tgt || snic_tgt_chkready(tgt))
> + return -ENXIO;
> +
> + max_ios = snic_max_qdepth;
> + max_ios = snic_max_qdepth;
> + qdepth = min_t(u32, max_ios, SNIC_MAX_QUEUE_DEPTH);
> + scsi_change_queue_depth(sdev, qdepth);
Plase set the queue_depth in ->slave_configure like all other drivers.
> + .cmd_per_lun = 3,
why so low?
> +
> +#ifndef PCI_VENDOR_ID_CISCO
> +#define PCI_VENDOR_ID_CISCO 0x1137
> +#endif
Just use the numeric value directly.
> +
> +#define SNIC_OS_TYPE SNIC_OS_LINUX
> +#define snic_cmd_tag(sc) (((struct scsi_cmnd *) sc)->request->tag)
> +
> +extern struct device_attribute *snic_attrs[];
> +
> +static inline struct kmem_cache *
> +snic_cache_create(const char *cache_name, const int sz)
> +{
> + void *cp;
> +
> + cp = kmem_cache_create(cache_name, sz, SNIC_SG_DESC_ALIGN,
> + SLAB_HWCACHE_ALIGN, NULL);
> +
> + return (struct kmem_cache *) cp;
> +}
Please remove all the wrappers in the snic_os.h file and use the Linux
APIs directly.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html