Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[linux-2.6.git] / drivers / scsi / bnx2fc / bnx2fc_fcoe.c
index ba7ecb1..85bcc4b 100644 (file)
@@ -322,7 +322,7 @@ static int bnx2fc_xmit(struct fc_lport *lport, struct fc_frame *fp)
                        return -ENOMEM;
                }
                frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1];
-               cp = kmap_atomic(frag->page, KM_SKB_DATA_SOFTIRQ)
+               cp = kmap_atomic(skb_frag_page(frag), KM_SKB_DATA_SOFTIRQ)
                                + frag->page_offset;
        } else {
                cp = (struct fcoe_crc_eof *)skb_put(skb, tlen);
@@ -701,7 +701,7 @@ static void bnx2fc_link_speed_update(struct fc_lport *lport)
        struct net_device *netdev = interface->netdev;
        struct ethtool_cmd ecmd;
 
-       if (!dev_ethtool_get_settings(netdev, &ecmd)) {
+       if (!__ethtool_get_settings(netdev, &ecmd)) {
                lport->link_supported_speeds &=
                        ~(FC_PORTSPEED_1GBIT | FC_PORTSPEED_10GBIT);
                if (ecmd.supported & (SUPPORTED_1000baseT_Half |
@@ -1063,9 +1063,11 @@ static int bnx2fc_vport_create(struct fc_vport *vport, bool disabled)
                        "this interface\n");
                return -EIO;
        }
+       rtnl_lock();
        mutex_lock(&bnx2fc_dev_lock);
        vn_port = bnx2fc_if_create(interface, &vport->dev, 1);
        mutex_unlock(&bnx2fc_dev_lock);
+       rtnl_unlock();
 
        if (IS_ERR(vn_port)) {
                printk(KERN_ERR PFX "bnx2fc_vport_create (%s) failed\n",