Add code to detect the VN2VN flag in create requests and configure
a created fcoe controller appropriately.

Signed-off-by: Mark Rustad <[email protected]>
Tested-by: Jack Morgan <[email protected]>
---

 fcoemon.c            |   30 ++++++++++++++++++++++++++++--
 include/fcoe_utils.h |    2 ++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/fcoemon.c b/fcoemon.c
index 1d869b3..982c4a9 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -182,7 +182,18 @@ static const struct libfcoe_interface_template 
*libfcoe_control;
 
 static enum fcoe_status fcm_module_create(struct fcm_netif *ff, struct 
fcoe_port *p)
 {
-       enum fcoe_status rc = fcm_fcoe_if_action(FCOE_CREATE, p->ifname);
+       enum fcoe_status rc;
+
+       switch (p->mode) {
+       case FCOE_MODE_VN2VN:
+               rc = fcm_fcoe_if_action(FCOE_CREATE_VN2VN, p->ifname);
+               break;
+
+       case FCOE_MODE_FABRIC:
+       default:
+               rc = fcm_fcoe_if_action(FCOE_CREATE, p->ifname);
+               break;
+       }
        if (rc)
                return rc;
 
@@ -227,6 +238,17 @@ static enum fcoe_status fcm_bus_enable(struct fcm_netif 
*ff,
        return fcm_write_str_to_ctlr_attr(p->ctlr, FCOE_CTLR_ATTR_ENABLED, "1");
 }
 
+static int fcm_bus_configure(struct fcm_netif *ff, struct fcoe_port *p)
+{
+       int rc;
+
+       if (p->mode != FCOE_MODE_VN2VN)
+               return 0;
+
+       rc = fcm_write_str_to_ctlr_attr(p->ctlr, FCOE_CTLR_ATTR_MODE, "vn2vn");
+       return rc;
+}
+
 static enum fcoe_status fcm_bus_create(struct fcm_netif *ff,
                                       struct fcoe_port *p)
 {
@@ -256,7 +278,11 @@ static enum fcoe_status fcm_bus_create(struct fcm_netif 
*ff,
                return ENOSYSFS;
        }
 
-       return fcm_bus_enable(ff, p);
+       rc = fcm_bus_configure(ff, p);
+       if (!rc)
+               rc = fcm_bus_enable(ff, p);
+
+       return rc;
 }
 
 static enum fcoe_status fcm_bus_destroy(struct fcm_netif *ff,
diff --git a/include/fcoe_utils.h b/include/fcoe_utils.h
index 531acab..5fb875d 100644
--- a/include/fcoe_utils.h
+++ b/include/fcoe_utils.h
@@ -43,6 +43,7 @@
 
 #define SYSFS_FCOE   SYSFS_MOUNT "/module/libfcoe/parameters" /* legacy */
 #define FCOE_CREATE  SYSFS_FCOE  "/create"  /* legacy */
+#define FCOE_CREATE_VN2VN  SYSFS_FCOE  "/create_vn2vn"  /* legacy */
 #define FCOE_DESTROY SYSFS_FCOE  "/destroy" /* legacy */
 #define FCOE_ENABLE  SYSFS_FCOE  "/enable"  /* legacy */
 #define FCOE_DISABLE SYSFS_FCOE  "/disable" /* legacy */
@@ -50,6 +51,7 @@
 #define FCOE_BUS_CREATE        SYSFS_FCOE_BUS "/ctlr_create"
 #define FCOE_BUS_DESTROY       SYSFS_FCOE_BUS "/ctlr_destroy"
 #define FCOE_CTLR_ATTR_ENABLED "/enabled"
+#define FCOE_CTLR_ATTR_MODE    "/mode"
 
 #define FCHOSTBUFLEN 64
 

_______________________________________________
fcoe-devel mailing list
[email protected]
http://lists.open-fcoe.org/mailman/listinfo/fcoe-devel

Reply via email to