BNX2X: PCI conversions
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 4 Feb 2015 18:41:32 +0000 (13:41 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 Mar 2015 16:59:08 +0000 (11:59 -0500)
Not sure what to do with the power type - that'll probably just be ignored
later.  Likewise, there are still some issues with msi related functions.

kern/drivers/net/bnx2x/akaros_compat.h
kern/drivers/net/bnx2x/bnx2x.h
kern/drivers/net/bnx2x/bnx2x_cmn.c
kern/drivers/net/bnx2x/bnx2x_cmn.h
kern/drivers/net/bnx2x/bnx2x_main.c
kern/drivers/net/bnx2x/bnx2x_sriov.c
kern/drivers/net/bnx2x/bnx2x_sriov.h
scripts/spatch/linux/WANTS [new file with mode: 0644]
scripts/spatch/linux/scalar.cocci

index 3477d5d..dc92159 100644 (file)
@@ -23,6 +23,7 @@
 
 #define __rcu
 typedef unsigned long dma_addr_t;
+typedef int pci_power_t;
 
 #define DEFINE_SEMAPHORE(name)  \
     struct semaphore name = SEMAPHORE_INITIALIZER_IRQSAVE(name, 1)
@@ -36,4 +37,48 @@ typedef unsigned long dma_addr_t;
 #define down_timeout(sem, timeout) ({sem_down(sem); 0;})
 
 
+/* I'd like to spatch all of the pci methods, but I don't know how to do the
+ * reads.  Since we're not doing the reads, then no sense doing the writes. */
+static inline int pci_read_config_byte(struct pci_device *dev, uint32_t off,
+                                       uint8_t *val)
+{
+       *val = pcidev_read8(dev, off);
+       return 0;
+}
+                                       
+static inline int pci_read_config_word(struct pci_device *dev, uint32_t off,
+                                       uint16_t *val)
+{
+       *val = pcidev_read16(dev, off);
+       return 0;
+}
+                                       
+static inline int pci_read_config_dword(struct pci_device *dev, uint32_t off,
+                                        uint32_t *val)
+{
+       *val = pcidev_read32(dev, off);
+       return 0;
+}
+                                       
+static inline int pci_write_config_byte(struct pci_device *dev, uint32_t off,
+                                        uint8_t val)
+{
+       pcidev_write8(dev, off, val);
+       return 0;
+}
+
+static inline int pci_write_config_word(struct pci_device *dev, uint32_t off,
+                                        uint16_t val)
+{
+       pcidev_write16(dev, off, val);
+       return 0;
+}
+
+static inline int pci_write_config_dword(struct pci_device *dev, uint32_t off,
+                                         uint32_t val)
+{
+       pcidev_write32(dev, off, val);
+       return 0;
+}
+
 #endif /* ROS_KERN_AKAROS_COMPAT_H */
index dea6dbe..c1f9377 100644 (file)
@@ -1492,7 +1492,7 @@ struct bnx2x {
 #endif /* CONFIG_BNX2X_SRIOV */
 
        struct net_device       *dev;
-       struct pci_dev          *pdev;
+       struct pci_device               *pdev;
 
        const struct iro        *iro_arr;
 #define IRO (bp->iro_arr)
@@ -2155,7 +2155,7 @@ uint32_t bnx2x_flr_clnup_poll_count(struct bnx2x *bp);
 void bnx2x_tx_hw_flushed(struct bnx2x *bp, uint32_t poll_count);
 int bnx2x_send_final_clnup(struct bnx2x *bp, uint8_t clnup_func,
                           uint32_t poll_cnt);
-uint8_t bnx2x_is_pcie_pending(struct pci_dev *dev);
+uint8_t bnx2x_is_pcie_pending(struct pci_device *dev);
 int bnx2x_flr_clnup_poll_hw_counter(struct bnx2x *bp, uint32_t reg,
                                    char *msg, uint32_t poll_cnt);
 
index 072de1b..cc3c0be 100644 (file)
@@ -4881,7 +4881,7 @@ void bnx2x_tx_timeout(struct net_device *dev)
        bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_TX_TIMEOUT, 0);
 }
 
-int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
+int bnx2x_suspend(struct pci_device *pdev, pm_message_t state)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp;
@@ -4912,7 +4912,7 @@ int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
        return 0;
 }
 
-int bnx2x_resume(struct pci_dev *pdev)
+int bnx2x_resume(struct pci_device *pdev)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp;
index f6a0048..84e7882 100644 (file)
@@ -534,8 +534,8 @@ int bnx2x_change_mac_addr(struct net_device *dev, void *p);
 int bnx2x_tx_int(struct bnx2x *bp, struct bnx2x_fp_txdata *txdata);
 
 /* suspend/resume callbacks */
-int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state);
-int bnx2x_resume(struct pci_dev *pdev);
+int bnx2x_suspend(struct pci_device *pdev, pm_message_t state);
+int bnx2x_resume(struct pci_device *pdev);
 
 /* Release IRQ vectors */
 void bnx2x_free_irq(struct bnx2x *bp);
index d29d563..8ac60a0 100644 (file)
@@ -1369,7 +1369,7 @@ int bnx2x_send_final_clnup(struct bnx2x *bp, uint8_t clnup_func,
        return ret;
 }
 
-uint8_t bnx2x_is_pcie_pending(struct pci_dev *dev)
+uint8_t bnx2x_is_pcie_pending(struct pci_device *dev)
 {
        uint16_t status;
 
@@ -8980,7 +8980,7 @@ uint32_t bnx2x_send_unload_req(struct bnx2x *bp, int unload_mode)
        else if (bp->wol) {
                uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
                uint8_t *mac_addr = bp->dev->dev_addr;
-               struct pci_dev *pdev = bp->pdev;
+               struct pci_device *pdev = bp->pdev;
                uint32_t val;
                uint16_t pmc;
 
@@ -10379,7 +10379,7 @@ static int bnx2x_prev_mark_path(struct bnx2x *bp, bool after_undi)
 
 static int bnx2x_do_flr(struct bnx2x *bp)
 {
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
 
        if (CHIP_IS_E1x(bp)) {
                BNX2X_DEV_INFO("FLR not supported in E1/E1H\n");
@@ -12586,7 +12586,7 @@ static void bnx2x_disable_pcie_error_reporting(struct bnx2x *bp)
        }
 }
 
-static int bnx2x_init_dev(struct bnx2x *bp, struct pci_dev *pdev,
+static int bnx2x_init_dev(struct bnx2x *bp, struct pci_device *pdev,
                          struct net_device *dev, unsigned long board_type)
 {
        int rc;
@@ -13058,7 +13058,7 @@ static int bnx2x_set_qm_cid_count(struct bnx2x *bp)
  * @dev:       pci device
  *
  */
-static int bnx2x_get_num_non_def_sbs(struct pci_dev *pdev, int cnic_cnt)
+static int bnx2x_get_num_non_def_sbs(struct pci_device *pdev, int cnic_cnt)
 {
        int index;
        uint16_t control = 0;
@@ -13320,7 +13320,7 @@ void bnx2x_register_phc(struct bnx2x *bp)
        }
 }
 
-static int bnx2x_init_one(struct pci_dev *pdev,
+static int bnx2x_init_one(struct pci_device *pdev,
                                    const struct pci_device_id *ent)
 {
        struct net_device *dev = NULL;
@@ -13514,7 +13514,7 @@ init_one_exit:
        return rc;
 }
 
-static void __bnx2x_remove(struct pci_dev *pdev,
+static void __bnx2x_remove(struct pci_device *pdev,
                           struct net_device *dev,
                           struct bnx2x *bp,
                           bool remove_netdev)
@@ -13609,7 +13609,7 @@ static void __bnx2x_remove(struct pci_dev *pdev,
        }
 }
 
-static void bnx2x_remove_one(struct pci_dev *pdev)
+static void bnx2x_remove_one(struct pci_device *pdev)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp;
@@ -13663,7 +13663,7 @@ static int bnx2x_eeh_nic_unload(struct bnx2x *bp)
  * This function is called after a PCI bus error affecting
  * this device has been detected.
  */
-static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev,
+static pci_ers_result_t bnx2x_io_error_detected(struct pci_device *pdev,
                                                pci_channel_state_t state)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
@@ -13699,7 +13699,7 @@ static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev,
  *
  * Restart the card from scratch, as if from a cold-boot.
  */
-static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev)
+static pci_ers_result_t bnx2x_io_slot_reset(struct pci_device *pdev)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp = netdev_priv(dev);
@@ -13781,7 +13781,7 @@ static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev)
  * This callback is called when the error recovery driver tells us that
  * its OK to resume normal operation.
  */
-static void bnx2x_io_resume(struct pci_dev *pdev)
+static void bnx2x_io_resume(struct pci_device *pdev)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp = netdev_priv(dev);
@@ -13810,7 +13810,7 @@ static const struct pci_error_handlers bnx2x_err_handler = {
        .resume         = bnx2x_io_resume,
 };
 
-static void bnx2x_shutdown(struct pci_dev *pdev)
+static void bnx2x_shutdown(struct pci_device *pdev)
 {
        struct net_device *dev = pci_get_drvdata(pdev);
        struct bnx2x *bp;
index 51a4e21..3918496 100644 (file)
@@ -825,7 +825,7 @@ static void bnx2x_vf_enable_traffic(struct bnx2x *bp, struct bnx2x_virtf *vf)
 
 static uint8_t bnx2x_vf_is_pcie_pending(struct bnx2x *bp, uint8_t abs_vfid)
 {
-       struct pci_dev *dev;
+       struct pci_device *dev;
        struct bnx2x_virtf *vf = bnx2x_vf_by_abs_fid(bp, abs_vfid);
 
        if (!vf)
@@ -1091,7 +1091,7 @@ void bnx2x_iov_init_dmae(struct bnx2x *bp)
 
 static int bnx2x_vf_bus(struct bnx2x *bp, int vfid)
 {
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
        struct bnx2x_sriov *iov = &bp->vfdb->sriov;
 
        return dev->bus->number + ((dev->devfn + iov->offset +
@@ -1100,7 +1100,7 @@ static int bnx2x_vf_bus(struct bnx2x *bp, int vfid)
 
 static int bnx2x_vf_devfn(struct bnx2x *bp, int vfid)
 {
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
        struct bnx2x_sriov *iov = &bp->vfdb->sriov;
 
        return (dev->devfn + iov->offset + iov->stride * vfid) & 0xff;
@@ -1109,7 +1109,7 @@ static int bnx2x_vf_devfn(struct bnx2x *bp, int vfid)
 static void bnx2x_vf_set_bars(struct bnx2x *bp, struct bnx2x_virtf *vf)
 {
        int i, n;
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
        struct bnx2x_sriov *iov = &bp->vfdb->sriov;
 
        for (i = 0, n = 0; i < PCI_SRIOV_NUM_BARS; i += 2, n++) {
@@ -1122,7 +1122,7 @@ static void bnx2x_vf_set_bars(struct bnx2x *bp, struct bnx2x_virtf *vf)
        }
 }
 
-static int bnx2x_ari_enabled(struct pci_dev *dev)
+static int bnx2x_ari_enabled(struct pci_device *dev)
 {
        return dev->bus->self && dev->bus->self->ari_enabled;
 }
@@ -1168,7 +1168,7 @@ static void __bnx2x_iov_free_vfdb(struct bnx2x *bp)
 static int bnx2x_sriov_pci_cfg_info(struct bnx2x *bp, struct bnx2x_sriov *iov)
 {
        int pos;
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
 
        pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_SRIOV);
        if (!pos) {
@@ -1224,7 +1224,7 @@ int bnx2x_iov_init_one(struct bnx2x *bp, int int_mode_param,
 {
        int err, i;
        struct bnx2x_sriov *iov;
-       struct pci_dev *dev = bp->pdev;
+       struct pci_device *dev = bp->pdev;
 
        bp->vfdb = NULL;
 
@@ -2457,7 +2457,7 @@ static int bnx2x_set_pf_tx_switching(struct bnx2x *bp, bool enable)
        return 0;
 }
 
-int bnx2x_sriov_configure(struct pci_dev *dev, int num_vfs_param)
+int bnx2x_sriov_configure(struct pci_device *dev, int num_vfs_param)
 {
        struct bnx2x *bp = netdev_priv(pci_get_drvdata(dev));
 
index e4cbee2..4092526 100644 (file)
@@ -526,7 +526,7 @@ static inline int bnx2x_vf_headroom(struct bnx2x *bp)
        return bp->vfdb->sriov.nr_virtfn * BNX2X_CIDS_PER_VF;
 }
 void bnx2x_pf_set_vfs_vlan(struct bnx2x *bp);
-int bnx2x_sriov_configure(struct pci_dev *dev, int num_vfs);
+int bnx2x_sriov_configure(struct pci_device *dev, int num_vfs);
 void bnx2x_iov_channel_down(struct bnx2x *bp);
 
 void bnx2x_iov_task(struct work_struct *work);
@@ -592,7 +592,7 @@ static inline void __iomem *bnx2x_vf_doorbells(struct bnx2x *bp)
 static inline void bnx2x_vf_pci_dealloc(struct bnx2x *bp) {}
 static inline int bnx2x_vf_pci_alloc(struct bnx2x *bp) {return 0; }
 static inline void bnx2x_pf_set_vfs_vlan(struct bnx2x *bp) {}
-static inline int bnx2x_sriov_configure(struct pci_dev *dev, int num_vfs) {return 0; }
+static inline int bnx2x_sriov_configure(struct pci_device *dev, int num_vfs) {return 0; }
 static inline void bnx2x_iov_channel_down(struct bnx2x *bp) {}
 
 static inline void bnx2x_iov_task(struct work_struct *work) {}
diff --git a/scripts/spatch/linux/WANTS b/scripts/spatch/linux/WANTS
new file mode 100644 (file)
index 0000000..9e790f4
--- /dev/null
@@ -0,0 +1 @@
+- PCI read and write conversions.
index a3ae1bb..3ad251a 100644 (file)
@@ -35,3 +35,10 @@ typedef uint64_t;
 @@
 -ETH_HLEN
 +ETHERHDRSIZE
+
+// doesn't catch all occurrences...
+@@
+@@
+ struct
+-pci_dev
++pci_device