]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qla2xxx: Remove EDC sysfs interface.
authorJoe Carnuccio <joe.carnuccio@qlogic.com>
Tue, 10 Apr 2012 11:50:36 +0000 (17:20 +0530)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Wed, 9 May 2012 00:40:57 +0000 (17:40 -0700)
Since the new firmware periodically resets the EDC, the EDC is now
not able to be flashed while the firmware is running, so the user
applications must be prevented from flashing the EDC, and this is
achieved by removing the EDC sysfs interface.

JIRA Key: V2632FC-112

Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
drivers/scsi/qla2xxx/qla_attr.c
drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_os.c

index f888b67fb472a498428f48208040d1666032b7c2..e900b9f617c063033ce8276826d67ccfe9df6bcc 100644 (file)
@@ -627,144 +627,6 @@ static struct bin_attribute sysfs_reset_attr = {
        .write = qla2x00_sysfs_write_reset,
 };
 
-static ssize_t
-qla2x00_sysfs_write_edc(struct file *filp, struct kobject *kobj,
-                       struct bin_attribute *bin_attr,
-                       char *buf, loff_t off, size_t count)
-{
-       struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj,
-           struct device, kobj)));
-       struct qla_hw_data *ha = vha->hw;
-       uint16_t dev, adr, opt, len;
-       int rval;
-
-       ha->edc_data_len = 0;
-
-       if (!capable(CAP_SYS_ADMIN) || off != 0 || count < 8)
-               return -EINVAL;
-
-       if (!ha->edc_data) {
-               ha->edc_data = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL,
-                   &ha->edc_data_dma);
-               if (!ha->edc_data) {
-                       ql_log(ql_log_warn, vha, 0x7073,
-                           "Unable to allocate memory for EDC write.\n");
-                       return -ENOMEM;
-               }
-       }
-
-       dev = le16_to_cpup((void *)&buf[0]);
-       adr = le16_to_cpup((void *)&buf[2]);
-       opt = le16_to_cpup((void *)&buf[4]);
-       len = le16_to_cpup((void *)&buf[6]);
-
-       if (!(opt & BIT_0))
-               if (len == 0 || len > DMA_POOL_SIZE || len > count - 8)
-                       return -EINVAL;
-
-       memcpy(ha->edc_data, &buf[8], len);
-
-       rval = qla2x00_write_sfp(vha, ha->edc_data_dma, ha->edc_data,
-           dev, adr, len, opt);
-       if (rval != QLA_SUCCESS) {
-               ql_log(ql_log_warn, vha, 0x7074,
-                   "Unable to write EDC (%x) %02x:%02x:%04x:%02x:%02hhx\n",
-                   rval, dev, adr, opt, len, buf[8]);
-               return -EIO;
-       }
-
-       return count;
-}
-
-static struct bin_attribute sysfs_edc_attr = {
-       .attr = {
-               .name = "edc",
-               .mode = S_IWUSR,
-       },
-       .size = 0,
-       .write = qla2x00_sysfs_write_edc,
-};
-
-static ssize_t
-qla2x00_sysfs_write_edc_status(struct file *filp, struct kobject *kobj,
-                       struct bin_attribute *bin_attr,
-                       char *buf, loff_t off, size_t count)
-{
-       struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj,
-           struct device, kobj)));
-       struct qla_hw_data *ha = vha->hw;
-       uint16_t dev, adr, opt, len;
-       int rval;
-
-       ha->edc_data_len = 0;
-
-       if (!capable(CAP_SYS_ADMIN) || off != 0 || count < 8)
-               return -EINVAL;
-
-       if (!ha->edc_data) {
-               ha->edc_data = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL,
-                   &ha->edc_data_dma);
-               if (!ha->edc_data) {
-                       ql_log(ql_log_warn, vha, 0x708c,
-                           "Unable to allocate memory for EDC status.\n");
-                       return -ENOMEM;
-               }
-       }
-
-       dev = le16_to_cpup((void *)&buf[0]);
-       adr = le16_to_cpup((void *)&buf[2]);
-       opt = le16_to_cpup((void *)&buf[4]);
-       len = le16_to_cpup((void *)&buf[6]);
-
-       if (!(opt & BIT_0))
-               if (len == 0 || len > DMA_POOL_SIZE)
-                       return -EINVAL;
-
-       memset(ha->edc_data, 0, len);
-       rval = qla2x00_read_sfp(vha, ha->edc_data_dma, ha->edc_data,
-                       dev, adr, len, opt);
-       if (rval != QLA_SUCCESS) {
-               ql_log(ql_log_info, vha, 0x7075,
-                   "Unable to write EDC status (%x) %02x:%02x:%04x:%02x.\n",
-                   rval, dev, adr, opt, len);
-               return -EIO;
-       }
-
-       ha->edc_data_len = len;
-
-       return count;
-}
-
-static ssize_t
-qla2x00_sysfs_read_edc_status(struct file *filp, struct kobject *kobj,
-                          struct bin_attribute *bin_attr,
-                          char *buf, loff_t off, size_t count)
-{
-       struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj,
-           struct device, kobj)));
-       struct qla_hw_data *ha = vha->hw;
-
-       if (!capable(CAP_SYS_ADMIN) || off != 0 || count == 0)
-               return 0;
-
-       if (!ha->edc_data || ha->edc_data_len == 0 || ha->edc_data_len > count)
-               return -EINVAL;
-
-       memcpy(buf, ha->edc_data, ha->edc_data_len);
-
-       return ha->edc_data_len;
-}
-
-static struct bin_attribute sysfs_edc_status_attr = {
-       .attr = {
-               .name = "edc_status",
-               .mode = S_IRUSR | S_IWUSR,
-       },
-       .size = 0,
-       .write = qla2x00_sysfs_write_edc_status,
-       .read = qla2x00_sysfs_read_edc_status,
-};
-
 static ssize_t
 qla2x00_sysfs_read_xgmac_stats(struct file *filp, struct kobject *kobj,
                       struct bin_attribute *bin_attr,
@@ -880,8 +742,6 @@ static struct sysfs_entry {
        { "vpd", &sysfs_vpd_attr, 1 },
        { "sfp", &sysfs_sfp_attr, 1 },
        { "reset", &sysfs_reset_attr, },
-       { "edc", &sysfs_edc_attr, 2 },
-       { "edc_status", &sysfs_edc_status_attr, 2 },
        { "xgmac_stats", &sysfs_xgmac_stats_attr, 3 },
        { "dcbx_tlv", &sysfs_dcbx_tlv_attr, 3 },
        { NULL },
index 9e6500f84ec681e9f70cabc92a9f7781efb3294c..f8c8dff01108dcab0692fd06c9d5f13ee64ab6d8 100644 (file)
@@ -22,6 +22,8 @@
  * | Timer Routines               |       0x6011       | 0x600e-0x600f  |
  * | User Space Interactions      |       0x709f       | 0x7018,0x702e  |
  * |                              |                    | 0x7039,0x7045  |
+ * |                              |                    | 0x7073-0x7075  |
+ * |                              |                    | 0x708c         |
  * | Task Management              |       0x803c       | 0x8025-0x8026  |
  * |                             |                    | 0x800b,0x8039 |
  * | AER/EEH                      |       0x900f       |              |
index 9eae991d3124718048166d74eba0054a526378a9..ba60565300d0ccf1636254eda489c31e646b5862 100644 (file)
@@ -2646,10 +2646,6 @@ struct qla_hw_data {
        void            *sfp_data;
        dma_addr_t      sfp_data_dma;
 
-       uint8_t         *edc_data;
-       dma_addr_t      edc_data_dma;
-       uint16_t        edc_data_len;
-
 #define XGMAC_DATA_SIZE        4096
        void            *xgmac_data;
        dma_addr_t      xgmac_data_dma;
index ed318d10a22392d8998b9fd85ef49e1e387eb088..58ee44c896504acb5b6fc762b7a6c6f74371f574 100644 (file)
@@ -3158,9 +3158,6 @@ qla2x00_mem_free(struct qla_hw_data *ha)
        if (ha->sfp_data)
                dma_pool_free(ha->s_dma_pool, ha->sfp_data, ha->sfp_data_dma);
 
-       if (ha->edc_data)
-               dma_pool_free(ha->s_dma_pool, ha->edc_data, ha->edc_data_dma);
-
        if (ha->ms_iocb)
                dma_pool_free(ha->s_dma_pool, ha->ms_iocb, ha->ms_iocb_dma);