<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/drivers/net/ethernet/ti/cpsw.c, branch linux-4.3.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.3.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.3.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2015-10-21T13:41:42Z</updated>
<entry>
<title>drivers: net: cpsw: add phy-handle parsing</title>
<updated>2015-10-21T13:41:42Z</updated>
<author>
<name>Heiko Schocher</name>
<email>hs@denx.de</email>
</author>
<published>2015-10-17T04:04:35Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=9e42f715264ff158478fa30eaed847f6e131366b'/>
<id>urn:sha1:9e42f715264ff158478fa30eaed847f6e131366b</id>
<content type='text'>
add the ability to parse "phy-handle". This
is needed for phys, which have a DT node, and
need to parse DT properties.

Signed-off-by: Heiko Schocher &lt;hs@denx.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: add am335x errata workarround for interrutps</title>
<updated>2015-08-13T23:51:00Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-08-12T09:52:53Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=7da1160002f1d59e79e7d89da474ff7c679a07a5'/>
<id>urn:sha1:7da1160002f1d59e79e7d89da474ff7c679a07a5</id>
<content type='text'>
As per Am335x Errata [1] Advisory 1.0.9, The CPSW C0_TX_PEND and
C0_RX_PEND interrupt outputs provide a single transmit interrupt
that combines transmit channel interrupts TXPEND[7:0] and a
single receive interrupt that combines receive channel interrupts
RXPEND[7:0]. The TXPEND[0] and RXPEND[0] interrupt outputs are
connected to the ARM Cortex-A8 interrupt controller (INTC) rather
than the C0_TX_PEND and C0_RX_PEND interrupt outputs. So even
though CPSW interrupt is cleared by writing appropriate values to
EOI register the interrupt is not cleared in IRQ controller. So
interrupt is still pending and CPU is struck in ISR, the
workaround is to disable the interrupts in ARM irq controller.

[1] http://www.ti.com/lit/er/sprz360f/sprz360f.pdf

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: add separate napi for tx</title>
<updated>2015-08-07T04:59:27Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-08-04T10:36:20Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=32a7432c0fb8b0117961bdc7ab256667d039de16'/>
<id>urn:sha1:32a7432c0fb8b0117961bdc7ab256667d039de16</id>
<content type='text'>
Instead of processing tx events in isr adding separate napi for
tx which improves performance by ~180Mbps with
omap2plus_defconfig on DRA74x platform. Also cleaning up rx napis
by renaming to napi_rx for better understanding the code.

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: dual_emac: simplify napi usage</title>
<updated>2015-08-07T04:59:27Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-08-04T10:36:19Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=d354eb85d61803e07831b68d1985cd9cfe2f8b59'/>
<id>urn:sha1:d354eb85d61803e07831b68d1985cd9cfe2f8b59</id>
<content type='text'>
Since interrupt is shared between the two ethernet interface and
in isr only one napi is scheduled at an instance so having two
napis doesn't make any difference. So making napi also as a
common resource for the dual ethernet interfaces.

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: remove disable_irq/enable_irq as irq can be masked from cpsw itself</title>
<updated>2015-08-07T04:59:27Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-08-04T10:36:18Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=870915feabdc3af5f0ebb72d1fcf96bff01837b0'/>
<id>urn:sha1:870915feabdc3af5f0ebb72d1fcf96bff01837b0</id>
<content type='text'>
CPSW interrupts can be disabled by masking CPSW interrupts and
clearing interrupt by writing appropriate EOI. So removing all
disable_irq/enable_irq as discussed in [1]

[1] http://patchwork.ozlabs.org/patch/492741/

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: remove tx event processing in rx napi poll</title>
<updated>2015-07-21T17:41:24Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-07-21T10:30:42Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=1e353cddcf81fbb79dd637cab9a22c837e94c205'/>
<id>urn:sha1:1e353cddcf81fbb79dd637cab9a22c837e94c205</id>
<content type='text'>
With commit c03abd84634d ("net: ethernet: cpsw: don't requests IRQs
we don't use") common isr and napi are separated into separate tx isr
and rx isr/napi, but still in rx napi tx events are handled. So removing
the tx event handling in rx napi.

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: fix disabling of tx interrupt in rx isr</title>
<updated>2015-07-09T21:52:48Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-07-08T09:05:22Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=5a0266af10246c84a6c712f365788800c7e23fd4'/>
<id>urn:sha1:5a0266af10246c84a6c712f365788800c7e23fd4</id>
<content type='text'>
In commit 'c03abd84634d ("net: ethernet: cpsw: don't requests
IRQs we don't use")', common isr is split into tx and rx, but
in rx isr tx interrupt is also disabledi in cpsw_disable_irq().
So tx interrupts are not handled during rx interrupts and rx
napi completion and results in poor tx performance by 40Mbps.
Fixing by disabling only rx interrupt in rx isr.

Cc: Felipe Balbi &lt;balbi@ti.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.0+
Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>drivers: net: cpsw: fix crash while accessing second slave ethernet interface</title>
<updated>2015-07-08T23:09:33Z</updated>
<author>
<name>Mugunthan V N</name>
<email>mugunthanvnm@ti.com</email>
</author>
<published>2015-07-07T13:00:39Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=1973db0df7c3bd69de2a1041d3364567287771d9'/>
<id>urn:sha1:1973db0df7c3bd69de2a1041d3364567287771d9</id>
<content type='text'>
When cpsw's number of slave is set to 1 in device tree and while
accessing second slave ndev and priv in cpsw_tx_interrupt(),
there is a kernel crash. This is due to cpsw_get_slave_priv()
not verifying number of slaves while retriving netdev priv and
returns a invalid memory region. Fixing the issue by introducing
number of slave check in cpsw_get_slave_priv() and
cpsw_get_slave_ndev().

[   15.879589] Unable to handle kernel paging request at virtual address 0f0e142c
[   15.888540] pgd = ed374000
[   15.891359] [0f0e142c] *pgd=00000000
[   15.895105] Internal error: Oops: 5 [#1] SMP ARM
[   15.899936] Modules linked in:
[   15.903139] CPU: 0 PID: 593 Comm: udhcpc Tainted: G        W       4.1.0-12205-gfda8b18-dirty #10
[   15.912386] Hardware name: Generic AM43 (Flattened Device Tree)
[   15.918557] task: ed2a2e00 ti: ed3fe000 task.ti: ed3fe000
[   15.924187] PC is at cpsw_tx_interrupt+0x30/0x44
[   15.929008] LR is at _raw_spin_unlock_irqrestore+0x40/0x44
[   15.934726] pc : [&lt;c048b9cc&gt;]    lr : [&lt;c05ef4f4&gt;]    psr: 20000193
[   15.934726] sp : ed3ffc08  ip : ed2a2e40  fp : 00000000
[   15.946685] r10: c0969ce8  r9 : c0969cfc  r8 : 00000000
[   15.952129] r7 : 000000c6  r6 : ee54ab00  r5 : ee169c64  r4 : ee534e00
[   15.958932] r3 : 0f0e0d0c  r2 : 00000000  r1 : ed3ffbc0  r0 : 00000001
[   15.965735] Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   15.973261] Control: 10c5387d  Table: ad374059  DAC: 00000015
[   15.979246] Process udhcpc (pid: 593, stack limit = 0xed3fe218)
[   15.985414] Stack: (0xed3ffc08 to 0xed400000)
[   15.989954] fc00:                   ee54ab00 c009928c c0a9e648 60000193 000032e4 ee169c00
[   15.998478] fc20: ee169c64 ee169c00 ee169c64 ee54ab00 00000001 00000001 ee67e268 ee008800
[   16.006995] fc40: ee534800 c009946c ee169c00 ee169c64 c08bd660 c009c370 c009c2a4 000000c6
[   16.015513] fc60: c08b75c4 c08b0854 00000000 c0098b3c 000000c6 c0098c50 ed3ffcb0 0000003a
[   16.024033] fc80: ed3ffcb0 fa24010c c08b7800 fa240100 ee7e9880 c00094c4 c05ef4e8 60000013
[   16.032556] fca0: ffffffff ed3ffce4 ee7e9880 c05ef964 00000001 ed2a33d8 00000000 ed2a2e00
[   16.041080] fcc0: 60000013 ee536bf8 60000013 ee51b800 ee7e9880 ee67e268 ee7e9880 ee534800
[   16.049603] fce0: c0ad0768 ed3ffcf8 c008e910 c05ef4e8 60000013 ffffffff 00000001 00000001
[   16.058121] fd00: ee536bf8 c0487a04 00000000 00000000 ee534800 00000000 00000156 c048c990
[   16.066645] fd20: 00000000 00000000 c0969f40 00000000 00000000 c05000e8 00000001 00000000
[   16.075167] fd40: 00000000 c051eefc 00000000 ee67e268 00000000 00000000 ee51b800 ed3ffd9c
[   16.083690] fd60: 00000000 ee67e200 ee51b800 ee7e9880 ee67e268 00000000 00000000 ee67e200
[   16.092211] fd80: ee51b800 ee7e9880 ee67e268 ee534800 ee67e200 c051eedc ee67e268 00000010
[   16.100727] fda0: 00000000 00000000 ee7e9880 ee534800 00000000 ee67e268 ee51b800 c05006fc
[   16.109247] fdc0: ee67e268 00000001 c0500488 00000156 ee7e9880 00000000 ed3fe000 fffffff4
[   16.117771] fde0: ed3fff1c ee7e9880 ee534800 00000148 00000000 ed1f8340 00000000 00000000
[   16.126289] fe00: 00000000 c05a9054 00000000 00000000 00000156 c0ab62a8 00000010 ed3e7000
[   16.134812] fe20: 00000000 00000008 edcfb700 ed3fff1c c0fb5f94 ed2a2e00 c0fb5f64 000005d8
[   16.143336] fe40: c0a9b3b8 00000000 ed3e7070 00000000 00000000 00000000 00009f40 00000000
[   16.151858] fe60: 00000000 00020022 00110008 00000000 00000000 43004400 00000000 ffffffff
[   16.160374] fe80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   16.168898] fea0: edcfb700 bee5f380 00000014 00000000 ed3fe000 00000000 00004400 c04e2b64
[   16.177415] fec0: 00000002 c04e3b00 ed3ffeec 00000001 0000011a 00000000 00000000 bee5f394
[   16.185937] fee0: 00000148 ed3fff10 00000014 00000001 00000000 00000000 ed3ffee4 00000000
[   16.194459] ff00: 00000000 00000000 00000000 c04e3664 00080011 00000002 06000000 ffffffff
[   16.202980] ff20: 0000ffff ffffffff 0000ffff c008dd54 ee5a6f08 ee636e80 c096972d c0089c14
[   16.211499] ff40: 00000000 60000013 ee5a6f40 60000013 00000000 ee5a6f40 00000002 00000006
[   16.220023] ff60: 00000000 edcfb700 00000001 ed2a2e00 c000f60c 00000001 0000011a c008ea34
[   16.228540] ff80: 00000006 00000000 bee5f380 00000014 bee5f380 00000014 bee5f380 00000122
[   16.237059] ffa0: c000f7c4 c000f5e0 bee5f380 00000014 00000006 bee5f394 00000148 00000000
[   16.245581] ffc0: bee5f380 00000014 bee5f380 00000122 fffffd6e 00004300 00004800 00004400
[   16.254104] ffe0: bee5f378 bee5f36c 000307ec b6f39044 40000010 00000006 ed36fa40 00000000
[   16.262642] [&lt;c048b9cc&gt;] (cpsw_tx_interrupt) from [&lt;c009928c&gt;] (handle_irq_event_percpu+0x64/0x204)
[   16.272076] [&lt;c009928c&gt;] (handle_irq_event_percpu) from [&lt;c009946c&gt;] (handle_irq_event+0x40/0x64)
[   16.281330] [&lt;c009946c&gt;] (handle_irq_event) from [&lt;c009c370&gt;] (handle_fasteoi_irq+0xcc/0x1a8)
[   16.290220] [&lt;c009c370&gt;] (handle_fasteoi_irq) from [&lt;c0098b3c&gt;] (generic_handle_irq+0x20/0x30)
[   16.299197] [&lt;c0098b3c&gt;] (generic_handle_irq) from [&lt;c0098c50&gt;] (__handle_domain_irq+0x64/0xdc)
[   16.308273] [&lt;c0098c50&gt;] (__handle_domain_irq) from [&lt;c00094c4&gt;] (gic_handle_irq+0x20/0x60)
[   16.316987] [&lt;c00094c4&gt;] (gic_handle_irq) from [&lt;c05ef964&gt;] (__irq_svc+0x44/0x5c)
[   16.324779] Exception stack(0xed3ffcb0 to 0xed3ffcf8)
[   16.330044] fca0:                                     00000001 ed2a33d8 00000000 ed2a2e00
[   16.338567] fcc0: 60000013 ee536bf8 60000013 ee51b800 ee7e9880 ee67e268 ee7e9880 ee534800
[   16.347090] fce0: c0ad0768 ed3ffcf8 c008e910 c05ef4e8 60000013 ffffffff
[   16.353987] [&lt;c05ef964&gt;] (__irq_svc) from [&lt;c05ef4e8&gt;] (_raw_spin_unlock_irqrestore+0x34/0x44)
[   16.362973] [&lt;c05ef4e8&gt;] (_raw_spin_unlock_irqrestore) from [&lt;c0487a04&gt;] (cpdma_check_free_tx_desc+0x60/0x6c)
[   16.373311] [&lt;c0487a04&gt;] (cpdma_check_free_tx_desc) from [&lt;c048c990&gt;] (cpsw_ndo_start_xmit+0xb4/0x1ac)
[   16.383017] [&lt;c048c990&gt;] (cpsw_ndo_start_xmit) from [&lt;c05000e8&gt;] (dev_hard_start_xmit+0x2a4/0x4c0)
[   16.392364] [&lt;c05000e8&gt;] (dev_hard_start_xmit) from [&lt;c051eedc&gt;] (sch_direct_xmit+0xf4/0x210)
[   16.401246] [&lt;c051eedc&gt;] (sch_direct_xmit) from [&lt;c05006fc&gt;] (__dev_queue_xmit+0x2ac/0x7bc)
[   16.409960] [&lt;c05006fc&gt;] (__dev_queue_xmit) from [&lt;c05a9054&gt;] (packet_sendmsg+0xc68/0xeb4)
[   16.418585] [&lt;c05a9054&gt;] (packet_sendmsg) from [&lt;c04e2b64&gt;] (sock_sendmsg+0x14/0x24)
[   16.426663] [&lt;c04e2b64&gt;] (sock_sendmsg) from [&lt;c04e3b00&gt;] (SyS_sendto+0xb4/0xe0)
[   16.434377] [&lt;c04e3b00&gt;] (SyS_sendto) from [&lt;c000f5e0&gt;] (ret_fast_syscall+0x0/0x54)
[   16.442360] Code: e5943118 e593303c e3530000 0a000002 (e5930720)
[   16.448716] ---[ end trace a68159f094d85ba6 ]---
[   16.453526] Kernel panic - not syncing: Fatal exception in interrupt
[   16.460149] ---[ end Kernel panic - not syncing: Fatal exception in interrupt

Signed-off-by: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.8+
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: cpsw: remove redundant calls disabling dma interrupts.</title>
<updated>2015-05-25T22:19:09Z</updated>
<author>
<name>Richard Cochran</name>
<email>richardcochran@gmail.com</email>
</author>
<published>2015-05-25T09:02:16Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=61d22596a760091b51d93853b3a303c2241193be'/>
<id>urn:sha1:61d22596a760091b51d93853b3a303c2241193be</id>
<content type='text'>
The function, cpsw_intr_disable, already calls cpdma_ctlr_int_ctrl.  There
is no need to disable the dma interrupts twice.  This patch removes the
extra calls.

Signed-off-by: Richard Cochran &lt;richardcochran@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: cpsw: remove redundant calls enabling dma interrupts.</title>
<updated>2015-05-25T22:19:09Z</updated>
<author>
<name>Richard Cochran</name>
<email>richardcochran@gmail.com</email>
</author>
<published>2015-05-25T09:02:15Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=071f1a960c67be004c4fa34e0b079c7747038693'/>
<id>urn:sha1:071f1a960c67be004c4fa34e0b079c7747038693</id>
<content type='text'>
The function, cpsw_intr_enable, already calls cpdma_ctlr_int_ctrl.  There
is no need to enable the dma interrupts twice.  This patch removes the
extra call.

Signed-off-by: Richard Cochran &lt;richardcochran@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
