.. | .. |
---|
319 | 319 | { |
---|
320 | 320 | struct fcoe_fcf *sel; |
---|
321 | 321 | struct fcoe_fcf *fcf; |
---|
| 322 | + unsigned long flags; |
---|
322 | 323 | |
---|
323 | 324 | mutex_lock(&fip->ctlr_mutex); |
---|
324 | | - spin_lock_bh(&fip->ctlr_lock); |
---|
| 325 | + spin_lock_irqsave(&fip->ctlr_lock, flags); |
---|
325 | 326 | |
---|
326 | 327 | kfree_skb(fip->flogi_req); |
---|
327 | 328 | fip->flogi_req = NULL; |
---|
328 | 329 | list_for_each_entry(fcf, &fip->fcfs, list) |
---|
329 | 330 | fcf->flogi_sent = 0; |
---|
330 | 331 | |
---|
331 | | - spin_unlock_bh(&fip->ctlr_lock); |
---|
| 332 | + spin_unlock_irqrestore(&fip->ctlr_lock, flags); |
---|
332 | 333 | sel = fip->sel_fcf; |
---|
333 | 334 | |
---|
334 | 335 | if (sel && ether_addr_equal(sel->fcf_mac, fip->dest_addr)) |
---|
.. | .. |
---|
699 | 700 | { |
---|
700 | 701 | struct fc_frame *fp; |
---|
701 | 702 | struct fc_frame_header *fh; |
---|
| 703 | + unsigned long flags; |
---|
702 | 704 | u16 old_xid; |
---|
703 | 705 | u8 op; |
---|
704 | 706 | u8 mac[ETH_ALEN]; |
---|
.. | .. |
---|
732 | 734 | op = FIP_DT_FLOGI; |
---|
733 | 735 | if (fip->mode == FIP_MODE_VN2VN) |
---|
734 | 736 | break; |
---|
735 | | - spin_lock_bh(&fip->ctlr_lock); |
---|
| 737 | + spin_lock_irqsave(&fip->ctlr_lock, flags); |
---|
736 | 738 | kfree_skb(fip->flogi_req); |
---|
737 | 739 | fip->flogi_req = skb; |
---|
738 | 740 | fip->flogi_req_send = 1; |
---|
739 | | - spin_unlock_bh(&fip->ctlr_lock); |
---|
| 741 | + spin_unlock_irqrestore(&fip->ctlr_lock, flags); |
---|
740 | 742 | schedule_work(&fip->timer_work); |
---|
741 | 743 | return -EINPROGRESS; |
---|
742 | 744 | case ELS_FDISC: |
---|
.. | .. |
---|
1713 | 1715 | static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip) |
---|
1714 | 1716 | { |
---|
1715 | 1717 | struct fcoe_fcf *fcf; |
---|
| 1718 | + unsigned long flags; |
---|
1716 | 1719 | int error; |
---|
1717 | 1720 | |
---|
1718 | 1721 | mutex_lock(&fip->ctlr_mutex); |
---|
1719 | | - spin_lock_bh(&fip->ctlr_lock); |
---|
| 1722 | + spin_lock_irqsave(&fip->ctlr_lock, flags); |
---|
1720 | 1723 | LIBFCOE_FIP_DBG(fip, "re-sending FLOGI - reselect\n"); |
---|
1721 | 1724 | fcf = fcoe_ctlr_select(fip); |
---|
1722 | 1725 | if (!fcf || fcf->flogi_sent) { |
---|
.. | .. |
---|
1727 | 1730 | fcoe_ctlr_solicit(fip, NULL); |
---|
1728 | 1731 | error = fcoe_ctlr_flogi_send_locked(fip); |
---|
1729 | 1732 | } |
---|
1730 | | - spin_unlock_bh(&fip->ctlr_lock); |
---|
| 1733 | + spin_unlock_irqrestore(&fip->ctlr_lock, flags); |
---|
1731 | 1734 | mutex_unlock(&fip->ctlr_mutex); |
---|
1732 | 1735 | return error; |
---|
1733 | 1736 | } |
---|
.. | .. |
---|
1744 | 1747 | static void fcoe_ctlr_flogi_send(struct fcoe_ctlr *fip) |
---|
1745 | 1748 | { |
---|
1746 | 1749 | struct fcoe_fcf *fcf; |
---|
| 1750 | + unsigned long flags; |
---|
1747 | 1751 | |
---|
1748 | | - spin_lock_bh(&fip->ctlr_lock); |
---|
| 1752 | + spin_lock_irqsave(&fip->ctlr_lock, flags); |
---|
1749 | 1753 | fcf = fip->sel_fcf; |
---|
1750 | 1754 | if (!fcf || !fip->flogi_req_send) |
---|
1751 | 1755 | goto unlock; |
---|
.. | .. |
---|
1772 | 1776 | } else /* XXX */ |
---|
1773 | 1777 | LIBFCOE_FIP_DBG(fip, "No FCF selected - defer send\n"); |
---|
1774 | 1778 | unlock: |
---|
1775 | | - spin_unlock_bh(&fip->ctlr_lock); |
---|
| 1779 | + spin_unlock_irqrestore(&fip->ctlr_lock, flags); |
---|
1776 | 1780 | } |
---|
1777 | 1781 | |
---|
1778 | 1782 | /** |
---|