Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 261691
b: refs/heads/master
c: 4519123
h: refs/heads/master
i:
  261689: 481e3f7
  261687: 765adf6
v: v3
  • Loading branch information
Krishna Gudipati authored and James Bottomley committed Jul 27, 2011
1 parent cf33ce3 commit 2f97b64
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a46bd300e191d5a1a7367a799a9f5268c5e6aafd
refs/heads/master: 45191236b179877d259a40e13c5144628d4df37f
54 changes: 54 additions & 0 deletions trunk/drivers/scsi/bfa/bfad_bsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2181,6 +2181,53 @@ bfad_iocmd_ethboot_query(struct bfad_s *bfad, void *cmd)
return 0;
}

int
bfad_iocmd_cfg_trunk(struct bfad_s *bfad, void *cmd, unsigned int v_cmd)
{
struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd;
struct bfa_fcport_s *fcport = BFA_FCPORT_MOD(&bfad->bfa);
struct bfa_fcport_trunk_s *trunk = &fcport->trunk;
unsigned long flags;

spin_lock_irqsave(&bfad->bfad_lock, flags);

if (v_cmd == IOCMD_TRUNK_ENABLE) {
trunk->attr.state = BFA_TRUNK_OFFLINE;
bfa_fcport_disable(&bfad->bfa);
fcport->cfg.trunked = BFA_TRUE;
} else if (v_cmd == IOCMD_TRUNK_DISABLE) {
trunk->attr.state = BFA_TRUNK_DISABLED;
bfa_fcport_disable(&bfad->bfa);
fcport->cfg.trunked = BFA_FALSE;
}

if (!bfa_fcport_is_disabled(&bfad->bfa))
bfa_fcport_enable(&bfad->bfa);

spin_unlock_irqrestore(&bfad->bfad_lock, flags);

iocmd->status = BFA_STATUS_OK;
return 0;
}

int
bfad_iocmd_trunk_get_attr(struct bfad_s *bfad, void *cmd)
{
struct bfa_bsg_trunk_attr_s *iocmd = (struct bfa_bsg_trunk_attr_s *)cmd;
struct bfa_fcport_s *fcport = BFA_FCPORT_MOD(&bfad->bfa);
struct bfa_fcport_trunk_s *trunk = &fcport->trunk;
unsigned long flags;

spin_lock_irqsave(&bfad->bfad_lock, flags);
memcpy((void *)&iocmd->attr, (void *)&trunk->attr,
sizeof(struct bfa_trunk_attr_s));
iocmd->attr.port_id = bfa_lps_get_base_pid(&bfad->bfa);
spin_unlock_irqrestore(&bfad->bfad_lock, flags);

iocmd->status = BFA_STATUS_OK;
return 0;
}

static int
bfad_iocmd_handler(struct bfad_s *bfad, unsigned int cmd, void *iocmd,
unsigned int payload_len)
Expand Down Expand Up @@ -2470,6 +2517,13 @@ bfad_iocmd_handler(struct bfad_s *bfad, unsigned int cmd, void *iocmd,
case IOCMD_ETHBOOT_QUERY:
rc = bfad_iocmd_ethboot_query(bfad, iocmd);
break;
case IOCMD_TRUNK_ENABLE:
case IOCMD_TRUNK_DISABLE:
rc = bfad_iocmd_cfg_trunk(bfad, iocmd, cmd);
break;
case IOCMD_TRUNK_GET_ATTR:
rc = bfad_iocmd_trunk_get_attr(bfad, iocmd);
break;
default:
rc = -EINVAL;
break;
Expand Down
10 changes: 10 additions & 0 deletions trunk/drivers/scsi/bfa/bfad_bsg.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,9 @@ enum {
IOCMD_PREBOOT_QUERY,
IOCMD_ETHBOOT_CFG,
IOCMD_ETHBOOT_QUERY,
IOCMD_TRUNK_ENABLE,
IOCMD_TRUNK_DISABLE,
IOCMD_TRUNK_GET_ATTR,
};

struct bfa_bsg_gen_s {
Expand Down Expand Up @@ -656,6 +659,13 @@ struct bfa_bsg_ethboot_s {
struct bfa_ethboot_cfg_s cfg;
};

struct bfa_bsg_trunk_attr_s {
bfa_status_t status;
u16 bfad_num;
u16 rsvd;
struct bfa_trunk_attr_s attr;
};

struct bfa_bsg_fcpt_s {
bfa_status_t status;
u16 vf_id;
Expand Down

0 comments on commit 2f97b64

Please sign in to comment.