<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/ethernet/intel/igb, branch linux-3.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2019-04-04T15:14:02Z</updated>
<entry>
<title>igb: Fix an issue that PME is not enabled during runtime suspend</title>
<updated>2019-04-04T15:14:02Z</updated>
<author>
<name>Kai-Heng Feng</name>
</author>
<published>2018-12-03T05:54:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=100897f4487ac739bb3f941a6672c96f99ff1946'/>
<id>urn:sha1:100897f4487ac739bb3f941a6672c96f99ff1946</id>
<content type='text'>
commit 1fb3a7a75e2efcc83ef21f2434069cddd6fae6f5 upstream.

I210 ethernet card doesn't wakeup when a cable gets plugged. It's
because its PME is not set.

Since commit 42eca2302146 ("PCI: Don't touch card regs after runtime
suspend D3"), if the PCI state is saved, pci_pm_runtime_suspend() stops
calling pci_finish_runtime_suspend(), which enables the PCI PME.

To fix the issue, let's not to save PCI states when it's runtime
suspend, to let the PCI subsystem enables PME.

Fixes: 42eca2302146 ("PCI: Don't touch card regs after runtime suspend D3")
Signed-off-by: Kai-Heng Feng &lt;kai.heng.feng@canonical.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>igb: Use smp_rmb rather than read_barrier_depends</title>
<updated>2018-02-13T18:42:29Z</updated>
<author>
<name>Brian King</name>
</author>
<published>2017-11-17T17:05:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4bad0df1f1500ebe910e8782324b5f9893e952af'/>
<id>urn:sha1:4bad0df1f1500ebe910e8782324b5f9893e952af</id>
<content type='text'>
commit c4cb99185b4cc96c0a1c70104dc21ae14d7e7f28 upstream.

The original issue being fixed in this patch was seen with the ixgbe
driver, but the same issue exists with igb as well, as the code is
very similar. read_barrier_depends is not sufficient to ensure
loads following it are not speculatively loaded out of order
by the CPU, which can result in stale data being loaded, causing
potential system crashes.

Signed-off-by: Brian King &lt;brking@linux.vnet.ibm.com&gt;
Acked-by: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>igb: Fix oops caused by missing queue pairing</title>
<updated>2015-09-28T09:21:44Z</updated>
<author>
<name>Shota Suzuki</name>
</author>
<published>2015-07-01T00:25:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6d39fea0858f4bbd2b9a021c0d191b8b8ece4ea'/>
<id>urn:sha1:f6d39fea0858f4bbd2b9a021c0d191b8b8ece4ea</id>
<content type='text'>
commit 72ddef0506da852dc82f078f37ced8ef4d74a2bf upstream.

When initializing igb driver (e.g. 82576, I350), IGB_FLAG_QUEUE_PAIRS is
set if adapter-&gt;rss_queues exceeds half of max_rss_queues in
igb_init_queue_configuration().
On the other hand, IGB_FLAG_QUEUE_PAIRS is not set even if the number of
queues exceeds half of max_combined in igb_set_channels() when changing
the number of queues by "ethtool -L".
In this case, if numvecs is larger than MAX_MSIX_ENTRIES (10), the size
of adapter-&gt;msix_entries[], an overflow can occur in
igb_set_interrupt_capability(), which in turn leads to an oops.

Fix this problem as follows:
 - When changing the number of queues by "ethtool -L", set
   IGB_FLAG_QUEUE_PAIRS in the same way as initializing igb driver.
 - When increasing the size of q_vector, reallocate it appropriately.
   (With IGB_FLAG_QUEUE_PAIRS set, the size of q_vector gets larger.)

Another possible way to fix this problem is to cap the queues at its
initial number, which is the number of the initial online cpus. But this
is not the optimal way because we cannot increase queues when another
cpu becomes online.

Note that before commit cd14ef54d25b ("igb: Change to use statically
allocated array for MSIx entries"), this problem did not cause oops
but just made the number of queues become 1 because of entering msi_only
mode in igb_set_interrupt_capability().

Fixes: 907b7835799f ("igb: Add ethtool support to configure number of channels")
Signed-off-by: Shota Suzuki &lt;suzuki_shota_t3@lab.ntt.co.jp&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>igb: Fix NULL assignment to incorrect variable in igb_reset_q_vector</title>
<updated>2015-05-28T09:00:04Z</updated>
<author>
<name>Toshiaki Makita</name>
</author>
<published>2015-04-13T09:15:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e0f9de58e7c4febc4ece7c007cc935441a313a5a'/>
<id>urn:sha1:e0f9de58e7c4febc4ece7c007cc935441a313a5a</id>
<content type='text'>
commit 2439fc4d71f71b47c8ace1f42eb46039222282a0 upstream.

adapter-&gt;tx_ring is set to NULL where rx_ring should be.

Fixes: 5536d2102a2d ("igb: Combine q_vector and ring allocation into a single function")
Signed-off-by: Toshiaki Makita &lt;makita.toshiaki@lab.ntt.co.jp&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>igb: Fix oops on changing number of rings</title>
<updated>2015-05-28T09:00:04Z</updated>
<author>
<name>Toshiaki Makita</name>
</author>
<published>2015-04-13T09:15:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8236bc6eb48d39bd0986f8a711ff3007c23f536b'/>
<id>urn:sha1:8236bc6eb48d39bd0986f8a711ff3007c23f536b</id>
<content type='text'>
commit c0a06ee185f2b785c7bd44c4fb6fcae80f7d1a54 upstream.

When changing the number of rings by ethtool -L, q_vectors are reused,
which causes oops because of uninitialized pointers.

- When an rx is reused as a tx, q_vector-&gt;rx.ring is not set to NULL, which
  misleads igb_poll() to determine that it has an rx ring although it
  actually points to the tx ring.
- When a tx is reused as an rx, q_vector-&gt;rx.ring-&gt;skb
  (q_vector-&gt;ring[0].skb) has a value that was used as tx_stats before.

Fix these problems by zeroing it out on reuseing it.

Fixes: 02ef6e1d0b00 ("igb: Fix queue allocation method to accommodate changing during runtime")
Signed-off-by: Toshiaki Makita &lt;makita.toshiaki@lab.ntt.co.jp&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>igb: bring link up when PHY is powered up</title>
<updated>2014-12-15T11:56:27Z</updated>
<author>
<name>Todd Fujinaka</name>
</author>
<published>2014-06-17T06:58:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3c53538364ff3ae1560c36ce8afedbeeff0eb9ef'/>
<id>urn:sha1:3c53538364ff3ae1560c36ce8afedbeeff0eb9ef</id>
<content type='text'>
commit aec653c43b0c55667355e26d7de1236bda9fb4e3 upstream.

Call igb_setup_link() when the PHY is powered up.

Signed-off-by: Todd Fujinaka &lt;todd.fujinaka@intel.com&gt;
Reported-by: Jeff Westfahl &lt;jeff.westfahl@ni.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Cc: Vincent Donnefort &lt;vdonnefort@gmail.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>igb: do a reset on SR-IOV re-init if device is down</title>
<updated>2014-07-10T19:45:24Z</updated>
<author>
<name>Stefan Assmann</name>
</author>
<published>2014-07-10T10:29:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=76252723e88681628a3dbb9c09c963e095476f73'/>
<id>urn:sha1:76252723e88681628a3dbb9c09c963e095476f73</id>
<content type='text'>
To properly re-initialize SR-IOV it is necessary to reset the device
even if it is already down. Not doing this may result in Tx unit hangs.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Stefan Assmann &lt;sassmann@kpanic.de&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>igb: Workaround for i210 Errata 25: Slow System Clock</title>
<updated>2014-07-10T08:48:28Z</updated>
<author>
<name>Todd Fujinaka</name>
</author>
<published>2014-07-10T08:47:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=948264879b6894dc389a44b99fae4f0b72932619'/>
<id>urn:sha1:948264879b6894dc389a44b99fae4f0b72932619</id>
<content type='text'>
On some devices, the internal PLL circuit occasionally provides the
wrong clock frequency after power up. The probability of failure is less
than one failure per 1000 power cycles. When the failure occurs, the
internal clock frequency is around 1/20 of the correct frequency.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Todd Fujinaka &lt;todd.fujinaka@intel.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>igb: separate hardware setting from the set_ts_config ioctl</title>
<updated>2014-06-11T15:45:55Z</updated>
<author>
<name>Jacob Keller</name>
</author>
<published>2014-06-05T07:25:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9f62ecf4255ea0fb3e653fc5fc91ef7b38812bb5'/>
<id>urn:sha1:9f62ecf4255ea0fb3e653fc5fc91ef7b38812bb5</id>
<content type='text'>
This patch separates the hardware logic from the set function, so that
we can re-use it during a ptp_reset. This enables the reset to return
functionality to the last known timestamp mode, rather than resetting
the value. We initialize the mode to off during the ptp_init cycle.

Signed-off-by: Jacob Keller &lt;jacob.e.keller@intel.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
</content>
</entry>
<entry>
<title>igb: unhide invariant returns</title>
<updated>2014-06-11T15:45:48Z</updated>
<author>
<name>Todd Fujinaka</name>
</author>
<published>2014-06-04T07:12:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=23d87824de22002b6e073049bb57c97c309e5263'/>
<id>urn:sha1:23d87824de22002b6e073049bb57c97c309e5263</id>
<content type='text'>
Return a 0 directly rather than a constant.

Reported-by: Peter Senna Tschudin &lt;peter.senna@gmail.com&gt;
Signed-off-by: Todd Fujinaka &lt;todd.fujinaka@intel.com&gt;
Tested-by: Aaron Brown &lt;aaron.f.brown@intel.com&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
</content>
</entry>
</feed>
