Skip to content

Commit

Permalink
Treat STK T10K A/B/C as unique types
Browse files Browse the repository at this point in the history
Signed-off-by: Mark Harvey <markh794@gmail.com>
  • Loading branch information
markh794 committed Apr 27, 2011
1 parent c71092c commit a04aade
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 11 deletions.
6 changes: 4 additions & 2 deletions usr/ssc.h
Expand Up @@ -13,7 +13,7 @@
#define ENCR_SET_DATA_ENCRYPTION 0x10

struct media_handling {
char media_type[8];
char media_type[16];
char op[8];
unsigned char density;
};
Expand Down Expand Up @@ -76,7 +76,9 @@ void init_ait2_ssc(struct lu_phy_attr *lu);
void init_ait3_ssc(struct lu_phy_attr *lu);
void init_ait4_ssc(struct lu_phy_attr *lu);
void init_default_ssc(struct lu_phy_attr *lu);
void init_t10k_ssc(struct lu_phy_attr *lu);
void init_t10kA_ssc(struct lu_phy_attr *lu);
void init_t10kB_ssc(struct lu_phy_attr *lu);
void init_t10kC_ssc(struct lu_phy_attr *lu);
void init_ult3580_td1(struct lu_phy_attr *lu);
void init_ult3580_td2(struct lu_phy_attr *lu);
void init_ult3580_td3(struct lu_phy_attr *lu);
Expand Down
69 changes: 63 additions & 6 deletions usr/t10000_pm.c
Expand Up @@ -78,9 +78,30 @@ static struct mode sm[] = {
};

static struct media_handling t10kA_media_handling[] = {
{ "T10KA", "RW", medium_density_code_10kA, },
{ "T10KB", "RW", medium_density_code_10kB, },
{ "T10KC", "RW", medium_density_code_10kC, },
{ "T10KA", "RW", Media_T10KA, },
{ "T10KA Cleaning", "RO", Media_T10KA_CLEAN, },
{ "T10KB", "RW", Media_T10KB, },
{ "T10KB Cleaning", "RO", Media_T10KB_CLEAN, },
{ "T10KC", "RW", Media_T10KC, },
{ "T10KC Cleaning", "RO", Media_T10KC_CLEAN, },
};

static struct media_handling t10kB_media_handling[] = {
{ "T10KA", "RW", Media_T10KA, },
{ "T10KA Cleaning", "RO", Media_T10KA_CLEAN, },
{ "T10KB", "RW", Media_T10KB, },
{ "T10KB Cleaning", "RO", Media_T10KB_CLEAN, },
{ "T10KC", "RW", Media_T10KC, },
{ "T10KC Cleaning", "RO", Media_T10KC_CLEAN, },
};

static struct media_handling t10kC_media_handling[] = {
{ "T10KA", "RW", Media_T10KA, },
{ "T10KA Cleaning", "RO", Media_T10KA_CLEAN, },
{ "T10KB", "RW", Media_T10KB, },
{ "T10KB Cleaning", "RO", Media_T10KB_CLEAN, },
{ "T10KC", "RW", Media_T10KC, },
{ "T10KC Cleaning", "RO", Media_T10KC_CLEAN, },
};

/*
Expand Down Expand Up @@ -237,7 +258,9 @@ static int t10k_kad_validation(int encrypt_mode, int ukad, int akad)

}

static char *pm_name_t10k = "T10000";
static char *pm_name_t10kA = "T10000A";
static char *pm_name_t10kB = "T10000B";
static char *pm_name_t10kC = "T10000C";

static struct ssc_personality_template ssc_pm = {
.valid_encryption_blk = valid_encryption_blk_t10k,
Expand Down Expand Up @@ -355,11 +378,11 @@ uint8_t t10k_inquiry(struct scsi_cmd *cmd)
return SAM_STAT_CHECK_CONDITION;
}

void init_t10k_ssc(struct lu_phy_attr *lu)
void init_t10kA_ssc(struct lu_phy_attr *lu)
{
MHVTL_DBG(3, "*** Trace ***");

ssc_pm.name = pm_name_t10k;
ssc_pm.name = pm_name_t10kA;
ssc_pm.drive_native_density = medium_density_code_10kA;
ssc_pm.media_capabilities = t10kA_media_handling;
personality_module_register(&ssc_pm);
Expand All @@ -371,3 +394,37 @@ void init_t10k_ssc(struct lu_phy_attr *lu)
register_ops(lu, LOAD_DISPLAY, ssc_load_display);
init_t10k_inquiry(lu);
}

void init_t10kB_ssc(struct lu_phy_attr *lu)
{
MHVTL_DBG(3, "*** Trace ***");

ssc_pm.name = pm_name_t10kB;
ssc_pm.drive_native_density = medium_density_code_10kB;
ssc_pm.media_capabilities = t10kB_media_handling;
personality_module_register(&ssc_pm);
init_default_ssc_mode_pages(sm);
lu->mode_pages = sm;
register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin);
register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout);
register_ops(lu, INQUIRY, t10k_inquiry);
register_ops(lu, LOAD_DISPLAY, ssc_load_display);
init_t10k_inquiry(lu);
}

void init_t10kC_ssc(struct lu_phy_attr *lu)
{
MHVTL_DBG(3, "*** Trace ***");

ssc_pm.name = pm_name_t10kC;
ssc_pm.drive_native_density = medium_density_code_10kC;
ssc_pm.media_capabilities = t10kC_media_handling;
personality_module_register(&ssc_pm);
init_default_ssc_mode_pages(sm);
lu->mode_pages = sm;
register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin);
register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout);
register_ops(lu, INQUIRY, t10k_inquiry);
register_ops(lu, LOAD_DISPLAY, ssc_load_display);
init_t10k_inquiry(lu);
}
6 changes: 3 additions & 3 deletions usr/vtltape.c
Expand Up @@ -266,9 +266,9 @@ static struct tape_drives_table {
{ "03592J1A ", init_3592_j1a },
{ "03592E05 ", init_3592_E05 },
{ "03592E06 ", init_3592_E06 },
{ "T10000C ", init_t10k_ssc },
{ "T10000B ", init_t10k_ssc },
{ "T10000 ", init_t10k_ssc },
{ "T10000C ", init_t10kC_ssc },
{ "T10000B ", init_t10kB_ssc },
{ "T10000 ", init_t10kA_ssc },
{ NULL, NULL},
};

Expand Down

0 comments on commit a04aade

Please sign in to comment.