aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-08-12 20:44:53 -0400
committerDavid S. Miller <davem@davemloft.net>2009-08-12 20:44:53 -0400
commitaa11d958d1a6572eda08214d7c6a735804fe48a5 (patch)
treed025b05270ad1e010660d17eeadc6ac3c1abbd7d /drivers/net/ixgbe
parent07f6642ee9418e962e54cbc07471cfe2e559c568 (diff)
parent9799218ae36910af50f002a5db1802d576fffb43 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: arch/microblaze/include/asm/socket.h
Diffstat (limited to 'drivers/net/ixgbe')
-rw-r--r--drivers/net/ixgbe/ixgbe.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_82598.c67
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c86
-rw-r--r--drivers/net/ixgbe/ixgbe_type.h8
4 files changed, 107 insertions, 56 deletions
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/ixgbe/ixgbe.h
index 62b6c028ae81..8f1f8bab0fd9 100644
--- a/drivers/net/ixgbe/ixgbe.h
+++ b/drivers/net/ixgbe/ixgbe.h
@@ -136,6 +136,8 @@ struct ixgbe_ring {
136 136
137 u8 queue_index; /* needed for multiqueue queue management */ 137 u8 queue_index; /* needed for multiqueue queue management */
138 138
139#define IXGBE_RING_RX_PS_ENABLED (u8)(1)
140 u8 flags; /* per ring feature flags */
139 u16 head; 141 u16 head;
140 u16 tail; 142 u16 tail;
141 143
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/ixgbe/ixgbe_82598.c
index ed0bb3b20255..1c227b0777a6 100644
--- a/drivers/net/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ixgbe/ixgbe_82598.c
@@ -50,6 +50,51 @@ static s32 ixgbe_read_i2c_eeprom_82598(struct ixgbe_hw *hw, u8 byte_offset,
50 u8 *eeprom_data); 50 u8 *eeprom_data);
51 51
52/** 52/**
53 * ixgbe_set_pcie_completion_timeout - set pci-e completion timeout
54 * @hw: pointer to the HW structure
55 *
56 * The defaults for 82598 should be in the range of 50us to 50ms,
57 * however the hardware default for these parts is 500us to 1ms which is less
58 * than the 10ms recommended by the pci-e spec. To address this we need to
59 * increase the value to either 10ms to 250ms for capability version 1 config,
60 * or 16ms to 55ms for version 2.
61 **/
62void ixgbe_set_pcie_completion_timeout(struct ixgbe_hw *hw)
63{
64 struct ixgbe_adapter *adapter = hw->back;
65 u32 gcr = IXGBE_READ_REG(hw, IXGBE_GCR);
66 u16 pcie_devctl2;
67
68 /* only take action if timeout value is defaulted to 0 */
69 if (gcr & IXGBE_GCR_CMPL_TMOUT_MASK)
70 goto out;
71
72 /*
73 * if capababilities version is type 1 we can write the
74 * timeout of 10ms to 250ms through the GCR register
75 */
76 if (!(gcr & IXGBE_GCR_CAP_VER2)) {
77 gcr |= IXGBE_GCR_CMPL_TMOUT_10ms;
78 goto out;
79 }
80
81 /*
82 * for version 2 capabilities we need to write the config space
83 * directly in order to set the completion timeout value for
84 * 16ms to 55ms
85 */
86 pci_read_config_word(adapter->pdev,
87 IXGBE_PCI_DEVICE_CONTROL2, &pcie_devctl2);
88 pcie_devctl2 |= IXGBE_PCI_DEVICE_CONTROL2_16ms;
89 pci_write_config_word(adapter->pdev,
90 IXGBE_PCI_DEVICE_CONTROL2, pcie_devctl2);
91out:
92 /* disable completion timeout resend */
93 gcr &= ~IXGBE_GCR_CMPL_TMOUT_RESEND;
94 IXGBE_WRITE_REG(hw, IXGBE_GCR, gcr);
95}
96
97/**
53 * ixgbe_get_pcie_msix_count_82598 - Gets MSI-X vector count 98 * ixgbe_get_pcie_msix_count_82598 - Gets MSI-X vector count
54 * @hw: pointer to hardware structure 99 * @hw: pointer to hardware structure
55 * 100 *
@@ -153,6 +198,26 @@ out:
153} 198}
154 199
155/** 200/**
201 * ixgbe_start_hw_82598 - Prepare hardware for Tx/Rx
202 * @hw: pointer to hardware structure
203 *
204 * Starts the hardware using the generic start_hw function.
205 * Then set pcie completion timeout
206 **/
207s32 ixgbe_start_hw_82598(struct ixgbe_hw *hw)
208{
209 s32 ret_val = 0;
210
211 ret_val = ixgbe_start_hw_generic(hw);
212
213 /* set the completion timeout for interface */
214 if (ret_val == 0)
215 ixgbe_set_pcie_completion_timeout(hw);
216
217 return ret_val;
218}
219
220/**
156 * ixgbe_get_link_capabilities_82598 - Determines link capabilities 221 * ixgbe_get_link_capabilities_82598 - Determines link capabilities
157 * @hw: pointer to hardware structure 222 * @hw: pointer to hardware structure
158 * @speed: pointer to link speed 223 * @speed: pointer to link speed
@@ -1086,7 +1151,7 @@ out:
1086static struct ixgbe_mac_operations mac_ops_82598 = { 1151static struct ixgbe_mac_operations mac_ops_82598 = {
1087 .init_hw = &ixgbe_init_hw_generic, 1152 .init_hw = &ixgbe_init_hw_generic,
1088 .reset_hw = &ixgbe_reset_hw_82598, 1153 .reset_hw = &ixgbe_reset_hw_82598,
1089 .start_hw = &ixgbe_start_hw_generic, 1154 .start_hw = &ixgbe_start_hw_82598,
1090 .clear_hw_cntrs = &ixgbe_clear_hw_cntrs_generic, 1155 .clear_hw_cntrs = &ixgbe_clear_hw_cntrs_generic,
1091 .get_media_type = &ixgbe_get_media_type_82598, 1156 .get_media_type = &ixgbe_get_media_type_82598,
1092 .get_supported_physical_layer = &ixgbe_get_supported_physical_layer_82598, 1157 .get_supported_physical_layer = &ixgbe_get_supported_physical_layer_82598,
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 52d7f19de435..71df9ed9b534 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -587,7 +587,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,
587 rx_desc = IXGBE_RX_DESC_ADV(*rx_ring, i); 587 rx_desc = IXGBE_RX_DESC_ADV(*rx_ring, i);
588 588
589 if (!bi->page_dma && 589 if (!bi->page_dma &&
590 (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED)) { 590 (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED)) {
591 if (!bi->page) { 591 if (!bi->page) {
592 bi->page = alloc_page(GFP_ATOMIC); 592 bi->page = alloc_page(GFP_ATOMIC);
593 if (!bi->page) { 593 if (!bi->page) {
@@ -631,7 +631,7 @@ static void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,
631 } 631 }
632 /* Refresh the desc even if buffer_addrs didn't change because 632 /* Refresh the desc even if buffer_addrs didn't change because
633 * each write-back erases this info. */ 633 * each write-back erases this info. */
634 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 634 if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED) {
635 rx_desc->read.pkt_addr = cpu_to_le64(bi->page_dma); 635 rx_desc->read.pkt_addr = cpu_to_le64(bi->page_dma);
636 rx_desc->read.hdr_addr = cpu_to_le64(bi->dma); 636 rx_desc->read.hdr_addr = cpu_to_le64(bi->dma);
637 } else { 637 } else {
@@ -728,7 +728,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
728 break; 728 break;
729 (*work_done)++; 729 (*work_done)++;
730 730
731 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 731 if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED) {
732 hdr_info = le16_to_cpu(ixgbe_get_hdr_info(rx_desc)); 732 hdr_info = le16_to_cpu(ixgbe_get_hdr_info(rx_desc));
733 len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >> 733 len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >>
734 IXGBE_RXDADV_HDRBUFLEN_SHIFT; 734 IXGBE_RXDADV_HDRBUFLEN_SHIFT;
@@ -800,7 +800,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
800 rx_ring->stats.packets++; 800 rx_ring->stats.packets++;
801 rx_ring->stats.bytes += skb->len; 801 rx_ring->stats.bytes += skb->len;
802 } else { 802 } else {
803 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 803 if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED) {
804 rx_buffer_info->skb = next_buffer->skb; 804 rx_buffer_info->skb = next_buffer->skb;
805 rx_buffer_info->dma = next_buffer->dma; 805 rx_buffer_info->dma = next_buffer->dma;
806 next_buffer->skb = skb; 806 next_buffer->skb = skb;
@@ -1900,46 +1900,19 @@ static void ixgbe_configure_tx(struct ixgbe_adapter *adapter)
1900 1900
1901#define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT 2 1901#define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT 2
1902 1902
1903static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter, int index) 1903static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter,
1904 struct ixgbe_ring *rx_ring)
1904{ 1905{
1905 struct ixgbe_ring *rx_ring;
1906 u32 srrctl; 1906 u32 srrctl;
1907 int queue0 = 0; 1907 int index;
1908 unsigned long mask;
1909 struct ixgbe_ring_feature *feature = adapter->ring_feature; 1908 struct ixgbe_ring_feature *feature = adapter->ring_feature;
1910 1909
1911 if (adapter->hw.mac.type == ixgbe_mac_82599EB) { 1910 index = rx_ring->reg_idx;
1912 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { 1911 if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
1913 int dcb_i = feature[RING_F_DCB].indices; 1912 unsigned long mask;
1914 if (dcb_i == 8)
1915 queue0 = index >> 4;
1916 else if (dcb_i == 4)
1917 queue0 = index >> 5;
1918 else
1919 dev_err(&adapter->pdev->dev, "Invalid DCB "
1920 "configuration\n");
1921#ifdef IXGBE_FCOE
1922 if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) {
1923 struct ixgbe_ring_feature *f;
1924
1925 rx_ring = &adapter->rx_ring[queue0];
1926 f = &adapter->ring_feature[RING_F_FCOE];
1927 if ((queue0 == 0) && (index > rx_ring->reg_idx))
1928 queue0 = f->mask + index -
1929 rx_ring->reg_idx - 1;
1930 }
1931#endif /* IXGBE_FCOE */
1932 } else {
1933 queue0 = index;
1934 }
1935 } else {
1936 mask = (unsigned long) feature[RING_F_RSS].mask; 1913 mask = (unsigned long) feature[RING_F_RSS].mask;
1937 queue0 = index & mask;
1938 index = index & mask; 1914 index = index & mask;
1939 } 1915 }
1940
1941 rx_ring = &adapter->rx_ring[queue0];
1942
1943 srrctl = IXGBE_READ_REG(&adapter->hw, IXGBE_SRRCTL(index)); 1916 srrctl = IXGBE_READ_REG(&adapter->hw, IXGBE_SRRCTL(index));
1944 1917
1945 srrctl &= ~IXGBE_SRRCTL_BSIZEHDR_MASK; 1918 srrctl &= ~IXGBE_SRRCTL_BSIZEHDR_MASK;
@@ -1948,7 +1921,7 @@ static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter, int index)
1948 srrctl |= (IXGBE_RX_HDR_SIZE << IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) & 1921 srrctl |= (IXGBE_RX_HDR_SIZE << IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) &
1949 IXGBE_SRRCTL_BSIZEHDR_MASK; 1922 IXGBE_SRRCTL_BSIZEHDR_MASK;
1950 1923
1951 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 1924 if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED) {
1952#if (PAGE_SIZE / 2) > IXGBE_MAX_RXBUFFER 1925#if (PAGE_SIZE / 2) > IXGBE_MAX_RXBUFFER
1953 srrctl |= IXGBE_MAX_RXBUFFER >> IXGBE_SRRCTL_BSIZEPKT_SHIFT; 1926 srrctl |= IXGBE_MAX_RXBUFFER >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1954#else 1927#else
@@ -2004,6 +1977,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
2004{ 1977{
2005 u64 rdba; 1978 u64 rdba;
2006 struct ixgbe_hw *hw = &adapter->hw; 1979 struct ixgbe_hw *hw = &adapter->hw;
1980 struct ixgbe_ring *rx_ring;
2007 struct net_device *netdev = adapter->netdev; 1981 struct net_device *netdev = adapter->netdev;
2008 int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; 1982 int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
2009 int i, j; 1983 int i, j;
@@ -2020,11 +1994,6 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
2020 /* Decide whether to use packet split mode or not */ 1994 /* Decide whether to use packet split mode or not */
2021 adapter->flags |= IXGBE_FLAG_RX_PS_ENABLED; 1995 adapter->flags |= IXGBE_FLAG_RX_PS_ENABLED;
2022 1996
2023#ifdef IXGBE_FCOE
2024 if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED)
2025 adapter->flags &= ~IXGBE_FLAG_RX_PS_ENABLED;
2026#endif /* IXGBE_FCOE */
2027
2028 /* Set the RX buffer length according to the mode */ 1997 /* Set the RX buffer length according to the mode */
2029 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 1998 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) {
2030 rx_buf_len = IXGBE_RX_HDR_SIZE; 1999 rx_buf_len = IXGBE_RX_HDR_SIZE;
@@ -2072,29 +2041,35 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
2072 * the Base and Length of the Rx Descriptor Ring 2041 * the Base and Length of the Rx Descriptor Ring
2073 */ 2042 */
2074 for (i = 0; i < adapter->num_rx_queues; i++) { 2043 for (i = 0; i < adapter->num_rx_queues; i++) {
2075 rdba = adapter->rx_ring[i].dma; 2044 rx_ring = &adapter->rx_ring[i];
2076 j = adapter->rx_ring[i].reg_idx; 2045 rdba = rx_ring->dma;
2046 j = rx_ring->reg_idx;
2077 IXGBE_WRITE_REG(hw, IXGBE_RDBAL(j), (rdba & DMA_BIT_MASK(32))); 2047 IXGBE_WRITE_REG(hw, IXGBE_RDBAL(j), (rdba & DMA_BIT_MASK(32)));
2078 IXGBE_WRITE_REG(hw, IXGBE_RDBAH(j), (rdba >> 32)); 2048 IXGBE_WRITE_REG(hw, IXGBE_RDBAH(j), (rdba >> 32));
2079 IXGBE_WRITE_REG(hw, IXGBE_RDLEN(j), rdlen); 2049 IXGBE_WRITE_REG(hw, IXGBE_RDLEN(j), rdlen);
2080 IXGBE_WRITE_REG(hw, IXGBE_RDH(j), 0); 2050 IXGBE_WRITE_REG(hw, IXGBE_RDH(j), 0);
2081 IXGBE_WRITE_REG(hw, IXGBE_RDT(j), 0); 2051 IXGBE_WRITE_REG(hw, IXGBE_RDT(j), 0);
2082 adapter->rx_ring[i].head = IXGBE_RDH(j); 2052 rx_ring->head = IXGBE_RDH(j);
2083 adapter->rx_ring[i].tail = IXGBE_RDT(j); 2053 rx_ring->tail = IXGBE_RDT(j);
2084 adapter->rx_ring[i].rx_buf_len = rx_buf_len; 2054 rx_ring->rx_buf_len = rx_buf_len;
2055
2056 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED)
2057 rx_ring->flags |= IXGBE_RING_RX_PS_ENABLED;
2085 2058
2086#ifdef IXGBE_FCOE 2059#ifdef IXGBE_FCOE
2087 if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) { 2060 if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) {
2088 struct ixgbe_ring_feature *f; 2061 struct ixgbe_ring_feature *f;
2089 f = &adapter->ring_feature[RING_F_FCOE]; 2062 f = &adapter->ring_feature[RING_F_FCOE];
2090 if ((rx_buf_len < IXGBE_FCOE_JUMBO_FRAME_SIZE) && 2063 if ((i >= f->mask) && (i < f->mask + f->indices)) {
2091 (i >= f->mask) && (i < f->mask + f->indices)) 2064 rx_ring->flags &= ~IXGBE_RING_RX_PS_ENABLED;
2092 adapter->rx_ring[i].rx_buf_len = 2065 if (rx_buf_len < IXGBE_FCOE_JUMBO_FRAME_SIZE)
2093 IXGBE_FCOE_JUMBO_FRAME_SIZE; 2066 rx_ring->rx_buf_len =
2067 IXGBE_FCOE_JUMBO_FRAME_SIZE;
2068 }
2094 } 2069 }
2095 2070
2096#endif /* IXGBE_FCOE */ 2071#endif /* IXGBE_FCOE */
2097 ixgbe_configure_srrctl(adapter, j); 2072 ixgbe_configure_srrctl(adapter, rx_ring);
2098 } 2073 }
2099 2074
2100 if (hw->mac.type == ixgbe_mac_82598EB) { 2075 if (hw->mac.type == ixgbe_mac_82598EB) {
@@ -2170,7 +2145,8 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
2170 if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) { 2145 if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) {
2171 /* Enable 82599 HW-RSC */ 2146 /* Enable 82599 HW-RSC */
2172 for (i = 0; i < adapter->num_rx_queues; i++) { 2147 for (i = 0; i < adapter->num_rx_queues; i++) {
2173 j = adapter->rx_ring[i].reg_idx; 2148 rx_ring = &adapter->rx_ring[i];
2149 j = rx_ring->reg_idx;
2174 rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(j)); 2150 rscctrl = IXGBE_READ_REG(hw, IXGBE_RSCCTL(j));
2175 rscctrl |= IXGBE_RSCCTL_RSCEN; 2151 rscctrl |= IXGBE_RSCCTL_RSCEN;
2176 /* 2152 /*
@@ -2178,7 +2154,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
2178 * total size of max desc * buf_len is not greater 2154 * total size of max desc * buf_len is not greater
2179 * than 65535 2155 * than 65535
2180 */ 2156 */
2181 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 2157 if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED) {
2182#if (MAX_SKB_FRAGS > 16) 2158#if (MAX_SKB_FRAGS > 16)
2183 rscctrl |= IXGBE_RSCCTL_MAXDESC_16; 2159 rscctrl |= IXGBE_RSCCTL_MAXDESC_16;
2184#elif (MAX_SKB_FRAGS > 8) 2160#elif (MAX_SKB_FRAGS > 8)
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h
index 17ee3890a0a1..f0f3406ef001 100644
--- a/drivers/net/ixgbe/ixgbe_type.h
+++ b/drivers/net/ixgbe/ixgbe_type.h
@@ -719,6 +719,12 @@
719#define IXGBE_ECC_STATUS_82599 0x110E0 719#define IXGBE_ECC_STATUS_82599 0x110E0
720#define IXGBE_BAR_CTRL_82599 0x110F4 720#define IXGBE_BAR_CTRL_82599 0x110F4
721 721
722/* PCI Express Control */
723#define IXGBE_GCR_CMPL_TMOUT_MASK 0x0000F000
724#define IXGBE_GCR_CMPL_TMOUT_10ms 0x00001000
725#define IXGBE_GCR_CMPL_TMOUT_RESEND 0x00010000
726#define IXGBE_GCR_CAP_VER2 0x00040000
727
722/* Time Sync Registers */ 728/* Time Sync Registers */
723#define IXGBE_TSYNCRXCTL 0x05188 /* Rx Time Sync Control register - RW */ 729#define IXGBE_TSYNCRXCTL 0x05188 /* Rx Time Sync Control register - RW */
724#define IXGBE_TSYNCTXCTL 0x08C00 /* Tx Time Sync Control register - RW */ 730#define IXGBE_TSYNCTXCTL 0x08C00 /* Tx Time Sync Control register - RW */
@@ -1522,6 +1528,7 @@
1522 1528
1523/* PCI Bus Info */ 1529/* PCI Bus Info */
1524#define IXGBE_PCI_LINK_STATUS 0xB2 1530#define IXGBE_PCI_LINK_STATUS 0xB2
1531#define IXGBE_PCI_DEVICE_CONTROL2 0xC8
1525#define IXGBE_PCI_LINK_WIDTH 0x3F0 1532#define IXGBE_PCI_LINK_WIDTH 0x3F0
1526#define IXGBE_PCI_LINK_WIDTH_1 0x10 1533#define IXGBE_PCI_LINK_WIDTH_1 0x10
1527#define IXGBE_PCI_LINK_WIDTH_2 0x20 1534#define IXGBE_PCI_LINK_WIDTH_2 0x20
@@ -1532,6 +1539,7 @@
1532#define IXGBE_PCI_LINK_SPEED_5000 0x2 1539#define IXGBE_PCI_LINK_SPEED_5000 0x2
1533#define IXGBE_PCI_HEADER_TYPE_REGISTER 0x0E 1540#define IXGBE_PCI_HEADER_TYPE_REGISTER 0x0E
1534#define IXGBE_PCI_HEADER_TYPE_MULTIFUNC 0x80 1541#define IXGBE_PCI_HEADER_TYPE_MULTIFUNC 0x80
1542#define IXGBE_PCI_DEVICE_CONTROL2_16ms 0x0005
1535 1543
1536/* Number of 100 microseconds we wait for PCI Express master disable */ 1544/* Number of 100 microseconds we wait for PCI Express master disable */
1537#define IXGBE_PCI_MASTER_DISABLE_TIMEOUT 800 1545#define IXGBE_PCI_MASTER_DISABLE_TIMEOUT 800