netxen: Add default and limit macros for ring sizes.
authorDhananjay Phadke <dhananjay@netxen.com>
Mon, 27 Jul 2009 18:08:00 +0000 (11:08 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jul 2009 18:15:24 +0000 (11:15 -0700)
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netxen/netxen_nic.h
drivers/net/netxen/netxen_nic_ethtool.c
drivers/net/netxen/netxen_nic_main.c

index 3a4cbd5dcbd92dfa840e215aeec3714951541bf0..e017827472ac16a6d14bc2e7d9003fe0b43f5124 100644 (file)
 #define RCV_RING_JUMBO 1
 #define RCV_RING_LRO   2
 
-#define MAX_CMD_DESCRIPTORS            4096
-#define MAX_RCV_DESCRIPTORS            16384
-#define MAX_CMD_DESCRIPTORS_HOST       1024
-#define MAX_RCV_DESCRIPTORS_1G         2048
-#define MAX_RCV_DESCRIPTORS_10G                4096
-#define MAX_JUMBO_RCV_DESCRIPTORS      1024
+#define MIN_CMD_DESCRIPTORS            64
+#define MIN_RCV_DESCRIPTORS            64
+#define MIN_JUMBO_DESCRIPTORS          32
+
+#define MAX_CMD_DESCRIPTORS            1024
+#define MAX_RCV_DESCRIPTORS_1G         4096
+#define MAX_RCV_DESCRIPTORS_10G                8192
+#define MAX_JUMBO_RCV_DESCRIPTORS_1G   512
+#define MAX_JUMBO_RCV_DESCRIPTORS_10G  1024
 #define MAX_LRO_RCV_DESCRIPTORS                8
+
+#define DEFAULT_RCV_DESCRIPTORS_1G     2048
+#define DEFAULT_RCV_DESCRIPTORS_10G    4096
+
 #define NETXEN_CTX_SIGNATURE   0xdee0
 #define NETXEN_CTX_SIGNATURE_V2        0x0002dee0
 #define NETXEN_CTX_RESET       0xbad0
index e16ea46c24b89bf89a685b260b45e01261823755..80d286db8eb47212550db915b739b9a3277766e1 100644 (file)
@@ -494,20 +494,21 @@ netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
 {
        struct netxen_adapter *adapter = netdev_priv(dev);
 
-       ring->rx_pending = 0;
-       ring->rx_jumbo_pending = 0;
-       ring->rx_pending += adapter->recv_ctx.
-               rds_rings[RCV_RING_NORMAL].num_desc;
-       ring->rx_jumbo_pending += adapter->recv_ctx.
-               rds_rings[RCV_RING_JUMBO].num_desc;
+       ring->rx_pending = adapter->num_rxd;
+       ring->rx_jumbo_pending = adapter->num_jumbo_rxd;
+       ring->rx_jumbo_pending += adapter->num_lro_rxd;
        ring->tx_pending = adapter->num_txd;
 
-       if (adapter->ahw.port_type == NETXEN_NIC_GBE)
+       if (adapter->ahw.port_type == NETXEN_NIC_GBE) {
                ring->rx_max_pending = MAX_RCV_DESCRIPTORS_1G;
-       else
+               ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS_1G;
+       } else {
                ring->rx_max_pending = MAX_RCV_DESCRIPTORS_10G;
-       ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST;
-       ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS;
+               ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS_10G;
+       }
+
+       ring->tx_max_pending = MAX_CMD_DESCRIPTORS;
+
        ring->rx_mini_max_pending = 0;
        ring->rx_mini_pending = 0;
 }
index 381bd8f027c06f94a01ec9625f574bbed907742d..1aa850a0b89579430264cd8c62b8b570147672af 100644 (file)
@@ -283,12 +283,16 @@ nx_update_dma_mask(struct netxen_adapter *adapter)
        return 0;
 }
 
-static void netxen_check_options(struct netxen_adapter *adapter)
+static void
+netxen_check_options(struct netxen_adapter *adapter)
 {
-       if (adapter->ahw.port_type == NETXEN_NIC_XGBE)
-               adapter->num_rxd = MAX_RCV_DESCRIPTORS_10G;
-       else if (adapter->ahw.port_type == NETXEN_NIC_GBE)
-               adapter->num_rxd = MAX_RCV_DESCRIPTORS_1G;
+       if (adapter->ahw.port_type == NETXEN_NIC_XGBE) {
+               adapter->num_rxd = DEFAULT_RCV_DESCRIPTORS_10G;
+               adapter->num_jumbo_rxd = MAX_JUMBO_RCV_DESCRIPTORS_10G;
+       } else if (adapter->ahw.port_type == NETXEN_NIC_GBE) {
+               adapter->num_rxd = DEFAULT_RCV_DESCRIPTORS_1G;
+               adapter->num_jumbo_rxd = MAX_JUMBO_RCV_DESCRIPTORS_1G;
+       }
 
        adapter->msix_supported = 0;
        if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
@@ -306,11 +310,15 @@ static void netxen_check_options(struct netxen_adapter *adapter)
                }
        }
 
-       adapter->num_txd = MAX_CMD_DESCRIPTORS_HOST;
-       adapter->num_jumbo_rxd = MAX_JUMBO_RCV_DESCRIPTORS;
-       adapter->num_lro_rxd = MAX_LRO_RCV_DESCRIPTORS;
+       adapter->num_txd = MAX_CMD_DESCRIPTORS;
 
-       return;
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
+               adapter->num_lro_rxd = MAX_LRO_RCV_DESCRIPTORS;
+               adapter->max_rds_rings = 3;
+       } else {
+               adapter->num_lro_rxd = 0;
+               adapter->max_rds_rings = 2;
+       }
 }
 
 static int
@@ -908,11 +916,6 @@ netxen_nic_attach(struct netxen_adapter *adapter)
                return -EIO;
        }
 
-       if (adapter->fw_major < 4)
-               adapter->max_rds_rings = 3;
-       else
-               adapter->max_rds_rings = 2;
-
        err = netxen_alloc_sw_resources(adapter);
        if (err) {
                printk(KERN_ERR "%s: Error in setting sw resources\n",
@@ -1923,8 +1926,6 @@ static struct pci_driver netxen_driver = {
 #endif
 };
 
-/* Driver Registration on NetXen card    */
-
 static int __init netxen_init_module(void)
 {
        printk(KERN_INFO "%s\n", netxen_nic_driver_string);