<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/ethernet/mediatek, branch linux-4.7.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.7.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.7.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-06-11T06:29:30Z</updated>
<entry>
<title>net: mediatek: remove superfluous queue wake up call</title>
<updated>2016-06-11T06:29:30Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=82c6544dddc6c4bd940917af2f987dee6be0fc17'/>
<id>urn:sha1:82c6544dddc6c4bd940917af2f987dee6be0fc17</id>
<content type='text'>
The code checks if the queue should be stopped because we are below the
threshold of free descriptors only to check if it should be started again.
If we do end up in a state where we are at the threshold limit, it makes
more sense to just stop the queue and wait for the next IRQ to trigger the
TX housekeeping again. There is no rush in enqueuing the next packet, it
needs to wait for all the others in the queue to be dispatched first
anyway.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: only wake the queue if it is stopped</title>
<updated>2016-06-11T06:29:30Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ad3cba989e8b1bbefe078eece29f0e8d8aaea1d6'/>
<id>urn:sha1:ad3cba989e8b1bbefe078eece29f0e8d8aaea1d6</id>
<content type='text'>
The current code unconditionally wakes up the queue at the end of each
tx_poll action. Change the code to only wake up the queues if any of
them have actually been stopped before.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: fix off by one in the TX ring allocation</title>
<updated>2016-06-11T06:29:30Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=12c97c13ea7174db5b5dc4a1ef91d4e9245bb569'/>
<id>urn:sha1:12c97c13ea7174db5b5dc4a1ef91d4e9245bb569</id>
<content type='text'>
The TX ring setup has an off by one error causing it to not utilise all
descriptors. This has the side effect that we need to reset the next
pointer at runtime to make it work. Fix the off by one and remove the
code fixing the ring at runtime.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: increase watchdog_timeo</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eaadf9fd3f6390f6ecbd0dfbd5997a0486fc9d5e'/>
<id>urn:sha1:eaadf9fd3f6390f6ecbd0dfbd5997a0486fc9d5e</id>
<content type='text'>
During stress testing, after reducing the threshold value, we have seen
TX timeouts that were caused by the watchdog_timeo value being too low.
Increase the value to 5 * HZ which is a value commonly used by many other
drivers.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: fix threshold value</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=04698cccb1de54d5d97fda2e4a1c6ca365da0f70'/>
<id>urn:sha1:04698cccb1de54d5d97fda2e4a1c6ca365da0f70</id>
<content type='text'>
The logic to calculate the threshold value for stopping the TX queue is
bad. Currently it will always use 1/2 of the rings size, which is way too
much. Set the threshold to MAX_SKB_FRAGS. This makes sure that the queue
is stopped when there is not enough room to accept an additional segment. 

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: disable all interrupts during probe</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2ff0bb61646f286fa97db2904491974302a14f1f'/>
<id>urn:sha1:2ff0bb61646f286fa97db2904491974302a14f1f</id>
<content type='text'>
The current code only disables those IRQs that we will later use. To
ensure that we have a predefined state, we really want to disable all IRQs.
Change the code to disable all IRQs to achieve this.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: add next data pointer coherency protection</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6675086d04e7c0748cd5884f7c8611b5f0836250'/>
<id>urn:sha1:6675086d04e7c0748cd5884f7c8611b5f0836250</id>
<content type='text'>
The QDMA engine can fail to update the register pointing to the next TX
descriptor if this bit does not get set in the QDMA configuration register.
Not setting this bit can result in invalid values inside the TX rings
registers which will causes TX stalls.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: dropped rx packets are not being counted properly</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=94321a9fc9f5b6c6e949cc7c69741538f556ab74'/>
<id>urn:sha1:94321a9fc9f5b6c6e949cc7c69741538f556ab74</id>
<content type='text'>
There are two places inside mtk_poll_rx where rx_dropped is not being
incremented properly. Fix this by adding the missing code to increment
the counter.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: invalid buffer lookup in mtk_tx_map()</title>
<updated>2016-06-11T06:29:29Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:28:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2fae723cefb8bfe712371978288aa0a70b54802e'/>
<id>urn:sha1:2fae723cefb8bfe712371978288aa0a70b54802e</id>
<content type='text'>
The lookup of the tx_buffer in the error path inside mtk_tx_map() uses the
wrong descriptor pointer. This looks like a copy &amp; paste error. Change the
code to use the correct pointer.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: mediatek: fix missing free of scratch memory</title>
<updated>2016-06-11T06:29:28Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2016-06-10T11:27:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=605e4fe476956c67ced8518247e6c9601a31b868'/>
<id>urn:sha1:605e4fe476956c67ced8518247e6c9601a31b868</id>
<content type='text'>
Scratch memory gets allocated in mtk_init_fq_dma() but the corresponding
code to free it is missing inside mtk_dma_free() causing a memory leak.
With this patch applied, we can run ifconfig up/down several thousand
times without any problems.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
