Commit 1dd454d9 authored by Joe Eykholt's avatar Joe Eykholt Committed by James Bottomley

[SCSI] fcoe: config via separate create_vn2vn module parameter

Add module parameter create_vn2vn that behaves like the create
parameter except that the new instance is created in FIP vn2vn mode.

This can be replaced once we change create to allow modifying
per-instance attributes before starting the instance.
Signed-off-by: default avatarJoe Eykholt <jeykholt@cisco.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent cd229e42
...@@ -117,9 +117,14 @@ static void fcoe_recv_frame(struct sk_buff *skb); ...@@ -117,9 +117,14 @@ static void fcoe_recv_frame(struct sk_buff *skb);
static void fcoe_get_lesb(struct fc_lport *, struct fc_els_lesb *); static void fcoe_get_lesb(struct fc_lport *, struct fc_els_lesb *);
module_param_call(create, fcoe_create, NULL, NULL, S_IWUSR); module_param_call(create, fcoe_create, NULL, (void *)FIP_MODE_AUTO, S_IWUSR);
__MODULE_PARM_TYPE(create, "string"); __MODULE_PARM_TYPE(create, "string");
MODULE_PARM_DESC(create, " Creates fcoe instance on a ethernet interface"); MODULE_PARM_DESC(create, " Creates fcoe instance on a ethernet interface");
module_param_call(create_vn2vn, fcoe_create, NULL,
(void *)FIP_MODE_VN2VN, S_IWUSR);
__MODULE_PARM_TYPE(create_vn2vn, "string");
MODULE_PARM_DESC(create_vn2vn, " Creates a VN_node to VN_node FCoE instance "
"on an Ethernet interface");
module_param_call(destroy, fcoe_destroy, NULL, NULL, S_IWUSR); module_param_call(destroy, fcoe_destroy, NULL, NULL, S_IWUSR);
__MODULE_PARM_TYPE(destroy, "string"); __MODULE_PARM_TYPE(destroy, "string");
MODULE_PARM_DESC(destroy, " Destroys fcoe instance on a ethernet interface"); MODULE_PARM_DESC(destroy, " Destroys fcoe instance on a ethernet interface");
...@@ -341,10 +346,12 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe, ...@@ -341,10 +346,12 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe,
/** /**
* fcoe_interface_create() - Create a FCoE interface on a net device * fcoe_interface_create() - Create a FCoE interface on a net device
* @netdev: The net device to create the FCoE interface on * @netdev: The net device to create the FCoE interface on
* @fip_mode: The mode to use for FIP
* *
* Returns: pointer to a struct fcoe_interface or NULL on error * Returns: pointer to a struct fcoe_interface or NULL on error
*/ */
static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev) static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev,
enum fip_state fip_mode)
{ {
struct fcoe_interface *fcoe; struct fcoe_interface *fcoe;
int err; int err;
...@@ -361,7 +368,7 @@ static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev) ...@@ -361,7 +368,7 @@ static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev)
/* /*
* Initialize FIP. * Initialize FIP.
*/ */
fcoe_ctlr_init(&fcoe->ctlr, FIP_MODE_AUTO); fcoe_ctlr_init(&fcoe->ctlr, fip_mode);
fcoe->ctlr.send = fcoe_fip_send; fcoe->ctlr.send = fcoe_fip_send;
fcoe->ctlr.update_mac = fcoe_update_src_mac; fcoe->ctlr.update_mac = fcoe_update_src_mac;
fcoe->ctlr.get_src_addr = fcoe_get_src_mac; fcoe->ctlr.get_src_addr = fcoe_get_src_mac;
...@@ -2088,6 +2095,7 @@ static void fcoe_destroy_work(struct work_struct *work) ...@@ -2088,6 +2095,7 @@ static void fcoe_destroy_work(struct work_struct *work)
*/ */
static int fcoe_create(const char *buffer, struct kernel_param *kp) static int fcoe_create(const char *buffer, struct kernel_param *kp)
{ {
enum fip_state fip_mode = (enum fip_state)(long)kp->arg;
int rc; int rc;
struct fcoe_interface *fcoe; struct fcoe_interface *fcoe;
struct fc_lport *lport; struct fc_lport *lport;
...@@ -2129,7 +2137,7 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp) ...@@ -2129,7 +2137,7 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp)
goto out_putdev; goto out_putdev;
} }
fcoe = fcoe_interface_create(netdev); fcoe = fcoe_interface_create(netdev, fip_mode);
if (!fcoe) { if (!fcoe) {
rc = -ENOMEM; rc = -ENOMEM;
goto out_putdev; goto out_putdev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment