mirror of
https://github.com/torvalds/linux
synced 2024-09-21 03:28:37 +00:00
[SCSI] zfcp: Keep ccw device and model id in zfcp_ccw.c
Keep the information about the device and model id in zfcp_ccw. This requires an additional helper function to check for the privileged cfdc subchannel, but it allows the removal of the redundant defines from the zfcp_def header file. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
ea460a8191
commit
6fcf41d1d8
|
@ -11,6 +11,24 @@
|
||||||
|
|
||||||
#include "zfcp_ext.h"
|
#include "zfcp_ext.h"
|
||||||
|
|
||||||
|
#define ZFCP_MODEL_PRIV 0x4
|
||||||
|
|
||||||
|
static struct ccw_device_id zfcp_ccw_device_id[] = {
|
||||||
|
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) },
|
||||||
|
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, ZFCP_MODEL_PRIV) },
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(ccw, zfcp_ccw_device_id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* zfcp_ccw_priv_sch - check if subchannel is privileged
|
||||||
|
* @adapter: Adapter/Subchannel to check
|
||||||
|
*/
|
||||||
|
int zfcp_ccw_priv_sch(struct zfcp_adapter *adapter)
|
||||||
|
{
|
||||||
|
return adapter->ccw_device->id.dev_model == ZFCP_MODEL_PRIV;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* zfcp_ccw_probe - probe function of zfcp driver
|
* zfcp_ccw_probe - probe function of zfcp driver
|
||||||
* @ccw_device: pointer to belonging ccw device
|
* @ccw_device: pointer to belonging ccw device
|
||||||
|
@ -199,14 +217,6 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev)
|
||||||
up(&zfcp_data.config_sema);
|
up(&zfcp_data.config_sema);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ccw_device_id zfcp_ccw_device_id[] = {
|
|
||||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) },
|
|
||||||
{ CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x4) }, /* priv. */
|
|
||||||
{},
|
|
||||||
};
|
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE(ccw, zfcp_ccw_device_id);
|
|
||||||
|
|
||||||
static struct ccw_driver zfcp_ccw_driver = {
|
static struct ccw_driver zfcp_ccw_driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = "zfcp",
|
.name = "zfcp",
|
||||||
|
|
|
@ -47,13 +47,6 @@
|
||||||
|
|
||||||
/********************* CIO/QDIO SPECIFIC DEFINES *****************************/
|
/********************* CIO/QDIO SPECIFIC DEFINES *****************************/
|
||||||
|
|
||||||
/* Adapter Identification Parameters */
|
|
||||||
#define ZFCP_CONTROL_UNIT_TYPE 0x1731
|
|
||||||
#define ZFCP_CONTROL_UNIT_MODEL 0x03
|
|
||||||
#define ZFCP_DEVICE_TYPE 0x1732
|
|
||||||
#define ZFCP_DEVICE_MODEL 0x03
|
|
||||||
#define ZFCP_DEVICE_MODEL_PRIV 0x04
|
|
||||||
|
|
||||||
/* DMQ bug workaround: don't use last SBALE */
|
/* DMQ bug workaround: don't use last SBALE */
|
||||||
#define ZFCP_MAX_SBALES_PER_SBAL (QDIO_MAX_ELEMENTS_PER_BUFFER - 1)
|
#define ZFCP_MAX_SBALES_PER_SBAL (QDIO_MAX_ELEMENTS_PER_BUFFER - 1)
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ extern int zfcp_sg_setup_table(struct scatterlist *, int);
|
||||||
|
|
||||||
/* zfcp_ccw.c */
|
/* zfcp_ccw.c */
|
||||||
extern int zfcp_ccw_register(void);
|
extern int zfcp_ccw_register(void);
|
||||||
|
extern int zfcp_ccw_priv_sch(struct zfcp_adapter *);
|
||||||
extern struct zfcp_adapter *zfcp_get_adapter_by_busid(char *);
|
extern struct zfcp_adapter *zfcp_get_adapter_by_busid(char *);
|
||||||
|
|
||||||
/* zfcp_cfdc.c */
|
/* zfcp_cfdc.c */
|
||||||
|
|
|
@ -1887,7 +1887,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req)
|
||||||
|
|
||||||
if (!(adapter->connection_features & FSF_FEATURE_NPIV_MODE) &&
|
if (!(adapter->connection_features & FSF_FEATURE_NPIV_MODE) &&
|
||||||
(adapter->adapter_features & FSF_FEATURE_LUN_SHARING) &&
|
(adapter->adapter_features & FSF_FEATURE_LUN_SHARING) &&
|
||||||
(adapter->ccw_device->id.dev_model != ZFCP_DEVICE_MODEL_PRIV)) {
|
!zfcp_ccw_priv_sch(adapter)) {
|
||||||
exclusive = (bottom->lun_access_info &
|
exclusive = (bottom->lun_access_info &
|
||||||
FSF_UNIT_ACCESS_EXCLUSIVE);
|
FSF_UNIT_ACCESS_EXCLUSIVE);
|
||||||
readwrite = (bottom->lun_access_info &
|
readwrite = (bottom->lun_access_info &
|
||||||
|
|
Loading…
Reference in a new issue