mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[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>
This commit is contained in:
parent
e6d8a1b0b5
commit
386309ce92
3 changed files with 12 additions and 17 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue