BNX2X: spatch changes for BUG and WARN
[akaros.git] / kern / drivers / net / bnx2x / akaros_compat.h
index 0022dae..762d91b 100644 (file)
 #include <mmio.h>
 #include <taskqueue.h>
 
+/* temporary dumping ground */
+#include "compat_todo.h"
+
 #define __rcu
+#define rcu_read_lock()
+#define rcu_read_unlock()
+#define rcu_dereference(x) (x)
+#define rcu_dereference_protected(x, y) (x)
+#define rcu_assign_pointer(dst, src) (dst) = (src)
+#define RCU_INIT_POINTER(dst, src) rcu_assign_pointer(dst, src)
+#define synchronize_rcu()
+
 #define unlikely(x) (x)
 #define likely(x) (x)
 #define UINT_MAX UINT64_MAX
 #define CLAMP(val, lo, hi) MIN((typeof(val))MAX(val, lo), hi)
 #define CLAMP_T(t, val, lo, hi) CLAMP(val, lo, hi)
 
-/* I'm okay with these versions of the asserts. */
-#define WARN(args...) warn(args)
-#define WARN_ONCE(args...) warn_once(args)
-#define WARN_ON(x) warn_on(x)
-#define WARN_ON_ONCE(x) warn_on_once(x)
-#define BUG() panic("BUG")
-#define BUG_ON(x) assert(x)
-
 typedef physaddr_t dma_addr_t;
 typedef int gfp_t;
 
@@ -188,6 +191,8 @@ typedef int pm_message_t;
        printk(fmt, ##__VA_ARGS__)
 #define netdev_err(dev, fmt, ...) \
        printk(fmt, ##__VA_ARGS__)
+#define netdev_info(dev, fmt, ...) \
+       printk(fmt, ##__VA_ARGS__)
 #define dev_err(dev, fmt, ...) \
        printk(fmt, ##__VA_ARGS__)
 #define dev_info(dev, fmt, ...) \
@@ -380,6 +385,35 @@ enum {
 #define ETH_P_FIP   0x8914      /* FCoE Initialization Protocol */
 #define ETH_P_8021Q 0x8100          /* 802.1Q VLAN Extended Header  */
 
+/* Sockaddr structs */
+struct sockaddr {
+       uint16_t                                sa_family;
+       char                                    sa_data[14];
+};
+
+struct in_addr {
+       uint32_t                s_addr;
+};
+struct sockaddr_in {
+       uint16_t                                sin_family;
+       uint16_t                                sin_port;
+       struct in_addr                  sin_addr;
+       uint8_t                                 sin_zero[8]; /* padding */
+};
+
+struct in6_addr {
+       /* this is actually a weird union in glibc */
+       uint8_t                                 s6_addr[16];
+};
+
+struct sockaddr_in6 {
+       uint16_t                                sin6_family;
+       uint16_t                                sin6_port;
+       uint32_t                                sin6_flowinfo;
+       struct in6_addr                 sin6_addr;
+       uint32_t                                sin6_scope_id;
+};
+
 /* Common way to go from netdev (ether / netif) to driver-private ctlr */
 static inline void *netdev_priv(struct ether *dev)
 {
@@ -422,6 +456,7 @@ typedef unsigned int netdev_features_t;
  * equivalent or not in Plan 9. */
 #define rtnl_lock()
 #define rtnl_unlock()
+#define ASSERT_RTNL(...)
 
 #define synchronize_irq(x) warn_once("Asked to sync IRQ %d, unsupported", x)
 #define HZ 100
@@ -490,4 +525,68 @@ static inline int pci_write_config_dword(struct pci_device *dev, uint32_t off,
        return 0;
 }
 
+static inline void pci_disable_device(struct pci_device *dev)
+{
+       pci_clr_bus_master(dev);
+}
+
+static inline int pci_enable_device(struct pci_device *dev)
+{
+       pci_set_bus_master(dev);
+       return 0;
+}
+
+
+
+// TODO: maybe spatch these
+
+static inline uint32_t pci_resource_len(struct pci_device *dev, int bir)
+{
+       return pci_get_membar_sz(dev, bir);
+}
+
+static inline void *pci_resource_start(struct pci_device *dev, int bir)
+{
+       return (void*)pci_get_membar(dev, bir);
+}
+
+static inline void *pci_resource_end(struct pci_device *dev, int bir)
+{
+       return (void*)(pci_get_membar(dev, bir) + pci_resource_len(dev, bir));
+}
+
+#define ioremap_nocache(paddr, sz) \
+        (void*)vmap_pmem_nocache((uintptr_t)paddr, sz)
+#define ioremap(paddr, sz) (void*)vmap_pmem(paddr, sz)
+#define pci_ioremap_bar(dev, bir) (void*)pci_map_membar(dev, bir)
+#define pci_set_master(x) pci_set_bus_master(x)
+
+#define dev_addr_add(dev, addr, type) ({memcpy((dev)->ea, addr, Eaddrlen); 0;})
+#define dev_addr_del(...)
+
+#define SET_NETDEV_DEV(...)
+#define netif_carrier_off(...)
+#define netif_carrier_on(...)
+/* May need to do something with edev's queues or flags. */
+#define netif_tx_wake_all_queues(...)
+#define netif_tx_wake_queue(...)
+#define netif_tx_start_all_queues(...)
+#define netif_tx_start_queue(...)
+/* picks a random, valid mac addr for dev */
+#define eth_hw_addr_random(...)
+/* checks if the MAC is not 0 and not multicast (all 1s) */
+#define is_valid_ether_addr(...) (TRUE)
+
+#define EPROBE_DEFER 1
+
+/* Could spatch this:
+       if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
+       to:
+       if (!pci_get_membar(pdev, 0)) {
+
+       eth_zero_addr(bp->dev->ea);
+       to:
+       memset(bp->dev->ea, 0, Eaddrlen);
+*/
+
 #endif /* ROS_KERN_AKAROS_COMPAT_H */