Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173679
b: refs/heads/master
c: 386309c
h: refs/heads/master
i:
  173677: 117eca5
  173675: 252b549
  173671: 72dc6dc
  173663: b9bc264
v: v3
  • Loading branch information
Joe Eykholt authored and James Bottomley committed Dec 4, 2009
1 parent 90c05f6 commit 5aeec60
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 18 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: e6d8a1b0b53a156979120dd0593c1867b8ea89d3
refs/heads/master: 386309ce927a308d7742a6fb24a536d3383fbd49
15 changes: 5 additions & 10 deletions trunk/drivers/scsi/fcoe/fcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -2247,15 +2247,12 @@ static void fcoe_flogi_resp(struct fc_seq *seq, struct fc_frame *fp, void *arg)
mac = fr_cb(fp)->granted_mac;
if (is_zero_ether_addr(mac)) {
/* pre-FIP */
mac = eth_hdr(&fp->skb)->h_source;
if (fcoe_ctlr_recv_flogi(fip, lport, fp, mac)) {
if (fcoe_ctlr_recv_flogi(fip, lport, fp)) {
fc_frame_free(fp);
return;
}
} else {
/* FIP, libfcoe has already seen it */
fip->update_mac(lport, fr_cb(fp)->granted_mac);
}
fcoe_update_src_mac(lport, mac);
done:
fc_lport_flogi_resp(seq, fp, lport);
}
Expand All @@ -2271,13 +2268,11 @@ static void fcoe_flogi_resp(struct fc_seq *seq, struct fc_frame *fp, void *arg)
*/
static void fcoe_logo_resp(struct fc_seq *seq, struct fc_frame *fp, void *arg)
{
struct fcoe_ctlr *fip = arg;
struct fc_exch *exch = fc_seq_exch(seq);
struct fc_lport *lport = exch->lp;
struct fc_lport *lport = arg;
static u8 zero_mac[ETH_ALEN] = { 0 };

if (!IS_ERR(fp))
fip->update_mac(lport, zero_mac);
fcoe_update_src_mac(lport, zero_mac);
fc_lport_logo_resp(seq, fp, lport);
}

Expand Down Expand Up @@ -2312,7 +2307,7 @@ static struct fc_seq *fcoe_elsct_send(struct fc_lport *lport, u32 did,
if (ntoh24(fh->fh_d_id) != FC_FID_FLOGI)
break;
return fc_elsct_send(lport, did, fp, op, fcoe_logo_resp,
fip, timeout);
lport, timeout);
}
return fc_elsct_send(lport, did, fp, op, resp, arg, timeout);
}
Expand Down
12 changes: 6 additions & 6 deletions trunk/drivers/scsi/fcoe/libfcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -1254,27 +1254,28 @@ static void fcoe_ctlr_recv_work(struct work_struct *recv_work)
}

/**
* fcoe_ctlr_recv_flogi() - Snoop pre-FIP receipt of FLOGI response or request
* fcoe_ctlr_recv_flogi() - Snoop pre-FIP receipt of FLOGI response
* @fip: The FCoE controller
* @fp: The FC frame to snoop
* @sa: Ethernet source MAC address from received FCoE frame
*
* Snoop potential response to FLOGI or even incoming FLOGI.
*
* The caller has checked that we are waiting for login as indicated
* by fip->flogi_oxid != FC_XID_UNKNOWN.
*
* The caller is responsible for freeing the frame.
* Fill in the granted_mac address.
*
* Return non-zero if the frame should not be delivered to libfc.
*/
int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *fip, struct fc_lport *lport,
struct fc_frame *fp, u8 *sa)
struct fc_frame *fp)
{
struct fc_frame_header *fh;
u8 op;
u8 mac[ETH_ALEN];
u8 *sa;

sa = eth_hdr(&fp->skb)->h_source;
fh = fc_frame_header_get(fp);
if (fh->fh_type != FC_TYPE_ELS)
return 0;
Expand Down Expand Up @@ -1305,9 +1306,8 @@ int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *fip, struct fc_lport *lport,
fip->map_dest = 0;
}
fip->flogi_oxid = FC_XID_UNKNOWN;
fc_fcoe_set_mac(mac, fh->fh_d_id);
fip->update_mac(lport, mac);
spin_unlock_bh(&fip->lock);
fc_fcoe_set_mac(fr_cb(fp)->granted_mac, fh->fh_d_id);
} else if (op == ELS_FLOGI && fh->fh_r_ctl == FC_RCTL_ELS_REQ && sa) {
/*
* Save source MAC for point-to-point responses.
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/scsi/libfcoe.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ int fcoe_ctlr_link_down(struct fcoe_ctlr *);
int fcoe_ctlr_els_send(struct fcoe_ctlr *, struct fc_lport *, struct sk_buff *);
void fcoe_ctlr_recv(struct fcoe_ctlr *, struct sk_buff *);
int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *, struct fc_lport *,
struct fc_frame *, u8 *);
struct fc_frame *);

/* libfcoe funcs */
u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int);
Expand Down

0 comments on commit 5aeec60

Please sign in to comment.