[SCSI] sym53c8xx: Remove tag_ctrl module parameter

With sysfs making these options tunable at runtime, there's no
justification for keeping this horrendously complex specification
string around.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
Matthew Wilcox 2007-10-05 15:55:08 -04:00 committed by James Bottomley
parent 8637baa360
commit a44131b35e
3 changed files with 8 additions and 80 deletions

View file

@ -449,25 +449,14 @@ options as above.
cmd_per_lun=#tags (#tags > 1) tagged command queuing enabled cmd_per_lun=#tags (#tags > 1) tagged command queuing enabled
#tags will be truncated to the max queued commands configuration parameter. #tags will be truncated to the max queued commands configuration parameter.
10.2.2 Detailed control of tagged commands 10.2.2 Burst max
This option allows you to specify a command queue depth for each device
that supports tagged command queueing.
Example:
tag_ctrl=10/t2t3q16-t5q24/t1u2q32
will set devices queue depth as follow:
- controller #0 target #2 and target #3 -> 16 commands,
- controller #0 target #5 -> 24 commands,
- controller #1 target #1 logical unit #2 -> 32 commands,
- all other logical units (all targets, all controllers) -> 10 commands.
10.2.3 Burst max
burst=0 burst disabled burst=0 burst disabled
burst=255 get burst length from initial IO register settings. burst=255 get burst length from initial IO register settings.
burst=#x burst enabled (1<<#x burst transfers max) burst=#x burst enabled (1<<#x burst transfers max)
#x is an integer value which is log base 2 of the burst transfers max. #x is an integer value which is log base 2 of the burst transfers max.
By default the driver uses the maximum value supported by the chip. By default the driver uses the maximum value supported by the chip.
10.2.4 LED support 10.2.3 LED support
led=1 enable LED support led=1 enable LED support
led=0 disable LED support led=0 disable LED support
Do not enable LED support if your scsi board does not use SDMS BIOS. Do not enable LED support if your scsi board does not use SDMS BIOS.
@ -560,9 +549,9 @@ Previously, the sym2 driver accepted arguments of the form
sym53c8xx=tags:4,sync:10,debug:0x200 sym53c8xx=tags:4,sync:10,debug:0x200
As a result of the new module parameters, this is no longer available. As a result of the new module parameters, this is no longer available.
Most of the options have remained the same, but tags has split into Most of the options have remained the same, but tags has become
cmd_per_lun and tag_ctrl for its two different purposes. The sample above cmd_per_lun to reflect its different purposes. The sample above would
would be specified as: be specified as:
modprobe sym53c8xx cmd_per_lun=4 sync=10 debug=0x200 modprobe sym53c8xx cmd_per_lun=4 sync=10 debug=0x200
or on the kernel boot line as: or on the kernel boot line as:

View file

@ -127,7 +127,6 @@ struct sym_driver_setup {
u_char settle_delay; u_char settle_delay;
u_char use_nvram; u_char use_nvram;
u_long excludes[8]; u_long excludes[8];
char tag_ctrl[100];
}; };
#define SYM_SETUP_MAX_TAG sym_driver_setup.max_tag #define SYM_SETUP_MAX_TAG sym_driver_setup.max_tag

View file

@ -63,7 +63,6 @@ unsigned int sym_debug_flags = 0;
static char *excl_string; static char *excl_string;
static char *safe_string; static char *safe_string;
module_param_named(cmd_per_lun, sym_driver_setup.max_tag, ushort, 0); module_param_named(cmd_per_lun, sym_driver_setup.max_tag, ushort, 0);
module_param_string(tag_ctrl, sym_driver_setup.tag_ctrl, 100, 0);
module_param_named(burst, sym_driver_setup.burst_order, byte, 0); module_param_named(burst, sym_driver_setup.burst_order, byte, 0);
module_param_named(led, sym_driver_setup.scsi_led, byte, 0); module_param_named(led, sym_driver_setup.scsi_led, byte, 0);
module_param_named(diff, sym_driver_setup.scsi_diff, byte, 0); module_param_named(diff, sym_driver_setup.scsi_diff, byte, 0);
@ -78,7 +77,6 @@ module_param_named(excl, excl_string, charp, 0);
module_param_named(safe, safe_string, charp, 0); module_param_named(safe, safe_string, charp, 0);
MODULE_PARM_DESC(cmd_per_lun, "The maximum number of tags to use by default"); MODULE_PARM_DESC(cmd_per_lun, "The maximum number of tags to use by default");
MODULE_PARM_DESC(tag_ctrl, "More detailed control over tags per LUN");
MODULE_PARM_DESC(burst, "Maximum burst. 0 to disable, 255 to read from registers"); MODULE_PARM_DESC(burst, "Maximum burst. 0 to disable, 255 to read from registers");
MODULE_PARM_DESC(led, "Set to 1 to enable LED support"); MODULE_PARM_DESC(led, "Set to 1 to enable LED support");
MODULE_PARM_DESC(diff, "0 for no differential mode, 1 for BIOS, 2 for always, 3 for not GPIO3"); MODULE_PARM_DESC(diff, "0 for no differential mode, 1 for BIOS, 2 for always, 3 for not GPIO3");
@ -744,59 +742,6 @@ static void sym_tune_dev_queuing(struct sym_tcb *tp, int lun, u_short reqtags)
} }
} }
/*
* Linux select queue depths function
*/
#define DEF_DEPTH (sym_driver_setup.max_tag)
#define ALL_TARGETS -2
#define NO_TARGET -1
#define ALL_LUNS -2
#define NO_LUN -1
static int device_queue_depth(struct sym_hcb *np, int target, int lun)
{
int c, h, t, u, v;
char *p = sym_driver_setup.tag_ctrl;
char *ep;
h = -1;
t = NO_TARGET;
u = NO_LUN;
while ((c = *p++) != 0) {
v = simple_strtoul(p, &ep, 0);
switch(c) {
case '/':
++h;
t = ALL_TARGETS;
u = ALL_LUNS;
break;
case 't':
if (t != target)
t = (target == v) ? v : NO_TARGET;
u = ALL_LUNS;
break;
case 'u':
if (u != lun)
u = (lun == v) ? v : NO_LUN;
break;
case 'q':
if (h == np->s.unit &&
(t == ALL_TARGETS || t == target) &&
(u == ALL_LUNS || u == lun))
return v;
break;
case '-':
t = ALL_TARGETS;
u = ALL_LUNS;
break;
default:
break;
}
p = ep;
}
return DEF_DEPTH;
}
static int sym53c8xx_slave_alloc(struct scsi_device *sdev) static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
{ {
struct sym_hcb *np = sym_get_hcb(sdev->host); struct sym_hcb *np = sym_get_hcb(sdev->host);
@ -861,21 +806,16 @@ static int sym53c8xx_slave_configure(struct scsi_device *sdev)
* Use at least 2. * Use at least 2.
* Donnot use more than our maximum. * Donnot use more than our maximum.
*/ */
reqtags = device_queue_depth(np, sdev->id, sdev->lun); reqtags = sym_driver_setup.max_tag;
if (reqtags > tp->usrtags) if (reqtags > tp->usrtags)
reqtags = tp->usrtags; reqtags = tp->usrtags;
if (!sdev->tagged_supported) if (!sdev->tagged_supported)
reqtags = 0; reqtags = 0;
#if 1 /* Avoid to locally queue commands for no good reasons */
if (reqtags > SYM_CONF_MAX_TAG) if (reqtags > SYM_CONF_MAX_TAG)
reqtags = SYM_CONF_MAX_TAG; reqtags = SYM_CONF_MAX_TAG;
depth_to_use = (reqtags ? reqtags : 2); depth_to_use = reqtags ? reqtags : 2;
#else
depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
#endif
scsi_adjust_queue_depth(sdev, scsi_adjust_queue_depth(sdev,
(sdev->tagged_supported ? sdev->tagged_supported ? MSG_SIMPLE_TAG : 0,
MSG_SIMPLE_TAG : 0),
depth_to_use); depth_to_use);
lp->s.scdev_depth = depth_to_use; lp->s.scdev_depth = depth_to_use;
sym_tune_dev_queuing(tp, sdev->lun, reqtags); sym_tune_dev_queuing(tp, sdev->lun, reqtags);