fcoe-y := \
libfcoe.o \
- fcoe_sw.o \
- fc_transport_fcoe.o
+ fcoe_sw.o
#include <scsi/libfc.h>
#include <scsi/libfcoe.h>
-#include <scsi/fc_transport_fcoe.h>
#define FCOE_SW_VERSION "0.1"
#define FCOE_SW_NAME "fcoesw"
*
* Returns: 0 if link is OK for use by FCoE.
*/
-static int fcoe_sw_destroy(struct net_device *netdev)
+int fcoe_sw_destroy(struct net_device *netdev)
{
struct fc_lport *lp = NULL;
struct fcoe_softc *fc;
*
* Returns : 0 on success
*/
-static int fcoe_sw_create(struct net_device *netdev)
+int fcoe_sw_create(struct net_device *netdev)
{
int rc;
struct fc_lport *lp = NULL;
}
/**
- * fcoe_sw_match() - The FCoE SW transport match function
- *
- * Returns : false always
- */
-static bool fcoe_sw_match(struct net_device *netdev)
-{
- /* FIXME - for sw transport, always return false */
- return false;
-}
-
-/* the sw hba fcoe transport */
-struct fcoe_transport fcoe_sw_transport = {
- .name = "fcoesw",
- .create = fcoe_sw_create,
- .destroy = fcoe_sw_destroy,
- .match = fcoe_sw_match,
- .vendor = 0x0,
- .device = 0xffff,
-};
-
-/**
- * fcoe_sw_init() - Registers fcoe_sw_transport
+ * fcoe_sw_init() - attach to scsi transport
*
* Returns : 0 on success
*/
return -ENODEV;
}
- mutex_init(&fcoe_sw_transport.devlock);
- INIT_LIST_HEAD(&fcoe_sw_transport.devlist);
-
- /* register sw transport */
- fcoe_transport_register(&fcoe_sw_transport);
return 0;
}
/**
- * fcoe_sw_exit() - Unregisters fcoe_sw_transport
+ * fcoe_sw_exit() - detach from scsi transport
*
* Returns : 0 on success
*/
int __exit fcoe_sw_exit(void)
{
- /* dettach the transport */
fc_release_transport(scsi_transport_fcoe_sw);
- fcoe_transport_unregister(&fcoe_sw_transport);
return 0;
}
#include <scsi/libfc.h>
#include <scsi/fc_frame.h>
#include <scsi/libfcoe.h>
-#include <scsi/fc_transport_fcoe.h>
static int debug_fcoe;
rc = -ENODEV;
goto out_putdev;
}
- /* pass to transport */
- rc = fcoe_transport_release(netdev);
+ rc = fcoe_sw_destroy(netdev);
if (rc) {
- printk(KERN_ERR "fcoe: fcoe_transport_release(%s) failed\n",
+ printk(KERN_ERR "fcoe: fcoe_sw_destroy(%s) failed\n",
netdev->name);
rc = -EIO;
goto out_putdev;
}
fcoe_ethdrv_get(netdev);
- /* pass to transport */
- rc = fcoe_transport_attach(netdev);
+ rc = fcoe_sw_create(netdev);
if (rc) {
- printk(KERN_ERR "fcoe: fcoe_transport_attach(%s) failed\n",
+ printk(KERN_ERR "fcoe: fcoe_sw_create(%s) failed\n",
netdev->name);
fcoe_ethdrv_put(netdev);
rc = -EIO;
/**
* fcoe_init() - fcoe module loading initialization
*
- * Initialization routine
- * 1. Will create fc transport software structure
- * 2. initialize the link list of port information structure
- *
* Returns 0 on success, negative on failure
*/
static int __init fcoe_init(void)
mod_timer(&fcoe_timer, jiffies + (10 * HZ));
- /* initiatlize the fcoe transport */
- fcoe_transport_init();
-
fcoe_sw_init();
return 0;
/* Stop the timer */
del_timer_sync(&fcoe_timer);
- /* releases the associated fcoe transport for each lport */
+ /* releases the associated fcoe hosts */
list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list)
- fcoe_transport_release(fc->real_dev);
+ fcoe_sw_destroy(fc->real_dev);
unregister_hotcpu_notifier(&fcoe_cpu_notifier);
/* remove sw trasnport */
fcoe_sw_exit();
-
- /* detach the transport */
- fcoe_transport_exit();
}
module_exit(fcoe_exit);
/* fcoe sw hba */
int __init fcoe_sw_init(void);
int __exit fcoe_sw_exit(void);
+int fcoe_sw_create(struct net_device *);
+int fcoe_sw_destroy(struct net_device *);
#endif /* _LIBFCOE_H */