extern void dev_disable_lro(struct net_device *dev);
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
-static inline const struct net_device_stats *
-dev_get_stats(struct net_device *dev)
+/* Linux 2.6.28 introduced dev_get_stats():
+ * const struct net_device_stats *dev_get_stats(struct net_device *dev);
+ *
+ * Linux 2.6.36 changed dev_get_stats() to:
+ * struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
+ * struct rtnl_link_stats64 *storage);
+ */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
+#define dev_get_stats(dev, storage) rpl_dev_get_stats(dev, storage)
+struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
+ struct rtnl_link_stats64 *storage);
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
+#define skb_checksum_help(skb) skb_checksum_help((skb), 0)
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
+static inline int netdev_rx_handler_register(struct net_device *dev,
+ void *rx_handler,
+ void *rx_handler_data)
+{
+ if (dev->br_port)
+ return -EBUSY;
+ rcu_assign_pointer(dev->br_port, rx_handler_data);
+ return 0;
+}
+static inline void netdev_rx_handler_unregister(struct net_device *dev)
{
- return dev->get_stats(dev);
+ rcu_assign_pointer(dev->br_port, NULL);
}
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-#define skb_checksum_help(skb) skb_checksum_help((skb), 0)
+#undef SET_ETHTOOL_OPS
+#define SET_ETHTOOL_OPS(netdev, ops) \
+ ( (netdev)->ethtool_ops = (struct ethtool_ops *)(ops) )
#endif
#endif