s2io: Using static const generally increases object text and decreases data size...
[cascardo/linux.git] / drivers / net / s2io.c
index ecc25aa..9a1e32f 100644 (file)
 #include "s2io.h"
 #include "s2io-regs.h"
 
-#define DRV_VERSION "2.0.26.27"
+#define DRV_VERSION "2.0.26.28"
 
 /* S2io Driver name & version. */
-static char s2io_driver_name[] = "Neterion";
-static char s2io_driver_version[] = DRV_VERSION;
+static const char s2io_driver_name[] = "Neterion";
+static const char s2io_driver_version[] = DRV_VERSION;
 
-static int rxd_size[2] = {32, 48};
-static int rxd_count[2] = {127, 85};
+static const int rxd_size[2] = {32, 48};
+static const int rxd_count[2] = {127, 85};
 
 static inline int RXD_IS_UP2DT(struct RxD_t *rxdp)
 {
@@ -3598,10 +3598,12 @@ static int s2io_set_swapper(struct s2io_nic *sp)
        val64 = readq(&bar0->pif_rd_swapper_fb);
        if (val64 != 0x0123456789ABCDEFULL) {
                int i = 0;
-               u64 value[] = { 0xC30000C3C30000C3ULL,   /* FE=1, SE=1 */
-                               0x8100008181000081ULL,  /* FE=1, SE=0 */
-                               0x4200004242000042ULL,  /* FE=0, SE=1 */
-                               0};                     /* FE=0, SE=0 */
+               static const u64 value[] = {
+                       0xC30000C3C30000C3ULL,  /* FE=1, SE=1 */
+                       0x8100008181000081ULL,  /* FE=1, SE=0 */
+                       0x4200004242000042ULL,  /* FE=0, SE=1 */
+                       0                       /* FE=0, SE=0 */
+               };
 
                while (i < 4) {
                        writeq(value[i], &bar0->swapper_ctrl);
@@ -3627,10 +3629,12 @@ static int s2io_set_swapper(struct s2io_nic *sp)
 
        if (val64 != valt) {
                int i = 0;
-               u64 value[] = { 0x00C3C30000C3C300ULL,  /* FE=1, SE=1 */
-                               0x0081810000818100ULL,  /* FE=1, SE=0 */
-                               0x0042420000424200ULL,  /* FE=0, SE=1 */
-                               0};                     /* FE=0, SE=0 */
+               static const u64 value[] = {
+                       0x00C3C30000C3C300ULL,  /* FE=1, SE=1 */
+                       0x0081810000818100ULL,  /* FE=1, SE=0 */
+                       0x0042420000424200ULL,  /* FE=0, SE=1 */
+                       0                       /* FE=0, SE=0 */
+               };
 
                while (i < 4) {
                        writeq((value[i] | valr), &bar0->swapper_ctrl);
@@ -5568,30 +5572,27 @@ static void s2io_ethtool_gringparam(struct net_device *dev,
        struct s2io_nic *sp = netdev_priv(dev);
        int i, tx_desc_count = 0, rx_desc_count = 0;
 
-       if (sp->rxd_mode == RXD_MODE_1)
+       if (sp->rxd_mode == RXD_MODE_1) {
                ering->rx_max_pending = MAX_RX_DESC_1;
-       else if (sp->rxd_mode == RXD_MODE_3B)
+               ering->rx_jumbo_max_pending = MAX_RX_DESC_1;
+       } else {
                ering->rx_max_pending = MAX_RX_DESC_2;
+               ering->rx_jumbo_max_pending = MAX_RX_DESC_2;
+       }
 
+       ering->rx_mini_max_pending = 0;
        ering->tx_max_pending = MAX_TX_DESC;
-       for (i = 0 ; i < sp->config.tx_fifo_num ; i++)
-               tx_desc_count += sp->config.tx_cfg[i].fifo_len;
 
-       DBG_PRINT(INFO_DBG, "max txds: %d\n", sp->config.max_txds);
-       ering->tx_pending = tx_desc_count;
-       rx_desc_count = 0;
-       for (i = 0 ; i < sp->config.rx_ring_num ; i++)
+       for (i = 0; i < sp->config.rx_ring_num; i++)
                rx_desc_count += sp->config.rx_cfg[i].num_rxd;
-
        ering->rx_pending = rx_desc_count;
-
-       ering->rx_mini_max_pending = 0;
-       ering->rx_mini_pending = 0;
-       if (sp->rxd_mode == RXD_MODE_1)
-               ering->rx_jumbo_max_pending = MAX_RX_DESC_1;
-       else if (sp->rxd_mode == RXD_MODE_3B)
-               ering->rx_jumbo_max_pending = MAX_RX_DESC_2;
        ering->rx_jumbo_pending = rx_desc_count;
+       ering->rx_mini_pending = 0;
+
+       for (i = 0; i < sp->config.tx_fifo_num; i++)
+               tx_desc_count += sp->config.tx_cfg[i].fifo_len;
+       ering->tx_pending = tx_desc_count;
+       DBG_PRINT(INFO_DBG, "max txds: %d\n", sp->config.max_txds);
 }
 
 /**
@@ -7692,6 +7693,8 @@ static void s2io_init_pci(struct s2io_nic *sp)
 static int s2io_verify_parm(struct pci_dev *pdev, u8 *dev_intr_type,
                            u8 *dev_multiq)
 {
+       int i;
+
        if ((tx_fifo_num > MAX_TX_FIFOS) || (tx_fifo_num < 1)) {
                DBG_PRINT(ERR_DBG, "Requested number of tx fifos "
                          "(%d) not supported\n", tx_fifo_num);
@@ -7750,6 +7753,15 @@ static int s2io_verify_parm(struct pci_dev *pdev, u8 *dev_intr_type,
                DBG_PRINT(ERR_DBG, "Defaulting to 1-buffer mode\n");
                rx_ring_mode = 1;
        }
+
+       for (i = 0; i < MAX_RX_RINGS; i++)
+               if (rx_ring_sz[i] > MAX_RX_BLOCKS_PER_RING) {
+                       DBG_PRINT(ERR_DBG, "Requested rx ring size not "
+                                 "supported\nDefaulting to %d\n",
+                                 MAX_RX_BLOCKS_PER_RING);
+                       rx_ring_sz[i] = MAX_RX_BLOCKS_PER_RING;
+               }
+
        return SUCCESS;
 }
 
@@ -8321,8 +8333,7 @@ mem_alloc_failed:
 
 static void __devexit s2io_rem_nic(struct pci_dev *pdev)
 {
-       struct net_device *dev =
-               (struct net_device *)pci_get_drvdata(pdev);
+       struct net_device *dev = pci_get_drvdata(pdev);
        struct s2io_nic *sp;
 
        if (dev == NULL) {