IB/mlx4: Add IPoIB LSO support
[pandora-kernel.git] / drivers / net / mlx4 / main.c
index 478b3ba..7cfbe75 100644 (file)
@@ -71,7 +71,7 @@ MODULE_PARM_DESC(msi_x, "attempt to use MSI-X if nonzero");
 
 #endif /* CONFIG_PCI_MSI */
 
-static const char mlx4_version[] __devinitdata =
+static char mlx4_version[] __devinitdata =
        DRV_NAME ": Mellanox ConnectX core driver v"
        DRV_VERSION " (" DRV_RELDATE ")\n";
 
@@ -85,7 +85,7 @@ static struct mlx4_profile default_profile = {
        .num_mtt        = 1 << 20,
 };
 
-static int __devinit mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
+static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
 {
        int err;
        int i;
@@ -159,11 +159,12 @@ static int __devinit mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev
        dev->caps.page_size_cap      = ~(u32) (dev_cap->min_page_sz - 1);
        dev->caps.flags              = dev_cap->flags;
        dev->caps.stat_rate_support  = dev_cap->stat_rate_support;
+       dev->caps.max_gso_sz         = dev_cap->max_gso_sz;
 
        return 0;
 }
 
-static int __devinit mlx4_load_fw(struct mlx4_dev *dev)
+static int mlx4_load_fw(struct mlx4_dev *dev)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
        int err;
@@ -197,8 +198,8 @@ err_free:
        return err;
 }
 
-static int __devinit mlx4_init_cmpt_table(struct mlx4_dev *dev, u64 cmpt_base,
-                                         int cmpt_entry_sz)
+static int mlx4_init_cmpt_table(struct mlx4_dev *dev, u64 cmpt_base,
+                               int cmpt_entry_sz)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
        int err;
@@ -256,10 +257,8 @@ err:
        return err;
 }
 
-static int __devinit mlx4_init_icm(struct mlx4_dev *dev,
-                                  struct mlx4_dev_cap *dev_cap,
-                                  struct mlx4_init_hca_param *init_hca,
-                                  u64 icm_size)
+static int mlx4_init_icm(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap,
+                        struct mlx4_init_hca_param *init_hca, u64 icm_size)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
        u64 aux_pages;
@@ -481,7 +480,7 @@ static void mlx4_close_hca(struct mlx4_dev *dev)
        mlx4_free_icm(dev, mlx4_priv(dev)->fw.fw_icm, 0);
 }
 
-static int __devinit mlx4_init_hca(struct mlx4_dev *dev)
+static int mlx4_init_hca(struct mlx4_dev *dev)
 {
        struct mlx4_priv          *priv = mlx4_priv(dev);
        struct mlx4_adapter        adapter;
@@ -536,7 +535,6 @@ static int __devinit mlx4_init_hca(struct mlx4_dev *dev)
        }
 
        priv->eq_table.inta_pin = adapter.inta_pin;
-       dev->rev_id             = adapter.revision_id;
        memcpy(dev->board_id, adapter.board_id, sizeof dev->board_id);
 
        return 0;
@@ -554,7 +552,7 @@ err_stop_fw:
        return err;
 }
 
-static int __devinit mlx4_setup_hca(struct mlx4_dev *dev)
+static int mlx4_setup_hca(struct mlx4_dev *dev)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
        int err;
@@ -690,7 +688,7 @@ err_uar_table_free:
        return err;
 }
 
-static void __devinit mlx4_enable_msi_x(struct mlx4_dev *dev)
+static void mlx4_enable_msi_x(struct mlx4_dev *dev)
 {
        struct mlx4_priv *priv = mlx4_priv(dev);
        struct msix_entry entries[MLX4_NUM_EQ];
@@ -721,19 +719,12 @@ no_msi:
                priv->eq_table.eq[i].irq = dev->pdev->irq;
 }
 
-static int __devinit mlx4_init_one(struct pci_dev *pdev,
-                                  const struct pci_device_id *id)
+static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
 {
-       static int mlx4_version_printed;
        struct mlx4_priv *priv;
        struct mlx4_dev *dev;
        int err;
 
-       if (!mlx4_version_printed) {
-               printk(KERN_INFO "%s", mlx4_version);
-               ++mlx4_version_printed;
-       }
-
        printk(KERN_INFO PFX "Initializing %s\n",
               pci_name(pdev));
 
@@ -883,7 +874,20 @@ err_disable_pdev:
        return err;
 }
 
-static void __devexit mlx4_remove_one(struct pci_dev *pdev)
+static int __devinit mlx4_init_one(struct pci_dev *pdev,
+                                  const struct pci_device_id *id)
+{
+       static int mlx4_version_printed;
+
+       if (!mlx4_version_printed) {
+               printk(KERN_INFO "%s", mlx4_version);
+               ++mlx4_version_printed;
+       }
+
+       return __mlx4_init_one(pdev, id);
+}
+
+static void mlx4_remove_one(struct pci_dev *pdev)
 {
        struct mlx4_dev  *dev  = pci_get_drvdata(pdev);
        struct mlx4_priv *priv = mlx4_priv(dev);
@@ -924,7 +928,7 @@ static void __devexit mlx4_remove_one(struct pci_dev *pdev)
 int mlx4_restart_one(struct pci_dev *pdev)
 {
        mlx4_remove_one(pdev);
-       return mlx4_init_one(pdev, NULL);
+       return __mlx4_init_one(pdev, NULL);
 }
 
 static struct pci_device_id mlx4_pci_table[] = {