]> xenbits.xensource.com Git - people/ssmith/nc2-2.6.27.bak/.git/commitdiff
patch forward-port-bnx2i.patch
authorSteven Smith <ssmith@weybridge.uk.xensource.com>
Thu, 28 May 2009 10:54:19 +0000 (11:54 +0100)
committerSteven Smith <ssmith@weybridge.uk.xensource.com>
Thu, 28 May 2009 10:54:19 +0000 (11:54 +0100)
drivers/scsi/bnx2i/57xx_iscsi_constants.h
drivers/scsi/bnx2i/bnx2i.h
drivers/scsi/bnx2i/bnx2i_hwi.c
drivers/scsi/bnx2i/bnx2i_iscsi.c
drivers/scsi/bnx2i/bnx2i_sysfs.c

index e143a32381dd5ebdb084e6300b9c95989e86870d..8a2bcbf38037a3dd91cd49f67d1e3fbd1ae44960 100644 (file)
 /* Iscsi PDU related defines */
 #define ISCSI_HEADER_SIZE   (48)
 #define ISCSI_DIGEST_SHIFT  (2)
-#define ISCSI_DIGEST_SIZE   (4)
+//#define ISCSI_DIGEST_SIZE   (4)
 
 #define B577XX_ISCSI_CONNECTION_TYPE   3
 
index 43c0f797b25cbe550fd43fdf220d59b8cb9c30fc..95500a3e299db89cb84c7166aa61643f9dca5d1d 100644 (file)
 #include <linux/mutex.h>
 #include <net/tcp.h>
 #include <linux/if_vlan.h>
+#include <linux/dma-mapping.h>
 
 #include <linux/spinlock.h>
 #include <linux/kthread.h>
-#include <asm/semaphore.h>
+#include <linux/semaphore.h>
 #include <linux/bitops.h>
 
 #include <scsi/scsi.h>
@@ -758,7 +759,7 @@ struct bnx2i_hba {
        struct pci_dev *pcidev;
        struct net_device *netdev;
        void __iomem *regview;
-       struct class_device class_dev;
+       struct device class_dev;
        u32 age;
        unsigned long cnic_dev_type;
                #define BNX2I_NX2_DEV_5706              0x0
index 5ed53891b9c88b6ce653e7b30d1587c617113f84..89c95f42bd32fdaeb85fce5d930d9300db0ca340 100644 (file)
@@ -1452,8 +1452,8 @@ static int bnx2i_process_tmf_resp(struct bnx2i_conn *conn, struct cqe *cqe)
        if (tmf_cqe->response == ISCSI_TMF_RSP_COMPLETE) {
                if (aborted_cmd->scsi_cmd) {
                        aborted_cmd->scsi_cmd->result = DID_ABORT << 16;
-                       aborted_cmd->scsi_cmd->resid =
-                               aborted_cmd->scsi_cmd->request_bufflen;
+                       scsi_set_resid(aborted_cmd->scsi_cmd,
+                                      aborted_cmd->scsi_cmd->sdb.length);
                        cmd->cmd_state = ISCSI_CMD_STATE_COMPLETED;
                }
        } else if (tmf_cqe->response == ISCSI_TMF_RSP_NO_TASK) {
index 4d7d0b703f5a0c7776bfce7c1020d5cc6586b277..8dbad901127f4e2dec47d82dfc09ba6af3306061 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include "bnx2i.h"
+#include <linux/types.h>
 #include <linux/ethtool.h>
 #include <scsi/scsi_transport_iscsi.h>
 
@@ -623,7 +624,7 @@ static struct bnx2i_endpoint *bnx2i_alloc_ep(struct bnx2i_hba *hba)
        struct bnx2i_endpoint *endpoint;
        struct list_head *listp;
        u16 tcp_port;
-       u32 flags;
+       unsigned long flags;
 
        spin_lock_irqsave(&bnx2i_resc_lock, flags);
 
@@ -664,7 +665,7 @@ static struct bnx2i_endpoint *bnx2i_alloc_ep(struct bnx2i_hba *hba)
  */
 static void bnx2i_free_ep(struct bnx2i_endpoint *endpoint)
 {
-       u32 flags;
+       unsigned long flags;
 
        spin_lock_irqsave(&bnx2i_resc_lock, flags);
        endpoint->state = EP_STATE_IDLE;
@@ -1371,7 +1372,7 @@ void bnx2i_iscsi_handle_ip_event(struct bnx2i_hba *hba)
        struct list_head *list;
        struct list_head *tmp;
        struct bnx2i_sess *sess;
-       u32 flags;
+       unsigned long flags;
 
        spin_lock_irqsave(&hba->lock, flags);
        list_for_each_safe(list, tmp, &hba->active_sess) {
@@ -1838,7 +1839,7 @@ ret_success:
  */
 void bnx2i_iscsi_sess_release(struct bnx2i_hba *hba, struct bnx2i_sess *sess)
 {
-       u32 flags;
+       unsigned long flags;
 
        bnx2i_release_free_itt_queue(sess);
        bnx2i_free_bd_table_pool(sess);
@@ -1864,7 +1865,7 @@ void bnx2i_iscsi_sess_release(struct bnx2i_hba *hba, struct bnx2i_sess *sess)
  */
 int bnx2i_iscsi_sess_new(struct bnx2i_hba *hba, struct bnx2i_sess *sess)
 {
-       u32 flags;
+       unsigned long flags;
 
        spin_lock_irqsave(&hba->lock, flags);
        list_add_tail(&sess->link, &hba->active_sess);
@@ -2513,13 +2514,15 @@ static void bnx2i_cpy_scsi_cdb(struct scsi_cmnd *sc,
 int bnx2i_queuecommand(struct scsi_cmnd *sc,
                       void (*done) (struct scsi_cmnd *))
 {
+       struct iscsi_cls_session *cls_session;
        struct bnx2i_sess *sess;
        struct bnx2i_conn *conn;
        struct bnx2i_cmd *cmd;
 
        sc->scsi_done = done;
        sc->result = 0;
-       sess = iscsi_hostdata(sc->device->host->hostdata);
+       cls_session = starget_to_session(scsi_target(sc->device));
+       sess = cls_session->dd_data;
 
 #define iscsi_cmd_win_closed(_sess)    \
        ((int) (_sess->max_cmdsn - _sess->cmdsn) < 0)
@@ -2633,6 +2636,7 @@ static void bnx2i_iscsi_tmf_timer(unsigned long data)
  */
 static int bnx2i_initiate_abort_cmd(struct scsi_cmnd *sc)
 {
+       struct iscsi_cls_session *cls_session;
        struct bnx2i_cmd *cmd = (struct bnx2i_cmd *) sc->SCp.ptr;
        struct bnx2i_cmd *tmf_cmd;
        struct Scsi_Host *shost = cmd->scsi_cmd->device->host;
@@ -2641,7 +2645,8 @@ static int bnx2i_initiate_abort_cmd(struct scsi_cmnd *sc)
        struct bnx2i_hba *hba;
 
        shost = cmd->scsi_cmd->device->host;
-       sess = iscsi_hostdata(shost->hostdata);
+       cls_session = starget_to_session(scsi_target(sc->device));
+       sess = cls_session->dd_data;
        BUG_ON(shost != sess->host);
 
        if (sess && (is_sess_active(sess)))
@@ -2805,12 +2810,14 @@ void bnx2i_return_failed_command(struct bnx2i_sess *sess,
  */
 int bnx2i_host_reset(struct scsi_cmnd *sc)
 {
+       struct iscsi_cls_session *cls_session;
        struct Scsi_Host *shost;
        struct bnx2i_sess *sess;
        int rc = 0;
 
        shost = sc->device->host;
-       sess = iscsi_hostdata(shost->hostdata);
+       cls_session = starget_to_session(scsi_target(sc->device));
+       sess = cls_session->dd_data;
        printk(KERN_INFO "bnx2i: attempting to reset host, #%d\n",
                          sess->host->host_no);
 
index 44a4bae97a1febd1334fbfd6914e302f4a4a6f63..363dd40b9dceeedf33dc175cd98eb4ccce9f4a50 100644 (file)
@@ -180,10 +180,10 @@ void bnx2i_setup_ictx_dump(struct bnx2i_hba *hba,
 }
 
 
-static ssize_t bnx2i_show_mips_status(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_mips_status(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        ssize_t len;
 
        if (!hba->regview)
@@ -205,27 +205,27 @@ static ssize_t bnx2i_show_mips_status(struct class_device *cdev, char *buf)
        return len;
 }
 
-static ssize_t bnx2i_show_net_if_name(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_net_if_name(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        return sprintf(buf, "%s\n", hba->netdev->name);
 }
 
-static ssize_t bnx2i_show_sq_info(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_sq_info(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        return sprintf(buf, "0x%x\n", hba->max_sqes);
 }
 
-static ssize_t bnx2i_set_sq_info(struct class_device *cdev,
+static ssize_t bnx2i_set_sq_info(struct device *dev, struct device_attribute *attr,
                                 const char *buf, size_t count)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        u32 val;
 
        if (sscanf(buf, " 0x%x ", &val) > 0) {
@@ -237,20 +237,20 @@ static ssize_t bnx2i_set_sq_info(struct class_device *cdev,
        return count;
 }
 
-static ssize_t bnx2i_show_cq_info(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_cq_info(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        return sprintf(buf, "0x%x\n", hba->max_cqes);
 }
 
-static ssize_t bnx2i_set_cq_info(struct class_device *cdev,
+static ssize_t bnx2i_set_cq_info(struct device *dev, struct device_attribute *attr,
                                 const char *buf, size_t count)
 {
        u32 val;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (sscanf(buf, " 0x%x ", &val) > 0) {
                if ((val >= BNX2I_CQ_WQES_MIN) &&
@@ -261,20 +261,20 @@ static ssize_t bnx2i_set_cq_info(struct class_device *cdev,
        return count;
 }
 
-static ssize_t bnx2i_show_rq_info(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_rq_info(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        return sprintf(buf, "0x%x\n", hba->max_rqes);
 }
 
-static ssize_t bnx2i_set_rq_info(struct class_device *cdev, const char *buf,
+static ssize_t bnx2i_set_rq_info(struct device *dev, struct device_attribute *attr, const char *buf,
                                                        size_t count)
 {
        u32 val;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (sscanf(buf, " 0x%x ", &val) > 0) {
                if ((val >= BNX2I_RQ_WQES_MIN) &&
@@ -286,20 +286,20 @@ static ssize_t bnx2i_set_rq_info(struct class_device *cdev, const char *buf,
 }
 
 
-static ssize_t bnx2i_show_ccell_info(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_show_ccell_info(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        return sprintf(buf, "0x%x\n", hba->num_ccell);
 }
 
-static ssize_t bnx2i_set_ccell_info(struct class_device *cdev,
+static ssize_t bnx2i_set_ccell_info(struct device *dev, struct device_attribute *attr,
                                    const char *buf, size_t count)
 {
        u32 val;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (sscanf(buf, " 0x%x ", &val) > 0) {
                if ((val >= BNX2I_CCELLS_MIN) &&
@@ -311,12 +311,12 @@ static ssize_t bnx2i_set_ccell_info(struct class_device *cdev,
 }
 
 
-static ssize_t bnx2i_read_pci_trigger_reg(struct class_device *cdev,
+static ssize_t bnx2i_read_pci_trigger_reg(struct device *dev, struct device_attribute *attr,
                                          char *buf)
 {
        u32 reg_val;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (!hba->regview)
                return 0;
@@ -327,10 +327,10 @@ static ssize_t bnx2i_read_pci_trigger_reg(struct class_device *cdev,
 }
 
 
-static ssize_t bnx2i_get_iscsi_cntx_dump(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_get_iscsi_cntx_dump(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        unsigned int *ptr = (unsigned int *) hba->ctx_addr;
        unsigned int *dst_ptr = (unsigned int *) buf;
        int unit_sz = sizeof(unsigned int);
@@ -348,13 +348,13 @@ static ssize_t bnx2i_get_iscsi_cntx_dump(struct class_device *cdev, char *buf)
        return SYSFS_BUF_SIZE;
 }
 
-static ssize_t bnx2i_select_iscsi_cntx_dump(struct class_device *cdev,
+static ssize_t bnx2i_select_iscsi_cntx_dump(struct device *dev, struct device_attribute *attr,
                                            const char *buf, size_t count)
 {
        u32 iscsi_cid;
        int ret = 0;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (sscanf(buf, " 0x%x ", &iscsi_cid) > 0) {
                ret = bnx2i_select_ctx_dump_cid(hba, iscsi_cid);
@@ -364,7 +364,7 @@ static ssize_t bnx2i_select_iscsi_cntx_dump(struct class_device *cdev,
        return ret;
 }
 
-static ssize_t bnx2i_get_active_iscsi_cid_list(struct class_device *cdev,
+static ssize_t bnx2i_get_active_iscsi_cid_list(struct device *dev, struct device_attribute *attr,
                                               char *buf)
 {
        u32 active_iscsi_cid[32];
@@ -374,7 +374,7 @@ static ssize_t bnx2i_get_active_iscsi_cid_list(struct class_device *cdev,
        char *cur_ptr = buf;
        int i;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        u32 num_ccell = hba->ctx_ccell_tasks & 0xFFFF;
        u32 num_tasks_per_conn = hba->ctx_ccell_tasks >> 16;
 
@@ -407,12 +407,12 @@ static ssize_t bnx2i_get_active_iscsi_cid_list(struct class_device *cdev,
 }
 
 
-static ssize_t bnx2i_set_iscsi_cid_err_poll_mode(struct class_device *cdev,
+static ssize_t bnx2i_set_iscsi_cid_err_poll_mode(struct device *dev, struct device_attribute *attr,
                                                 const char *buf, size_t count)
 {
        u32 poll_mode;
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
 
        if (sscanf(buf, "0x%x", &poll_mode) > 0) {
                if (poll_mode)
@@ -424,10 +424,10 @@ static ssize_t bnx2i_set_iscsi_cid_err_poll_mode(struct class_device *cdev,
 }
 
 
-static ssize_t bnx2i_get_qp_shmem_dump(struct class_device *cdev, char *buf)
+static ssize_t bnx2i_get_qp_shmem_dump(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        int resi_len = hba->sq_cq_size -
                       (hba->sq_cq_rdp - hba->sq_cq_dump);
 
@@ -582,11 +582,11 @@ static int bnx2i_init_sq_dump(struct bnx2i_hba *hba,
        return 0;
 }
 
-static ssize_t bnx2i_setup_qp_shmem_dump(struct class_device *cdev,
+static ssize_t bnx2i_setup_qp_shmem_dump(struct device *dev, struct device_attribute *attr,
                                         const char *buf, size_t count)
 {
        struct bnx2i_hba *hba =
-               container_of(cdev, struct bnx2i_hba, class_dev);
+               container_of(dev, struct bnx2i_hba, class_dev);
        u32 iscsi_cid;
        char queue[32];
        ssize_t ret = count;
@@ -607,14 +607,14 @@ static ssize_t bnx2i_setup_qp_shmem_dump(struct class_device *cdev,
 }
 
 
-static ssize_t bnx2i_read_tcp_portd_options(struct class_device *cdev,
+static ssize_t bnx2i_read_tcp_portd_options(struct device *dev, struct device_attribute *attr,
                                            char *buf)
 {
        extern struct tcp_port_mngt bnx2i_tcp_port_tbl;
        return sprintf(buf, "0x%x\n", bnx2i_tcp_port_tbl.num_required);
 }
 
-static ssize_t bnx2i_write_tcp_portd_results(struct class_device *cdev,
+static ssize_t bnx2i_write_tcp_portd_results(struct device *dev, struct device_attribute *attr,
                                             const char *buf, size_t count)
 {
        extern struct tcp_port_mngt bnx2i_tcp_port_tbl;
@@ -631,6 +631,7 @@ static ssize_t bnx2i_write_tcp_portd_results(struct class_device *cdev,
        return count;
 }
 
+#define CLASS_DEVICE_ATTR(a,b,c,d) DEVICE_ATTR(a,b,c,d)
 
 static CLASS_DEVICE_ATTR (mips_info, S_IRUGO,
                         bnx2i_show_mips_status, NULL);
@@ -659,55 +660,58 @@ static CLASS_DEVICE_ATTR (port_bind, S_IRUGO | S_IWUSR,
                         bnx2i_read_tcp_portd_options,
                         bnx2i_write_tcp_portd_results);
 
-
-static struct class_device_attribute *bnx2i_class_attributes[] = {
-       &class_device_attr_mips_info,
-       &class_device_attr_net_if_name,
-       &class_device_attr_sq_size,
-       &class_device_attr_cq_size,
-       &class_device_attr_rq_size,
-       &class_device_attr_num_ccell,
-       &class_device_attr_pci_trigger,
-       &class_device_attr_ctx_dump,
-       &class_device_attr_cid_list,
-       &class_device_attr_qp_shmem_dump,
+//static struct class_device_attribute *bnx2i_class_attributes[] = {
+static struct device_attribute *bnx2i_class_attributes[] = {
+       &/*class_device*/dev_attr_mips_info,
+       &/*class_device*/dev_attr_net_if_name,
+       &/*class_device*/dev_attr_sq_size,
+       &/*class_device*/dev_attr_cq_size,
+       &/*class_device*/dev_attr_rq_size,
+       &/*class_device*/dev_attr_num_ccell,
+       &/*class_device*/dev_attr_pci_trigger,
+       &/*class_device*/dev_attr_ctx_dump,
+       &/*class_device*/dev_attr_cid_list,
+       &/*class_device*/dev_attr_qp_shmem_dump,
 };
 
-static struct class_device_attribute *tcp_port_class_attributes[] = {
-       &class_device_attr_port_bind
+//static struct class_device_attribute *tcp_port_class_attributes[] = {
+static struct device_attribute *tcp_port_class_attributes[] = {
+       &/*class_device*/dev_attr_port_bind
 };
 
-static void bnx2i_sysfs_release(struct class_device *class_dev)
+static void bnx2i_sysfs_release(struct device *class_dev)
 {
 }
 
-struct class_device port_class_dev;
+struct device port_class_dev;
 
 
 static struct class bnx2i_class = {
        .name   = "bnx2i",
-       .release = bnx2i_sysfs_release,
+       .dev_release = bnx2i_sysfs_release,
 };
 
 
 
-static int bnx2i_register_port_class_dev(struct class_device *class_dev)
+static int bnx2i_register_port_class_dev(struct device *class_dev)
 {
        char dev_name[BUS_ID_SIZE];
        int ret;
        int i;
 
        class_dev->class = &bnx2i_class;
-       class_dev->class_data = class_dev;
+       //class_dev->class_data = class_dev;
+       //class_set_devdata(class_dev, class_dev);
+       dev_set_drvdata(class_dev, class_dev);
        snprintf(dev_name, BUS_ID_SIZE, "%s", "tcp_portd");
-       strlcpy(class_dev->class_id, dev_name, BUS_ID_SIZE);
+       strlcpy(class_dev->bus_id, dev_name, BUS_ID_SIZE);
 
-       ret = class_device_register(class_dev);
+       ret = device_register(class_dev);
        if (ret)
                goto err;
 
        for (i = 0; i < ARRAY_SIZE(tcp_port_class_attributes); ++i) {
-               ret = class_device_create_file(class_dev,
+               ret = device_create_file(class_dev,
                                               tcp_port_class_attributes[i]);
                if (ret)
                        goto err_unregister;
@@ -716,7 +720,7 @@ static int bnx2i_register_port_class_dev(struct class_device *class_dev)
        return 0;
 
 err_unregister:
-       class_device_unregister(class_dev);
+       device_unregister(class_dev);
 err:
        return ret;
 }
@@ -724,7 +728,7 @@ err:
 
 int bnx2i_register_sysfs(struct bnx2i_hba *hba)
 {
-       struct class_device *class_dev = &hba->class_dev;
+       struct device *class_dev = &hba->class_dev;
        char dev_name[BUS_ID_SIZE];
        struct ethtool_drvinfo drv_info;
        u32 bus_no;
@@ -741,17 +745,19 @@ int bnx2i_register_sysfs(struct bnx2i_hba *hba)
                       &extra, &bus_no, &dev_no, &func_no);
        }
        class_dev->class = &bnx2i_class;
-       class_dev->class_data = hba;
+       //class_dev->class_data = hba;
+       //class_set_devdata(class_dev, hba);
+       dev_set_drvdata(class_dev, hba);
        snprintf(dev_name, BUS_ID_SIZE, "%.2x:%.2x.%.1x",
                         bus_no, dev_no, func_no);
-       strlcpy(class_dev->class_id, dev_name, BUS_ID_SIZE);
+       strlcpy(class_dev->bus_id, dev_name, BUS_ID_SIZE);
 
-       ret = class_device_register(class_dev);
+       ret = device_register(class_dev);
        if (ret)
                goto err;
 
        for (i = 0; i < ARRAY_SIZE(bnx2i_class_attributes); ++i) {
-               ret = class_device_create_file(class_dev,
+               ret = device_create_file(class_dev,
                                               bnx2i_class_attributes[i]);
                if (ret)
                        goto err_unregister;
@@ -760,14 +766,14 @@ int bnx2i_register_sysfs(struct bnx2i_hba *hba)
        return 0;
 
 err_unregister:
-       class_device_unregister(class_dev);
+       device_unregister(class_dev);
 err:
        return ret;
 }
 
 void bnx2i_unregister_sysfs(struct bnx2i_hba *hba)
 {
-       class_device_unregister(&hba->class_dev);
+       device_unregister(&hba->class_dev);
 }
 
 int bnx2i_sysfs_setup(void)
@@ -781,7 +787,7 @@ int bnx2i_sysfs_setup(void)
 
 void bnx2i_sysfs_cleanup(void)
 {
-       class_device_unregister(&port_class_dev);
+       device_unregister(&port_class_dev);
        class_unregister(&bnx2i_class);
 }