]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/qlcnic/qlcnic_init.c
qlcnic: change all P3 references to P3P
[net-next-2.6.git] / drivers / net / qlcnic / qlcnic_init.c
index 10cebb15ccd485d6ff4b27fa6bffca1c11dd537f..0d180c6e41fe1f08fd6658e45bd57e0ba0d23f72 100644 (file)
@@ -259,14 +259,14 @@ int qlcnic_alloc_sw_resources(struct qlcnic_adapter *adapter)
                switch (ring) {
                case RCV_RING_NORMAL:
                        rds_ring->num_desc = adapter->num_rxd;
-                       rds_ring->dma_size = QLCNIC_P3_RX_BUF_MAX_LEN;
+                       rds_ring->dma_size = QLCNIC_P3P_RX_BUF_MAX_LEN;
                        rds_ring->skb_size = rds_ring->dma_size + NET_IP_ALIGN;
                        break;
 
                case RCV_RING_JUMBO:
                        rds_ring->num_desc = adapter->num_jumbo_rxd;
                        rds_ring->dma_size =
-                               QLCNIC_P3_RX_JUMBO_BUF_MAX_LEN;
+                               QLCNIC_P3P_RX_JUMBO_BUF_MAX_LEN;
 
                        if (adapter->capabilities & QLCNIC_FW_CAPABILITY_HW_LRO)
                                rds_ring->dma_size += QLCNIC_LRO_BUFFER_EXTRA;
@@ -1015,8 +1015,6 @@ qlcnic_check_fw_hearbeat(struct qlcnic_adapter *adapter)
 int
 qlcnic_need_fw_reset(struct qlcnic_adapter *adapter)
 {
-       u32 val, version, major, minor, build;
-
        if (qlcnic_check_fw_hearbeat(adapter)) {
                qlcnic_rom_lock_recovery(adapter);
                return 1;
@@ -1025,20 +1023,8 @@ qlcnic_need_fw_reset(struct qlcnic_adapter *adapter)
        if (adapter->need_fw_reset)
                return 1;
 
-       /* check if we have got newer or different file firmware */
-       if (adapter->fw) {
-
-               val = qlcnic_get_fw_version(adapter);
-
-               version = QLCNIC_DECODE_VERSION(val);
-
-               major = QLCRD32(adapter, QLCNIC_FW_VERSION_MAJOR);
-               minor = QLCRD32(adapter, QLCNIC_FW_VERSION_MINOR);
-               build = QLCRD32(adapter, QLCNIC_FW_VERSION_SUB);
-
-               if (version > QLCNIC_VERSION_CODE(major, minor, build))
-                       return 1;
-       }
+       if (adapter->fw)
+               return 1;
 
        return 0;
 }
@@ -1174,18 +1160,6 @@ qlcnic_validate_firmware(struct qlcnic_adapter *adapter)
                return -EINVAL;
        }
 
-       /* check if flashed firmware is newer */
-       if (qlcnic_rom_fast_read(adapter,
-                       QLCNIC_FW_VERSION_OFFSET, (int *)&val))
-               return -EIO;
-
-       val = QLCNIC_DECODE_VERSION(val);
-       if (val > ver) {
-               dev_info(&pdev->dev, "%s: firmware is older than flash\n",
-                               fw_name[fw_type]);
-               return -EINVAL;
-       }
-
        QLCWR32(adapter, QLCNIC_CAM_RAM(0x1fc), QLCNIC_BDINFO_MAGIC);
        return 0;
 }
@@ -1329,7 +1303,7 @@ qlcnic_alloc_rx_skb(struct qlcnic_adapter *adapter,
                return -ENOMEM;
        }
 
-       skb_reserve(skb, 2);
+       skb_reserve(skb, NET_IP_ALIGN);
 
        dma = pci_map_single(pdev, skb->data,
                        rds_ring->dma_size, PCI_DMA_FROMDEVICE);
@@ -1444,8 +1418,6 @@ qlcnic_process_rcv(struct qlcnic_adapter *adapter,
        if (pkt_offset)
                skb_pull(skb, pkt_offset);
 
-       skb->truesize = skb->len + sizeof(struct sk_buff);
-
        if (unlikely(qlcnic_check_rx_tagging(adapter, skb, &vid))) {
                adapter->stats.rxdropped++;
                dev_kfree_skb(skb);
@@ -1455,7 +1427,7 @@ qlcnic_process_rcv(struct qlcnic_adapter *adapter,
        skb->protocol = eth_type_trans(skb, netdev);
 
        if ((vid != 0xffff) && adapter->vlgrp)
-               vlan_hwaccel_receive_skb(skb, adapter->vlgrp, vid);
+               vlan_gro_receive(&sds_ring->napi, adapter->vlgrp, vid, skb);
        else
                napi_gro_receive(&sds_ring->napi, skb);
 
@@ -1517,8 +1489,6 @@ qlcnic_process_lro(struct qlcnic_adapter *adapter,
 
        skb_put(skb, lro_length + data_offset);
 
-       skb->truesize = skb->len + sizeof(struct sk_buff) + skb_headroom(skb);
-
        skb_pull(skb, l2_hdr_offset);
 
        if (unlikely(qlcnic_check_rx_tagging(adapter, skb, &vid))) {
@@ -1723,6 +1693,18 @@ qlcnic_post_rx_buffers_nodb(struct qlcnic_adapter *adapter,
        spin_unlock(&rds_ring->lock);
 }
 
+static void dump_skb(struct sk_buff *skb)
+{
+       int i;
+       unsigned char *data = skb->data;
+
+       for (i = 0; i < skb->len; i++) {
+               printk("%02x ", data[i]);
+               if ((i & 0x0f) == 8)
+                       printk("\n");
+       }
+}
+
 static struct qlcnic_rx_buffer *
 qlcnic_process_rcv_diag(struct qlcnic_adapter *adapter,
                struct qlcnic_host_sds_ring *sds_ring,
@@ -1753,15 +1735,18 @@ qlcnic_process_rcv_diag(struct qlcnic_adapter *adapter,
        if (!skb)
                return buffer;
 
-       skb_put(skb, rds_ring->skb_size);
+       if (length > rds_ring->skb_size)
+               skb_put(skb, rds_ring->skb_size);
+       else
+               skb_put(skb, length);
 
        if (pkt_offset)
                skb_pull(skb, pkt_offset);
 
-       skb->truesize = skb->len + sizeof(struct sk_buff);
-
        if (!qlcnic_check_loopback_buff(skb->data))
                adapter->diag_cnt++;
+       else
+               dump_skb(skb);
 
        dev_kfree_skb_any(skb);
        adapter->stats.rx_pkts++;