]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qlge: driver update to v1.0.0.30
authorMaxim Uvarov <maxim.uvarov@oracle.com>
Thu, 10 May 2012 00:48:52 +0000 (17:48 -0700)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Fri, 11 May 2012 00:08:46 +0000 (17:08 -0700)
Orabug: 14045380
Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
drivers/net/qlge/qlge.h
drivers/net/qlge/qlge_main.c

index ca306fd5f588727cf235b692e8147d4a916ef164..7c642857d51f3851ad04bc46eea52c0c38856f14 100644 (file)
@@ -16,7 +16,7 @@
  */
 #define DRV_NAME       "qlge"
 #define DRV_STRING     "QLogic 10 Gigabit PCI-E Ethernet Driver "
-#define DRV_VERSION    "v1.00.00.29.00.00-01"
+#define DRV_VERSION    "v1.00.00.30"
 
 #define WQ_ADDR_ALIGN  0x3     /* 4 byte alignment */
 
 
 
 #define TX_DESC_PER_IOCB 8
-/* The maximum number of frags we handle is based
- * on PAGE_SIZE...
- */
-#if (PAGE_SHIFT == 12) || (PAGE_SHIFT == 13)   /* 4k & 8k pages */
+
+#if ((MAX_SKB_FRAGS - TX_DESC_PER_IOCB) + 2) > 0
 #define TX_DESC_PER_OAL ((MAX_SKB_FRAGS - TX_DESC_PER_IOCB) + 2)
 #else /* all other page sizes */
 #define TX_DESC_PER_OAL 0
@@ -1351,7 +1349,7 @@ struct tx_ring_desc {
        struct ob_mac_iocb_req *queue_entry;
        u32 index;
        struct oal oal;
-       struct map_list map[MAX_SKB_FRAGS + 1];
+       struct map_list map[MAX_SKB_FRAGS + 2];
        int map_cnt;
        struct tx_ring_desc *next;
 };
index 6b4ff970972b493bd0c326bdef2dd0f52b133b32..a42e2cc100de82ccc467354034d110fe309f7fa1 100644 (file)
@@ -374,13 +374,6 @@ static int ql_set_mac_addr_reg(struct ql_adapter *qdev, u8 *addr, u32 type,
                        u32 lower =
                            (addr[2] << 24) | (addr[3] << 16) | (addr[4] << 8) |
                            (addr[5]);
-
-                       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                                    "Adding %s address %pM at index %d in the CAM.\n",
-                                    type == MAC_ADDR_TYPE_MULTI_MAC ?
-                                    "MULTICAST" : "UNICAST",
-                                    addr, index);
-
                        status =
                            ql_wait_reg_rdy(qdev,
                                MAC_ADDR_IDX, MAC_ADDR_MW, 0);
@@ -429,12 +422,6 @@ static int ql_set_mac_addr_reg(struct ql_adapter *qdev, u8 *addr, u32 type,
                         * addressing. It's either MAC_ADDR_E on or off.
                         * That's bit-27 we're talking about.
                         */
-                       netif_info(qdev, ifup, qdev->ndev,
-                                  "%s VLAN ID %d %s the CAM.\n",
-                                  enable_bit ? "Adding" : "Removing",
-                                  index,
-                                  enable_bit ? "to" : "from");
-
                        status =
                            ql_wait_reg_rdy(qdev,
                                MAC_ADDR_IDX, MAC_ADDR_MW, 0);
@@ -534,28 +521,6 @@ static int ql_set_routing_reg(struct ql_adapter *qdev, u32 index, u32 mask,
        int status = -EINVAL; /* Return error if no mask match. */
        u32 value = 0;
 
-       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                    "%s %s mask %s the routing reg.\n",
-                    enable ? "Adding" : "Removing",
-                    index == RT_IDX_ALL_ERR_SLOT ? "MAC ERROR/ALL ERROR" :
-                    index == RT_IDX_IP_CSUM_ERR_SLOT ? "IP CSUM ERROR" :
-                    index == RT_IDX_TCP_UDP_CSUM_ERR_SLOT ? "TCP/UDP CSUM ERROR" :
-                    index == RT_IDX_BCAST_SLOT ? "BROADCAST" :
-                    index == RT_IDX_MCAST_MATCH_SLOT ? "MULTICAST MATCH" :
-                    index == RT_IDX_ALLMULTI_SLOT ? "ALL MULTICAST MATCH" :
-                    index == RT_IDX_UNUSED6_SLOT ? "UNUSED6" :
-                    index == RT_IDX_UNUSED7_SLOT ? "UNUSED7" :
-                    index == RT_IDX_RSS_MATCH_SLOT ? "RSS ALL/IPV4 MATCH" :
-                    index == RT_IDX_RSS_IPV6_SLOT ? "RSS IPV6" :
-                    index == RT_IDX_RSS_TCP4_SLOT ? "RSS TCP4" :
-                    index == RT_IDX_RSS_TCP6_SLOT ? "RSS TCP6" :
-                    index == RT_IDX_CAM_HIT_SLOT ? "CAM HIT" :
-                    index == RT_IDX_UNUSED013 ? "UNUSED13" :
-                    index == RT_IDX_UNUSED014 ? "UNUSED14" :
-                    index == RT_IDX_PROMISCUOUS_SLOT ? "PROMISCUOUS" :
-                    "(Bad index != RT_IDX)",
-                    enable ? "to" : "from");
-
        switch (mask) {
        case RT_IDX_CAM_HIT:
                {
@@ -1177,14 +1142,16 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
        int i;
 
        while (rx_ring->lbq_free_cnt > 32) {
-               for (i = 0; i < 16; i++) {
+               for (i = (rx_ring->lbq_clean_idx % 16); i < 16; i++) {
                        netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev,
                                     "lbq: try cleaning clean_idx = %d.\n",
                                     clean_idx);
                        lbq_desc = &rx_ring->lbq[clean_idx];
                        if (ql_get_next_chunk(qdev, rx_ring, lbq_desc)) {
+                               rx_ring->lbq_clean_idx = clean_idx;
                                netif_err(qdev, ifup, qdev->ndev,
-                                         "Could not get a page chunk.\n");
+                                               "Could not get a page chunk, i=%d, clean_idx =%d .\n",
+                                               i, clean_idx);
                                return;
                        }
 
@@ -1229,7 +1196,7 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
        int i;
 
        while (rx_ring->sbq_free_cnt > 16) {
-               for (i = 0; i < 16; i++) {
+               for (i = (rx_ring->sbq_clean_idx % 16); i < 16; i++) {
                        sbq_desc = &rx_ring->sbq[clean_idx];
                        netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev,
                                     "sbq: try cleaning clean_idx = %d.\n",
@@ -1582,13 +1549,14 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
                } else if ((ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_U) &&
                                (ib_mac_rsp->flags3 & IB_MAC_IOCB_RSP_V4)) {
                        /* Unfragmented ipv4 UDP frame. */
-                       struct iphdr *iph = (struct iphdr *) skb->data;
+                       struct iphdr *iph =
+                               (struct iphdr *) ((u8 *)addr + ETH_HLEN);
                        if (!(iph->frag_off &
                                cpu_to_be16(IP_MF|IP_OFFSET))) {
                                skb->ip_summed = CHECKSUM_UNNECESSARY;
                                netif_printk(qdev, rx_status, KERN_DEBUG,
                                             qdev->ndev,
-                                            "TCP checksum done!\n");
+                                            "UDP checksum done!\n");
                        }
                }
        }
@@ -1701,7 +1669,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
                                skb->ip_summed = CHECKSUM_UNNECESSARY;
                                netif_printk(qdev, rx_status, KERN_DEBUG,
                                             qdev->ndev,
-                                            "TCP checksum done!\n");
+                                            "UDP checksum done!\n");
                        }
                }
        }
@@ -2340,13 +2308,9 @@ static void qlge_vlan_rx_register(struct net_device *ndev, struct vlan_group *gr
 
        qdev->vlgrp = grp;
        if (grp) {
-               netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                            "Turning on VLAN in NIC_RCV_CFG.\n");
                ql_write32(qdev, NIC_RCV_CFG, NIC_RCV_CFG_VLAN_MASK |
                           NIC_RCV_CFG_VLAN_MATCH_AND_NON);
        } else {
-               netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                            "Turning off VLAN in NIC_RCV_CFG.\n");
                ql_write32(qdev, NIC_RCV_CFG, NIC_RCV_CFG_VLAN_MASK);
        }
 }
@@ -3158,8 +3122,6 @@ static int ql_start_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring)
                netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
                             "Invalid rx_ring->type = %d.\n", rx_ring->type);
        }
-       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                    "Initializing rx work queue.\n");
        err = ql_write_cfg(qdev, cqicb, sizeof(struct cqicb),
                           CFG_LCQ, rx_ring->cq_id);
        if (err) {
@@ -3212,8 +3174,6 @@ static int ql_start_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
                netif_err(qdev, ifup, qdev->ndev, "Failed to load tx_ring.\n");
                return err;
        }
-       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                    "Successfully loaded WQICB.\n");
        return err;
 }
 
@@ -3463,12 +3423,8 @@ static void ql_free_irq(struct ql_adapter *qdev)
                        if (test_bit(QL_MSIX_ENABLED, &qdev->flags)) {
                                free_irq(qdev->msi_x_entry[i].vector,
                                         &qdev->rx_ring[i]);
-                               netif_printk(qdev, ifdown, KERN_DEBUG, qdev->ndev,
-                                            "freeing msix interrupt %d.\n", i);
                        } else {
                                free_irq(qdev->pdev->irq, &qdev->rx_ring[0]);
-                               netif_printk(qdev, ifdown, KERN_DEBUG, qdev->ndev,
-                                            "freeing msi interrupt %d.\n", i);
                        }
                }
        }
@@ -3497,17 +3453,6 @@ static int ql_request_irq(struct ql_adapter *qdev)
                                          "Failed request for MSIX interrupt %d.\n",
                                          i);
                                goto err_irq;
-                       } else {
-                               netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                                            "Hooked intr %d, queue type %s, with name %s.\n",
-                                            i,
-                                            qdev->rx_ring[i].type == DEFAULT_Q ?
-                                            "DEFAULT_Q" :
-                                            qdev->rx_ring[i].type == TX_Q ?
-                                            "TX_Q" :
-                                            qdev->rx_ring[i].type == RX_Q ?
-                                            "RX_Q" : "",
-                                            intr_context->name);
                        }
                } else {
                        netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
@@ -3577,15 +3522,11 @@ static int ql_start_rss(struct ql_adapter *qdev)
        memcpy((void *)&ricb->ipv6_hash_key[0], init_hash_seed, 40);
        memcpy((void *)&ricb->ipv4_hash_key[0], init_hash_seed, 16);
 
-       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev, "Initializing RSS.\n");
-
        status = ql_write_cfg(qdev, ricb, sizeof(*ricb), CFG_LR, 0);
        if (status) {
                netif_err(qdev, ifup, qdev->ndev, "Failed to load RICB.\n");
                return status;
        }
-       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                    "Successfully loaded RICB.\n");
        return status;
 }
 
@@ -3792,11 +3733,8 @@ static int ql_adapter_initialize(struct ql_adapter *qdev)
        }
 
        /* Start NAPI for the RSS queues. */
-       for (i = 0; i < qdev->rss_ring_count; i++) {
-               netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                            "Enabling NAPI for rx_ring[%d].\n", i);
+       for (i = 0; i < qdev->rss_ring_count; i++)
                napi_enable(&qdev->rx_ring[i].napi);
-       }
 
        return status;
 }
@@ -4096,10 +4034,6 @@ static int ql_configure_rings(struct ql_adapter *qdev)
                        rx_ring->lbq_size =
                            rx_ring->lbq_len * sizeof(__le64);
                        rx_ring->lbq_buf_size = (u16)lbq_buf_len;
-                       netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
-                                    "lbq_buf_size %d, order = %d\n",
-                                    rx_ring->lbq_buf_size,
-                                    qdev->lbq_buf_order);
                        rx_ring->sbq_len = NUM_SMALL_BUFFERS;
                        rx_ring->sbq_size =
                            rx_ring->sbq_len * sizeof(__le64);