diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-11-03 14:49:16 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:01:18 -0500 |
commit | 386309ce927a308d7742a6fb24a536d3383fbd49 (patch) | |
tree | 4e8ddbb895e5bd837020896a1c2505ea8bc3159b /include/scsi | |
parent | e6d8a1b0b53a156979120dd0593c1867b8ea89d3 (diff) |
[SCSI] libfcoe: fcoe: simplify receive FLOGI response
There was a locking problem where the fip->lock was held during
the call to update_mac(). The rtnl_lock() must be taken before
the fip->lock, not the other way around. This fixes that.
Now that fcoe_ctlr_recv_flog() is called only from the response handler
to a FLOGI request, some checking can be eliminated. Instead of calling
update_mac(), just fill in the granted_mac address for the passed-in
frame (skb).
Eliminate the passed-in source MAC address since it is also in the skb.
Also, in fcoe, call fcoe_set_src_mac() directly instead of going thru
the fip function pointer. This will generate less code.
Then, since fip isn't needed for LOGO response, use lport as the arg.
Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/libfcoe.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h index e38ffa05dc26..3837872f1965 100644 --- a/include/scsi/libfcoe.h +++ b/include/scsi/libfcoe.h | |||
@@ -165,7 +165,7 @@ int fcoe_ctlr_link_down(struct fcoe_ctlr *); | |||
165 | int fcoe_ctlr_els_send(struct fcoe_ctlr *, struct fc_lport *, struct sk_buff *); | 165 | int fcoe_ctlr_els_send(struct fcoe_ctlr *, struct fc_lport *, struct sk_buff *); |
166 | void fcoe_ctlr_recv(struct fcoe_ctlr *, struct sk_buff *); | 166 | void fcoe_ctlr_recv(struct fcoe_ctlr *, struct sk_buff *); |
167 | int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *, struct fc_lport *, | 167 | int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *, struct fc_lport *, |
168 | struct fc_frame *, u8 *); | 168 | struct fc_frame *); |
169 | 169 | ||
170 | /* libfcoe funcs */ | 170 | /* libfcoe funcs */ |
171 | u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int); | 171 | u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int); |