[SCSI] Add an 'Issue LIP' device attribute in fc_transport class
[linux-2.6.git] / drivers / scsi / lpfc / lpfc_attr.c
index acae7c4..445da1d 100644 (file)
@@ -200,19 +200,13 @@ lpfc_num_discovered_ports_show(struct class_device *cdev, char *buf)
 }
 
 
-static ssize_t
-lpfc_issue_lip (struct class_device *cdev, const char *buf, size_t count)
+static int
+lpfc_issue_lip(struct Scsi_Host *host)
 {
-       struct Scsi_Host *host = class_to_shost(cdev);
        struct lpfc_hba *phba = (struct lpfc_hba *) host->hostdata[0];
-       int val = 0;
        LPFC_MBOXQ_t *pmboxq;
        int mbxstatus = MBXERR_ERROR;
 
-       if ((sscanf(buf, "%d", &val) != 1) ||
-           (val != 1))
-               return -EINVAL;
-
        if ((phba->fc_flag & FC_OFFLINE_MODE) ||
            (phba->hba_state != LPFC_HBA_READY))
                return -EPERM;
@@ -234,7 +228,7 @@ lpfc_issue_lip (struct class_device *cdev, const char *buf, size_t count)
        if (mbxstatus == MBXERR_ERROR)
                return -EIO;
 
-       return strlen(buf);
+       return 0;
 }
 
 static ssize_t
@@ -364,7 +358,6 @@ static CLASS_DEVICE_ATTR(lpfc_drvr_version, S_IRUGO, lpfc_drvr_version_show,
                         NULL);
 static CLASS_DEVICE_ATTR(management_version, S_IRUGO, management_version_show,
                         NULL);
-static CLASS_DEVICE_ATTR(issue_lip, S_IWUSR, NULL, lpfc_issue_lip);
 static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR,
                         lpfc_board_online_show, lpfc_board_online_store);
 
@@ -537,7 +530,6 @@ struct class_device_attribute *lpfc_host_attrs[] = {
        &class_device_attr_lpfc_max_luns,
        &class_device_attr_nport_evt_cnt,
        &class_device_attr_management_version,
-       &class_device_attr_issue_lip,
        &class_device_attr_board_online,
        NULL,
 };
@@ -1234,6 +1226,8 @@ struct fc_function_template lpfc_transport_functions = {
 
        .get_starget_port_name = lpfc_get_starget_port_name,
        .show_starget_port_name = 1,
+
+       .issue_fc_host_lip = lpfc_issue_lip,
 };
 
 void