Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271039
b: refs/heads/master
c: 8a5badf
h: refs/heads/master
i:
  271037: 17b1c5d
  271035: 1ce1350
  271031: 4f686b4
  271023: c28d650
  271007: 32c9f49
  270975: 3f8631d
v: v3
  • Loading branch information
Bhanu Prakash Gollapudi authored and James Bottomley committed Sep 17, 2011
1 parent 8fe9ebb commit 9491b77
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c780673cfb1e3d16d23f9808738539625d3b9363
refs/heads/master: 8a5badf1ea10c726b9cc04e52f91395b1248e034
1 change: 1 addition & 0 deletions trunk/drivers/scsi/bnx2fc/bnx2fc.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ struct bnx2fc_interface {
struct fcoe_ctlr ctlr;
u8 vlan_enabled;
int vlan_id;
bool enabled;
};

#define bnx2fc_from_ctlr(fip) container_of(fip, struct bnx2fc_interface, ctlr)
Expand Down
21 changes: 17 additions & 4 deletions trunk/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -865,8 +865,11 @@ static void bnx2fc_indicate_netevent(void *context, unsigned long event,
if (link_possible && !bnx2fc_link_ok(lport)) {
/* Reset max recv frame size to default */
fc_set_mfs(lport, BNX2FC_MFS);
printk(KERN_ERR "indicate_netevent: ctlr_link_up\n");
fcoe_ctlr_link_up(&interface->ctlr);
/*
* ctlr link up will only be handled during
* enable to avoid sending discovery solicitation
* on a stale vlan
*/
} else if (fcoe_ctlr_link_down(&interface->ctlr)) {
mutex_lock(&lport->lp_mutex);
list_for_each_entry(vport, &lport->vports, list)
Expand Down Expand Up @@ -1784,7 +1787,7 @@ static void bnx2fc_start_disc(struct bnx2fc_interface *interface)
lport = interface->ctlr.lp;
BNX2FC_HBA_DBG(lport, "calling fc_fabric_login\n");

if (!bnx2fc_link_ok(lport)) {
if (!bnx2fc_link_ok(lport) && interface->enabled) {
BNX2FC_HBA_DBG(lport, "ctlr_link_up\n");
fcoe_ctlr_link_up(&interface->ctlr);
fc_host_port_type(lport->host) = FC_PORTTYPE_NPORT;
Expand Down Expand Up @@ -1866,6 +1869,7 @@ static int bnx2fc_disable(struct net_device *netdev)
rc = -ENODEV;
printk(KERN_ERR PFX "bnx2fc_disable: interface or lport not found\n");
} else {
interface->enabled = false;
fcoe_ctlr_link_down(&interface->ctlr);
fcoe_clean_pending_queue(interface->ctlr.lp);
}
Expand All @@ -1888,8 +1892,10 @@ static int bnx2fc_enable(struct net_device *netdev)
if (!interface || !interface->ctlr.lp) {
rc = -ENODEV;
printk(KERN_ERR PFX "bnx2fc_enable: interface or lport not found\n");
} else if (!bnx2fc_link_ok(interface->ctlr.lp))
} else if (!bnx2fc_link_ok(interface->ctlr.lp)) {
fcoe_ctlr_link_up(&interface->ctlr);
interface->enabled = true;
}

mutex_unlock(&bnx2fc_dev_lock);
rtnl_unlock();
Expand Down Expand Up @@ -2002,8 +2008,15 @@ static int bnx2fc_create(struct net_device *netdev, enum fip_state fip_mode)
/* Make this master N_port */
interface->ctlr.lp = lport;

if (!bnx2fc_link_ok(lport)) {
fcoe_ctlr_link_up(&interface->ctlr);
fc_host_port_type(lport->host) = FC_PORTTYPE_NPORT;
set_bit(ADAPTER_STATE_READY, &interface->hba->adapter_state);
}

BNX2FC_HBA_DBG(lport, "create: START DISC\n");
bnx2fc_start_disc(interface);
interface->enabled = true;
/*
* Release from kref_init in bnx2fc_interface_setup, on success
* lport should be holding a reference taken in bnx2fc_if_create
Expand Down

0 comments on commit 9491b77

Please sign in to comment.