diff options
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/fcoe/Makefile | 3 | ||||
-rw-r--r-- | drivers/scsi/fcoe/fcoe_sw.c | 37 | ||||
-rw-r--r-- | drivers/scsi/fcoe/libfcoe.c | 25 |
3 files changed, 11 insertions, 54 deletions
diff --git a/drivers/scsi/fcoe/Makefile b/drivers/scsi/fcoe/Makefile index b78da06d7c0e..e950adfe68c6 100644 --- a/drivers/scsi/fcoe/Makefile +++ b/drivers/scsi/fcoe/Makefile | |||
@@ -4,5 +4,4 @@ obj-$(CONFIG_FCOE) += fcoe.o | |||
4 | 4 | ||
5 | fcoe-y := \ | 5 | fcoe-y := \ |
6 | libfcoe.o \ | 6 | libfcoe.o \ |
7 | fcoe_sw.o \ | 7 | fcoe_sw.o |
8 | fc_transport_fcoe.o | ||
diff --git a/drivers/scsi/fcoe/fcoe_sw.c b/drivers/scsi/fcoe/fcoe_sw.c index a6753903fd40..f0602205f06f 100644 --- a/drivers/scsi/fcoe/fcoe_sw.c +++ b/drivers/scsi/fcoe/fcoe_sw.c | |||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | #include <scsi/libfc.h> | 37 | #include <scsi/libfc.h> |
38 | #include <scsi/libfcoe.h> | 38 | #include <scsi/libfcoe.h> |
39 | #include <scsi/fc_transport_fcoe.h> | ||
40 | 39 | ||
41 | #define FCOE_SW_VERSION "0.1" | 40 | #define FCOE_SW_VERSION "0.1" |
42 | #define FCOE_SW_NAME "fcoesw" | 41 | #define FCOE_SW_NAME "fcoesw" |
@@ -302,7 +301,7 @@ static inline int fcoe_sw_em_config(struct fc_lport *lp) | |||
302 | * | 301 | * |
303 | * Returns: 0 if link is OK for use by FCoE. | 302 | * Returns: 0 if link is OK for use by FCoE. |
304 | */ | 303 | */ |
305 | static int fcoe_sw_destroy(struct net_device *netdev) | 304 | int fcoe_sw_destroy(struct net_device *netdev) |
306 | { | 305 | { |
307 | struct fc_lport *lp = NULL; | 306 | struct fc_lport *lp = NULL; |
308 | struct fcoe_softc *fc; | 307 | struct fcoe_softc *fc; |
@@ -415,7 +414,7 @@ static struct libfc_function_template fcoe_sw_libfc_fcn_templ = { | |||
415 | * | 414 | * |
416 | * Returns : 0 on success | 415 | * Returns : 0 on success |
417 | */ | 416 | */ |
418 | static int fcoe_sw_create(struct net_device *netdev) | 417 | int fcoe_sw_create(struct net_device *netdev) |
419 | { | 418 | { |
420 | int rc; | 419 | int rc; |
421 | struct fc_lport *lp = NULL; | 420 | struct fc_lport *lp = NULL; |
@@ -494,28 +493,7 @@ out_host_put: | |||
494 | } | 493 | } |
495 | 494 | ||
496 | /** | 495 | /** |
497 | * fcoe_sw_match() - The FCoE SW transport match function | 496 | * fcoe_sw_init() - attach to scsi transport |
498 | * | ||
499 | * Returns : false always | ||
500 | */ | ||
501 | static bool fcoe_sw_match(struct net_device *netdev) | ||
502 | { | ||
503 | /* FIXME - for sw transport, always return false */ | ||
504 | return false; | ||
505 | } | ||
506 | |||
507 | /* the sw hba fcoe transport */ | ||
508 | struct fcoe_transport fcoe_sw_transport = { | ||
509 | .name = "fcoesw", | ||
510 | .create = fcoe_sw_create, | ||
511 | .destroy = fcoe_sw_destroy, | ||
512 | .match = fcoe_sw_match, | ||
513 | .vendor = 0x0, | ||
514 | .device = 0xffff, | ||
515 | }; | ||
516 | |||
517 | /** | ||
518 | * fcoe_sw_init() - Registers fcoe_sw_transport | ||
519 | * | 497 | * |
520 | * Returns : 0 on success | 498 | * Returns : 0 on success |
521 | */ | 499 | */ |
@@ -530,23 +508,16 @@ int __init fcoe_sw_init(void) | |||
530 | return -ENODEV; | 508 | return -ENODEV; |
531 | } | 509 | } |
532 | 510 | ||
533 | mutex_init(&fcoe_sw_transport.devlock); | ||
534 | INIT_LIST_HEAD(&fcoe_sw_transport.devlist); | ||
535 | |||
536 | /* register sw transport */ | ||
537 | fcoe_transport_register(&fcoe_sw_transport); | ||
538 | return 0; | 511 | return 0; |
539 | } | 512 | } |
540 | 513 | ||
541 | /** | 514 | /** |
542 | * fcoe_sw_exit() - Unregisters fcoe_sw_transport | 515 | * fcoe_sw_exit() - detach from scsi transport |
543 | * | 516 | * |
544 | * Returns : 0 on success | 517 | * Returns : 0 on success |
545 | */ | 518 | */ |
546 | int __exit fcoe_sw_exit(void) | 519 | int __exit fcoe_sw_exit(void) |
547 | { | 520 | { |
548 | /* dettach the transport */ | ||
549 | fc_release_transport(scsi_transport_fcoe_sw); | 521 | fc_release_transport(scsi_transport_fcoe_sw); |
550 | fcoe_transport_unregister(&fcoe_sw_transport); | ||
551 | return 0; | 522 | return 0; |
552 | } | 523 | } |
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c index 951d2448ad61..334db95f36af 100644 --- a/drivers/scsi/fcoe/libfcoe.c +++ b/drivers/scsi/fcoe/libfcoe.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <scsi/libfc.h> | 44 | #include <scsi/libfc.h> |
45 | #include <scsi/fc_frame.h> | 45 | #include <scsi/fc_frame.h> |
46 | #include <scsi/libfcoe.h> | 46 | #include <scsi/libfcoe.h> |
47 | #include <scsi/fc_transport_fcoe.h> | ||
48 | 47 | ||
49 | static int debug_fcoe; | 48 | static int debug_fcoe; |
50 | 49 | ||
@@ -1081,10 +1080,9 @@ static int fcoe_destroy(const char *buffer, struct kernel_param *kp) | |||
1081 | rc = -ENODEV; | 1080 | rc = -ENODEV; |
1082 | goto out_putdev; | 1081 | goto out_putdev; |
1083 | } | 1082 | } |
1084 | /* pass to transport */ | 1083 | rc = fcoe_sw_destroy(netdev); |
1085 | rc = fcoe_transport_release(netdev); | ||
1086 | if (rc) { | 1084 | if (rc) { |
1087 | printk(KERN_ERR "fcoe: fcoe_transport_release(%s) failed\n", | 1085 | printk(KERN_ERR "fcoe: fcoe_sw_destroy(%s) failed\n", |
1088 | netdev->name); | 1086 | netdev->name); |
1089 | rc = -EIO; | 1087 | rc = -EIO; |
1090 | goto out_putdev; | 1088 | goto out_putdev; |
@@ -1121,10 +1119,9 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp) | |||
1121 | } | 1119 | } |
1122 | fcoe_ethdrv_get(netdev); | 1120 | fcoe_ethdrv_get(netdev); |
1123 | 1121 | ||
1124 | /* pass to transport */ | 1122 | rc = fcoe_sw_create(netdev); |
1125 | rc = fcoe_transport_attach(netdev); | ||
1126 | if (rc) { | 1123 | if (rc) { |
1127 | printk(KERN_ERR "fcoe: fcoe_transport_attach(%s) failed\n", | 1124 | printk(KERN_ERR "fcoe: fcoe_sw_create(%s) failed\n", |
1128 | netdev->name); | 1125 | netdev->name); |
1129 | fcoe_ethdrv_put(netdev); | 1126 | fcoe_ethdrv_put(netdev); |
1130 | rc = -EIO; | 1127 | rc = -EIO; |
@@ -1429,10 +1426,6 @@ EXPORT_SYMBOL_GPL(fcoe_libfc_config); | |||
1429 | /** | 1426 | /** |
1430 | * fcoe_init() - fcoe module loading initialization | 1427 | * fcoe_init() - fcoe module loading initialization |
1431 | * | 1428 | * |
1432 | * Initialization routine | ||
1433 | * 1. Will create fc transport software structure | ||
1434 | * 2. initialize the link list of port information structure | ||
1435 | * | ||
1436 | * Returns 0 on success, negative on failure | 1429 | * Returns 0 on success, negative on failure |
1437 | */ | 1430 | */ |
1438 | static int __init fcoe_init(void) | 1431 | static int __init fcoe_init(void) |
@@ -1464,9 +1457,6 @@ static int __init fcoe_init(void) | |||
1464 | 1457 | ||
1465 | mod_timer(&fcoe_timer, jiffies + (10 * HZ)); | 1458 | mod_timer(&fcoe_timer, jiffies + (10 * HZ)); |
1466 | 1459 | ||
1467 | /* initiatlize the fcoe transport */ | ||
1468 | fcoe_transport_init(); | ||
1469 | |||
1470 | fcoe_sw_init(); | 1460 | fcoe_sw_init(); |
1471 | 1461 | ||
1472 | return 0; | 1462 | return 0; |
@@ -1495,9 +1485,9 @@ static void __exit fcoe_exit(void) | |||
1495 | /* Stop the timer */ | 1485 | /* Stop the timer */ |
1496 | del_timer_sync(&fcoe_timer); | 1486 | del_timer_sync(&fcoe_timer); |
1497 | 1487 | ||
1498 | /* releases the associated fcoe transport for each lport */ | 1488 | /* releases the associated fcoe hosts */ |
1499 | list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list) | 1489 | list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list) |
1500 | fcoe_transport_release(fc->real_dev); | 1490 | fcoe_sw_destroy(fc->real_dev); |
1501 | 1491 | ||
1502 | unregister_hotcpu_notifier(&fcoe_cpu_notifier); | 1492 | unregister_hotcpu_notifier(&fcoe_cpu_notifier); |
1503 | 1493 | ||
@@ -1507,8 +1497,5 @@ static void __exit fcoe_exit(void) | |||
1507 | 1497 | ||
1508 | /* remove sw trasnport */ | 1498 | /* remove sw trasnport */ |
1509 | fcoe_sw_exit(); | 1499 | fcoe_sw_exit(); |
1510 | |||
1511 | /* detach the transport */ | ||
1512 | fcoe_transport_exit(); | ||
1513 | } | 1500 | } |
1514 | module_exit(fcoe_exit); | 1501 | module_exit(fcoe_exit); |