kni: fix build with gcc 7.1
[dpdk.git] / lib / librte_eal / linuxapp / kni / ethtool / igb / igb.h
index 1fe7ee5..8667f29 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
 
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2012 Intel Corporation.
+  Copyright(c) 2007-2013 Intel Corporation.
 
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
@@ -17,7 +17,7 @@
   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
 
   The full GNU General Public License is included in this distribution in
-  the file called "COPYING".
+  the file called "LICENSE.GPL".
 
   Contact Information:
   e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
 #include <net/tcp.h>
 #endif
 
+#undef HAVE_HW_TIME_STAMP
+#ifdef HAVE_HW_TIME_STAMP
 #include <linux/pci.h>
 #include <linux/netdevice.h>
 #include <linux/vmalloc.h>
 
+#endif
 #ifdef SIOCETHTOOL
 #include <linux/ethtool.h>
 #endif
 
-#undef HAVE_HW_TIME_STAMP
-#ifdef HAVE_HW_TIME_STAMP
-#include <linux/clocksource.h>
-#include <linux/timecompare.h>
-#include <linux/net_tstamp.h>
-
-#endif
 struct igb_adapter;
 
 #if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
@@ -60,11 +56,6 @@ struct igb_adapter;
 #include <linux/dca.h>
 #endif
 
-#ifndef HAVE_HW_TIME_STAMP
-#undef IGB_PER_PKT_TIMESTAMP
-#endif
-
-
 #include "kcompat.h"
 
 #ifdef HAVE_SCTP
@@ -84,13 +75,24 @@ struct igb_adapter;
        printk(KERN_##klevel PFX "%s: %s: " fmt, adapter->netdev->name, \
                __FUNCTION__ , ## args))
 
+#ifdef HAVE_PTP_1588_CLOCK
+#include <linux/clocksource.h>
+#include <linux/net_tstamp.h>
+#include <linux/ptp_clock_kernel.h>
+#endif /* HAVE_PTP_1588_CLOCK */
+
+#ifdef HAVE_I2C_SUPPORT
+#include <linux/i2c.h>
+#include <linux/i2c-algo-bit.h>
+#endif /* HAVE_I2C_SUPPORT */
+
 /* Interrupt defines */
 #define IGB_START_ITR                    648 /* ~6000 ints/sec */
 #define IGB_4K_ITR                       980
 #define IGB_20K_ITR                      196
 #define IGB_70K_ITR                       56
 
-/* Interrupt modes, as used by the IntMode paramter */
+/* Interrupt modes, as used by the IntMode parameter */
 #define IGB_INT_MODE_LEGACY                0
 #define IGB_INT_MODE_MSI                   1
 #define IGB_INT_MODE_MSIX                  2
@@ -139,8 +141,10 @@ struct vf_data_storage {
        u16 pf_vlan; /* When set, guest VLAN config not allowed. */
        u16 pf_qos;
        u16 tx_rate;
+#ifdef HAVE_VF_SPOOFCHK_CONFIGURE
+       bool spoofchk_enabled;
+#endif
 #endif
-       struct pci_dev *vfdev;
 };
 
 #define IGB_VF_FLAG_CTS            0x00000001 /* VF is clear to send data */
@@ -159,14 +163,12 @@ struct vf_data_storage {
  *           descriptors until either it has this many to write back, or the
  *           ITR timer expires.
  */
-#define IGB_RX_PTHRESH                     8
-#define IGB_RX_HTHRESH                     8
-#define IGB_TX_PTHRESH                     8
-#define IGB_TX_HTHRESH                     1
-#define IGB_RX_WTHRESH                     ((hw->mac.type == e1000_82576 && \
-                                             adapter->msix_entries) ? 1 : 4)
-#define IGB_TX_WTHRESH                     ((hw->mac.type == e1000_82576 && \
-                                             adapter->msix_entries) ? 1 : 16)
+#define IGB_RX_PTHRESH ((hw->mac.type == e1000_i354) ? 12 : 8)
+#define IGB_RX_HTHRESH 8
+#define IGB_TX_PTHRESH ((hw->mac.type == e1000_i354) ? 20 : 8)
+#define IGB_TX_HTHRESH 1
+#define IGB_RX_WTHRESH ((hw->mac.type == e1000_82576 && \
+                         adapter->msix_entries) ? 1 : 4)
 
 /* this is the size past which hardware will drop packets when setting LPE=0 */
 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
@@ -178,9 +180,15 @@ struct vf_data_storage {
  * i.e. RXBUFFER_512 --> size-1024 slab
  */
 /* Supported Rx Buffer Sizes */
-#define IGB_RXBUFFER_512   512
+#define IGB_RXBUFFER_256   256
+#define IGB_RXBUFFER_2048  2048
 #define IGB_RXBUFFER_16384 16384
-#define IGB_RX_HDR_LEN     IGB_RXBUFFER_512
+#define IGB_RX_HDR_LEN    IGB_RXBUFFER_256
+#if MAX_SKB_FRAGS < 8
+#define IGB_RX_BUFSZ      ALIGN(MAX_JUMBO_FRAME_SIZE / MAX_SKB_FRAGS, 1024)
+#else
+#define IGB_RX_BUFSZ      IGB_RXBUFFER_2048
+#endif
 
 
 /* Packet Buffer allocations */
@@ -190,15 +198,11 @@ struct vf_data_storage {
 
 #define IGB_FC_PAUSE_TIME 0x0680 /* 858 usec */
 
-/* How many Tx Descriptors do we need to call netif_wake_queue ? */
-#define IGB_TX_QUEUE_WAKE      32
 /* How many Rx Buffers do we bundle into one write to the hardware ? */
 #define IGB_RX_BUFFER_WRITE    16      /* Must be power of 2 */
 
 #define IGB_EEPROM_APME         0x0400
-#ifndef ETH_TP_MDI_X
 #define AUTO_ALL_MODES          0
-#endif
 
 #ifndef IGB_MASTER_SLAVE
 /* Switch to override PHY master/slave setting */
@@ -212,7 +216,6 @@ struct vf_data_storage {
 struct igb_lro_stats {
        u32 flushed;
        u32 coal;
-       u32 recycled;
 };
 
 /*
@@ -226,7 +229,7 @@ struct igb_lro_stats {
  */
 struct igb_lrohdr {
        struct iphdr iph;
-       struct tcphdr th; 
+       struct tcphdr th;
        __be32 ts[0];
 };
 
@@ -238,10 +241,12 @@ struct igb_lro_list {
 #endif /* IGB_NO_LRO */
 struct igb_cb {
 #ifndef IGB_NO_LRO
+#ifdef CONFIG_IGB_DISABLE_PACKET_SPLIT
        union {                         /* Union defining head/tail partner */
                struct sk_buff *head;
                struct sk_buff *tail;
        };
+#endif
        __be32  tsecr;                  /* timestamp echo response */
        u32     tsval;                  /* timestamp value in host order */
        u32     next_seq;               /* next expected sequence number */
@@ -255,14 +260,38 @@ struct igb_cb {
 };
 #define IGB_CB(skb) ((struct igb_cb *)(skb)->cb)
 
-#define IGB_TX_FLAGS_CSUM              0x00000001
-#define IGB_TX_FLAGS_VLAN              0x00000002
-#define IGB_TX_FLAGS_TSO               0x00000004
-#define IGB_TX_FLAGS_IPV4              0x00000008
-#define IGB_TX_FLAGS_TSTAMP            0x00000010
+enum igb_tx_flags {
+       /* cmd_type flags */
+       IGB_TX_FLAGS_VLAN       = 0x01,
+       IGB_TX_FLAGS_TSO        = 0x02,
+       IGB_TX_FLAGS_TSTAMP     = 0x04,
+
+       /* olinfo flags */
+       IGB_TX_FLAGS_IPV4       = 0x10,
+       IGB_TX_FLAGS_CSUM       = 0x20,
+};
+
+/* VLAN info */
 #define IGB_TX_FLAGS_VLAN_MASK         0xffff0000
 #define IGB_TX_FLAGS_VLAN_SHIFT                        16
 
+/*
+ * The largest size we can write to the descriptor is 65535.  In order to
+ * maintain a power of two alignment we have to limit ourselves to 32K.
+ */
+#define IGB_MAX_TXD_PWR                15
+#define IGB_MAX_DATA_PER_TXD   (1 << IGB_MAX_TXD_PWR)
+
+/* Tx Descriptors needed, worst case */
+#define TXD_USE_COUNT(S)       DIV_ROUND_UP((S), IGB_MAX_DATA_PER_TXD)
+#ifndef MAX_SKB_FRAGS
+#define DESC_NEEDED    4
+#elif (MAX_SKB_FRAGS < 16)
+#define DESC_NEEDED    ((MAX_SKB_FRAGS * TXD_USE_COUNT(PAGE_SIZE)) + 4)
+#else
+#define DESC_NEEDED    (MAX_SKB_FRAGS + 4)
+#endif
+
 /* wrapper around a pointer to a socket buffer,
  * so a DMA handle can be stored along with the buffer */
 struct igb_tx_buffer {
@@ -278,11 +307,11 @@ struct igb_tx_buffer {
 };
 
 struct igb_rx_buffer {
-       struct sk_buff *skb;
        dma_addr_t dma;
-#ifndef CONFIG_IGB_DISABLE_PACKET_SPLIT
+#ifdef CONFIG_IGB_DISABLE_PACKET_SPLIT
+       struct sk_buff *skb;
+#else
        struct page *page;
-       dma_addr_t page_dma;
        u32 page_offset;
 #endif
 };
@@ -299,6 +328,14 @@ struct igb_rx_queue_stats {
        u64 drops;
        u64 csum_err;
        u64 alloc_failed;
+       u64 ipv4_packets;      /* IPv4 headers processed */
+       u64 ipv4e_packets;     /* IPv4E headers with extensions processed */
+       u64 ipv6_packets;      /* IPv6 headers processed */
+       u64 ipv6e_packets;     /* IPv6E headers with extensions processed */
+       u64 tcp_packets;       /* TCP headers processed */
+       u64 udp_packets;       /* UDP headers processed */
+       u64 sctp_packets;      /* SCTP headers processed */
+       u64 nfs_packets;       /* NFS headers processe */
 };
 
 struct igb_ring_container {
@@ -310,29 +347,6 @@ struct igb_ring_container {
        u8 itr;                         /* current ITR setting for ring */
 };
 
-struct igb_q_vector {
-       struct igb_adapter *adapter;    /* backlink */
-       int cpu;                        /* CPU for DCA */
-       u32 eims_value;                 /* EIMS mask value */
-
-       struct igb_ring_container rx, tx;
-
-       struct napi_struct napi;
-       int numa_node;
-
-       u16 itr_val;
-       u8 set_itr;
-       void __iomem *itr_register;
-
-#ifndef IGB_NO_LRO
-       struct igb_lro_list *lrolist;   /* LRO list for queue vector*/
-#endif
-       char name[IFNAMSIZ + 9];
-#ifndef HAVE_NETDEV_NAPI_LIST
-       struct net_device poll_dev;
-#endif
-} ____cacheline_internodealigned_in_smp;
-
 struct igb_ring {
        struct igb_q_vector *q_vector;  /* backlink to q_vector */
        struct net_device *netdev;      /* back pointer to net_device */
@@ -341,18 +355,23 @@ struct igb_ring {
                struct igb_tx_buffer *tx_buffer_info;
                struct igb_rx_buffer *rx_buffer_info;
        };
+#ifdef HAVE_PTP_1588_CLOCK
+       unsigned long last_rx_timestamp;
+#endif /* HAVE_PTP_1588_CLOCK */
        void *desc;                     /* descriptor ring memory */
        unsigned long flags;            /* ring specific flags */
        void __iomem *tail;             /* pointer to ring tail register */
+       dma_addr_t dma;                 /* phys address of the ring */
+       unsigned int size;              /* length of desc. ring in bytes */
 
        u16 count;                      /* number of desc. in the ring */
        u8 queue_index;                 /* logical index of the ring*/
        u8 reg_idx;                     /* physical index of the ring */
-       u32 size;                       /* length of desc. ring in bytes */
 
        /* everything past this point are written often */
-       u16 next_to_clean ____cacheline_aligned_in_smp;
+       u16 next_to_clean;
        u16 next_to_use;
+       u16 next_to_alloc;
 
        union {
                /* TX */
@@ -364,6 +383,8 @@ struct igb_ring {
                        struct igb_rx_queue_stats rx_stats;
 #ifdef CONFIG_IGB_DISABLE_PACKET_SPLIT
                        u16 rx_buffer_len;
+#else
+                       struct sk_buff *skb;
 #endif
                };
        };
@@ -371,12 +392,32 @@ struct igb_ring {
        struct net_device *vmdq_netdev;
        int vqueue_index;               /* queue index for virtual netdev */
 #endif
-       /* Items past this point are only used during ring alloc / free */
-       dma_addr_t dma;                 /* phys address of the ring */
-       int numa_node;                  /* node to alloc ring memory on */
-
 } ____cacheline_internodealigned_in_smp;
 
+struct igb_q_vector {
+       struct igb_adapter *adapter;    /* backlink */
+       int cpu;                        /* CPU for DCA */
+       u32 eims_value;                 /* EIMS mask value */
+
+       u16 itr_val;
+       u8 set_itr;
+       void __iomem *itr_register;
+
+       struct igb_ring_container rx, tx;
+
+       struct napi_struct napi;
+#ifndef IGB_NO_LRO
+       struct igb_lro_list lrolist;   /* LRO list for queue vector*/
+#endif
+       char name[IFNAMSIZ + 9];
+#ifndef HAVE_NETDEV_NAPI_LIST
+       struct net_device poll_dev;
+#endif
+
+       /* for dynamic allocation of rings associated with this q_vector */
+       struct igb_ring ring[0] ____cacheline_internodealigned_in_smp;
+};
+
 enum e1000_ring_flags_t {
 #ifndef HAVE_NDO_SET_FEATURES
        IGB_RING_FLAG_RX_CSUM,
@@ -386,6 +427,7 @@ enum e1000_ring_flags_t {
        IGB_RING_FLAG_TX_CTX_IDX,
        IGB_RING_FLAG_TX_DETECT_HANG,
 };
+
 struct igb_mac_addr {
        u8 addr[ETH_ALEN];
        u16 queue;
@@ -448,6 +490,26 @@ struct igb_therm_proc_data
 //  #endif /* IGB_PROCFS */
 // #endif /* EXT_THERMAL_SENSOR_SUPPORT */
 
+#ifdef IGB_HWMON
+#define IGB_HWMON_TYPE_LOC     0
+#define IGB_HWMON_TYPE_TEMP    1
+#define IGB_HWMON_TYPE_CAUTION 2
+#define IGB_HWMON_TYPE_MAX     3
+
+struct hwmon_attr {
+       struct device_attribute dev_attr;
+       struct e1000_hw *hw;
+       struct e1000_thermal_diode_data *sensor;
+       char name[12];
+       };
+
+struct hwmon_buff {
+       struct device *device;
+       struct hwmon_attr *hwmon_list;
+       unsigned int n_hwmon;
+       };
+#endif /* IGB_HWMON */
+
 /* board specific private data structure */
 struct igb_adapter {
 #ifdef HAVE_VLAN_RX_REGISTER
@@ -496,6 +558,10 @@ struct igb_adapter {
        bool fc_autoneg;
        u8  tx_timeout_factor;
 
+#ifdef DEBUG
+       bool tx_hang_detected;
+       bool disable_hw_reset;
+#endif
        u32 max_frame_size;
 
        /* OS defined structs */
@@ -506,12 +572,6 @@ struct igb_adapter {
 #ifndef IGB_NO_LRO
        struct igb_lro_stats lro_stats;
 #endif
-#ifdef HAVE_HW_TIME_STAMP
-       struct cyclecounter cycles;
-       struct timecounter clock;
-       struct timecompare compare;
-       struct hwtstamp_config hwtstamp_config;
-#endif
 
        /* structs defined in e1000_hw.h */
        struct e1000_hw hw;
@@ -532,8 +592,6 @@ struct igb_adapter {
        u32 eims_other;
 
        /* to not mess up cache alignment, always add to the bottom */
-       u32 eeprom_wol;
-
        u32 *config_space;
        u16 tx_ring_count;
        u16 rx_ring_count;
@@ -549,8 +607,7 @@ struct igb_adapter {
        int int_mode;
        u32 rss_queues;
        u32 vmdq_pools;
-       u16 fw_version;
-       int node;
+       char fw_version[43];
        u32 wvbr;
        struct igb_mac_addr *mac_table;
 #ifdef CONFIG_IGB_VMDQ_NETDEV
@@ -562,17 +619,46 @@ struct igb_adapter {
 
        /* External Thermal Sensor support flag */
        bool ets;
-#ifdef IGB_SYSFS
-       struct kobject *info_kobj;
-       struct kobject *therm_kobj[E1000_MAX_SENSORS];
-#else /* IGB_SYSFS */
+#ifdef IGB_HWMON
+       struct hwmon_buff igb_hwmon_buff;
+#else /* IGB_HWMON */
 #ifdef IGB_PROCFS
        struct proc_dir_entry *eth_dir;
        struct proc_dir_entry *info_dir;
        struct proc_dir_entry *therm_dir[E1000_MAX_SENSORS];
        struct igb_therm_proc_data therm_data[E1000_MAX_SENSORS];
+       bool old_lsc;
 #endif /* IGB_PROCFS */
-#endif /* IGB_SYSFS */
+#endif /* IGB_HWMON */
+       u32 etrack_id;
+
+#ifdef HAVE_PTP_1588_CLOCK
+       struct ptp_clock *ptp_clock;
+       struct ptp_clock_info ptp_caps;
+       struct delayed_work ptp_overflow_work;
+       struct work_struct ptp_tx_work;
+       struct sk_buff *ptp_tx_skb;
+       unsigned long ptp_tx_start;
+       unsigned long last_rx_ptp_check;
+       spinlock_t tmreg_lock;
+       struct cyclecounter cc;
+       struct timecounter tc;
+       u32 tx_hwtstamp_timeouts;
+       u32 rx_hwtstamp_cleared;
+#endif /* HAVE_PTP_1588_CLOCK */
+
+#ifdef HAVE_I2C_SUPPORT
+       struct i2c_algo_bit_data i2c_algo;
+       struct i2c_adapter i2c_adap;
+       struct i2c_client *i2c_client;
+#endif /* HAVE_I2C_SUPPORT */
+       unsigned long link_check_timeout;
+
+
+       int devrc;
+
+       int copper_tries;
+       u16 eee_advert;
 };
 
 #ifdef CONFIG_IGB_VMDQ_NETDEV
@@ -591,16 +677,28 @@ struct igb_vmdq_adapter {
 };
 #endif
 
-
-#define IGB_FLAG_HAS_MSI           (1 << 0)
-#define IGB_FLAG_MSI_ENABLE        (1 << 1)
-#define IGB_FLAG_DCA_ENABLED       (1 << 2)
-#define IGB_FLAG_LLI_PUSH          (1 << 3)
-#define IGB_FLAG_QUAD_PORT_A       (1 << 4)
-#define IGB_FLAG_QUEUE_PAIRS       (1 << 5)
-#define IGB_FLAG_EEE               (1 << 6)
-#define IGB_FLAG_DMAC              (1 << 7)
-#define IGB_FLAG_DETECT_BAD_DMA    (1 << 8)
+#define IGB_FLAG_HAS_MSI               (1 << 0)
+#define IGB_FLAG_DCA_ENABLED           (1 << 1)
+#define IGB_FLAG_LLI_PUSH              (1 << 2)
+#define IGB_FLAG_QUAD_PORT_A           (1 << 3)
+#define IGB_FLAG_QUEUE_PAIRS           (1 << 4)
+#define IGB_FLAG_EEE                   (1 << 5)
+#define IGB_FLAG_DMAC                  (1 << 6)
+#define IGB_FLAG_DETECT_BAD_DMA                (1 << 7)
+#define IGB_FLAG_PTP                   (1 << 8)
+#define IGB_FLAG_RSS_FIELD_IPV4_UDP    (1 << 9)
+#define IGB_FLAG_RSS_FIELD_IPV6_UDP    (1 << 10)
+#define IGB_FLAG_WOL_SUPPORTED         (1 << 11)
+#define IGB_FLAG_NEED_LINK_UPDATE      (1 << 12)
+#define IGB_FLAG_LOOPBACK_ENABLE       (1 << 13)
+#define IGB_FLAG_MEDIA_RESET           (1 << 14)
+#define IGB_FLAG_MAS_ENABLE            (1 << 15)
+
+/* Media Auto Sense */
+#define IGB_MAS_ENABLE_0               0X0001
+#define IGB_MAS_ENABLE_1               0X0002
+#define IGB_MAS_ENABLE_2               0X0004
+#define IGB_MAS_ENABLE_3               0X0008
 
 #define IGB_MIN_TXPBSIZE           20408
 #define IGB_TX_BUF_4096            4096
@@ -622,7 +720,6 @@ struct igb_vmdq_adapter {
 #define IGB_DMAC_9000          9000
 #define IGB_DMAC_MAX          10000
 
-
 #define IGB_82576_TSYNC_SHIFT 19
 #define IGB_82580_TSYNC_SHIFT 24
 #define IGB_TS_HDR_LEN        16
@@ -650,6 +747,8 @@ struct e1000_fw_hdr {
        } cmd_or_resp;
        u8 checksum;
 };
+
+#pragma pack(push,1)
 struct e1000_fw_drv_info {
        struct e1000_fw_hdr hdr;
        u8 port_num;
@@ -657,6 +756,8 @@ struct e1000_fw_drv_info {
        u16 pad; /* end spacing to ensure length is mult. of dword */
        u8  pad2; /* end spacing to ensure length is mult. of dword2 */
 };
+#pragma pack(pop)
+
 enum e1000_state_t {
        __IGB_TESTING,
        __IGB_RESETTING,
@@ -689,6 +790,42 @@ extern bool igb_has_link(struct igb_adapter *adapter);
 extern void igb_set_ethtool_ops(struct net_device *);
 extern void igb_check_options(struct igb_adapter *);
 extern void igb_power_up_link(struct igb_adapter *);
+#ifdef HAVE_PTP_1588_CLOCK
+extern void igb_ptp_init(struct igb_adapter *adapter);
+extern void igb_ptp_stop(struct igb_adapter *adapter);
+extern void igb_ptp_reset(struct igb_adapter *adapter);
+extern void igb_ptp_tx_work(struct work_struct *work);
+extern void igb_ptp_rx_hang(struct igb_adapter *adapter);
+extern void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter);
+extern void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector,
+                               struct sk_buff *skb);
+extern void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector,
+                               unsigned char *va,
+                               struct sk_buff *skb);
+static inline void igb_ptp_rx_hwtstamp(struct igb_ring *rx_ring,
+                                      union e1000_adv_rx_desc *rx_desc,
+                                      struct sk_buff *skb)
+{
+       if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) {
+#ifdef CONFIG_IGB_DISABLE_PACKET_SPLIT
+               igb_ptp_rx_pktstamp(rx_ring->q_vector, skb->data, skb);
+               skb_pull(skb, IGB_TS_HDR_LEN);
+#endif
+               return;
+       }
+
+       if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TS))
+               igb_ptp_rx_rgtstamp(rx_ring->q_vector, skb);
+
+       /* Update the last_rx_timestamp timer in order to enable watchdog check
+        * for error case of latched timestamp on a dropped packet.
+        */
+       rx_ring->last_rx_timestamp = jiffies;
+}
+
+extern int igb_ptp_hwtstamp_ioctl(struct net_device *netdev,
+                                 struct ifreq *ifr, int cmd);
+#endif /* HAVE_PTP_1588_CLOCK */
 #ifdef ETHTOOL_OPS_COMPAT
 extern int ethtool_ioctl(struct ifreq *);
 #endif
@@ -703,8 +840,9 @@ extern void igb_enable_vlan_tags(struct igb_adapter *adapter);
 extern void igb_vlan_mode(struct net_device *, u32);
 #endif
 
+#define E1000_PCS_CFG_IGN_SD   1
 
-#ifdef IGB_SYSFS
+#ifdef IGB_HWMON
 void igb_sysfs_exit(struct igb_adapter *adapter);
 int igb_sysfs_init(struct igb_adapter *adapter);
 #else
@@ -714,5 +852,8 @@ void igb_procfs_exit(struct igb_adapter* adapter);
 int igb_procfs_topdir_init(void);
 void igb_procfs_topdir_exit(void);
 #endif /* IGB_PROCFS */
-#endif /* IGB_SYSFS */
+#endif /* IGB_HWMON */
+
+
+
 #endif /* _IGB_H_ */