#include "qla_bsg.h"
 #include "qla_nx.h"
-#define QLA2XXX_DRIVER_NAME  "qla2xxx"
+#define QLA2XXX_DRIVER_NAME    "qla2xxx"
+#define QLA2XXX_APIDEV         "ql2xapidev"
 
 /*
  * We have MAILBOX_REGISTER_COUNT sized arrays in a few places,
 
  */
 char qla2x00_version_str[40];
 
+static int apidev_major;
+
 /*
  * SRB allocation cache
  */
        .err_handler    = &qla2xxx_err_handler,
 };
 
+static struct file_operations apidev_fops = {
+       .owner = THIS_MODULE,
+};
+
 /**
  * qla2x00_module_init - Module initialization.
  **/
                kmem_cache_destroy(srb_cachep);
                return -ENODEV;
        }
+
+       apidev_major = register_chrdev(0, QLA2XXX_APIDEV, &apidev_fops);
+       if (apidev_major < 0) {
+               printk(KERN_WARNING "qla2xxx: Unable to register char device "
+                   "%s\n", QLA2XXX_APIDEV);
+       }
+
        qla2xxx_transport_vport_template =
            fc_attach_transport(&qla2xxx_transport_vport_functions);
        if (!qla2xxx_transport_vport_template) {
 static void __exit
 qla2x00_module_exit(void)
 {
+       unregister_chrdev(apidev_major, QLA2XXX_APIDEV);
        pci_unregister_driver(&qla2xxx_pci_driver);
        qla2x00_release_firmware();
        kmem_cache_destroy(srb_cachep);