<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/net/ethernet/dlink, branch v6.18.21</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v6.18.21</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v6.18.21'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2025-10-22T01:38:38+00:00</updated>
<entry>
<title>net: dlink: use dev_kfree_skb_any instead of dev_kfree_skb</title>
<updated>2025-10-22T01:38:38+00:00</updated>
<author>
<name>Yeounsu Moon</name>
<email>yyyynoom@gmail.com</email>
</author>
<published>2025-10-19T07:55:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5523508258d390fd55b25c1c0f99c092f23a39e9'/>
<id>urn:sha1:5523508258d390fd55b25c1c0f99c092f23a39e9</id>
<content type='text'>
Replace `dev_kfree_skb()` with `dev_kfree_skb_any()` in `start_xmit()`
which can be called from netpoll (hard IRQ) and from other contexts.

Also, `np-&gt;link_status` can be changed at any time by interrupt handler.

  &lt;idle&gt;-0       [011] dNh4.  4541.754603: start_xmit &lt;-netpoll_start_xmit
  &lt;idle&gt;-0       [011] dNh4.  4541.754622: &lt;stack trace&gt;
 =&gt; [FTRACE TRAMPOLINE]
 =&gt; start_xmit
 =&gt; netpoll_start_xmit
 =&gt; netpoll_send_skb
 =&gt; write_msg
 =&gt; console_flush_all
 =&gt; console_unlock
 =&gt; vprintk_emit
 =&gt; _printk
 =&gt; rio_interrupt
 =&gt; __handle_irq_event_percpu
 =&gt; handle_irq_event
 =&gt; handle_fasteoi_irq
 =&gt; __common_interrupt
 =&gt; common_interrupt
 =&gt; asm_common_interrupt
 =&gt; mwait_idle
 =&gt; default_idle_call
 =&gt; do_idle
 =&gt; cpu_startup_entry
 =&gt; start_secondary
 =&gt; common_startup_64

This issue can occur when the link state changes from off to on
(e.g., plugging or unplugging the LAN cable) while transmitting a
packet. If the skb has a destructor, a warning message may be
printed in this situation.

-&gt; consume_skb (dev_kfree_skb())
  -&gt; __kfree_skb()
    -&gt; skb_release_all()
      -&gt; skb_release_head_state(skb)
	 if (skb-&gt;destructor) {
	         DEBUG_NET_WARN_ON_ONCE(in_hardirq());
		 skb-&gt;destructor(skb);
	 }

Found by inspection.

Signed-off-by: Yeounsu Moon &lt;yyyynoom@gmail.com&gt;
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Tested-on: D-Link DGE-550T Rev-A3
Reviewed-by: Simon Horman &lt;horms@kernel.org&gt;
Link: https://patch.msgid.link/20251019075540.55697-1-yyyynoom@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dlink: handle dma_map_single() failure properly</title>
<updated>2025-10-12T18:02:16+00:00</updated>
<author>
<name>Yeounsu Moon</name>
<email>yyyynoom@gmail.com</email>
</author>
<published>2025-10-09T15:57:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=65946eac6d888d50ae527c4e5c237dbe5cc3a2f2'/>
<id>urn:sha1:65946eac6d888d50ae527c4e5c237dbe5cc3a2f2</id>
<content type='text'>
There is no error handling for `dma_map_single()` failures.

Add error handling by checking `dma_mapping_error()` and freeing
the `skb` using `dev_kfree_skb()` (process context) when it fails.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Yeounsu Moon &lt;yyyynoom@gmail.com&gt;
Tested-on: D-Link DGE-550T Rev-A3
Suggested-by: Simon Horman &lt;horms@kernel.org&gt;
Reviewed-by: Simon Horman &lt;horms@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: dlink: handle copy_thresh allocation failure</title>
<updated>2025-09-30T01:47:49+00:00</updated>
<author>
<name>Yeounsu Moon</name>
<email>yyyynoom@gmail.com</email>
</author>
<published>2025-09-28T19:01:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8169a6011c5fecc6cb1c3654c541c567d3318de8'/>
<id>urn:sha1:8169a6011c5fecc6cb1c3654c541c567d3318de8</id>
<content type='text'>
The driver did not handle failure of `netdev_alloc_skb_ip_align()`.
If the allocation failed, dereferencing `skb-&gt;protocol` could lead to
a NULL pointer dereference.

This patch tries to allocate `skb`. If the allocation fails, it falls
back to the normal path.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Suggested-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
Tested-on: D-Link DGE-550T Rev-A3
Signed-off-by: Yeounsu Moon &lt;yyyynoom@gmail.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Link: https://patch.msgid.link/20250928190124.1156-1-yyyynoom@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>eth: sundance: fix endian issues</title>
<updated>2025-09-02T22:49:41+00:00</updated>
<author>
<name>Jakub Kicinski</name>
<email>kuba@kernel.org</email>
</author>
<published>2025-09-01T21:08:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=d2644cbc736f737142a7595fa9346f63e6fc9b33'/>
<id>urn:sha1:d2644cbc736f737142a7595fa9346f63e6fc9b33</id>
<content type='text'>
Fix sparse warnings about endianness. Store DMA addr to a variable
of correct type and then only convert it when writing to the descriptor.

Reviewed-by: Simon Horman &lt;horms@kernel.org&gt;
Link: https://patch.msgid.link/20250901210818.1025316-2-kuba@kernel.org
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>Revert "eth: remove the DLink/Sundance (ST201) driver"</title>
<updated>2025-09-02T22:49:41+00:00</updated>
<author>
<name>Jakub Kicinski</name>
<email>kuba@kernel.org</email>
</author>
<published>2025-09-01T21:08:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8b3332c1331c7c260bdff89bfdfd24ea263be764'/>
<id>urn:sha1:8b3332c1331c7c260bdff89bfdfd24ea263be764</id>
<content type='text'>
This reverts commit 8401a108a63302a5a198c7075d857895ca624851.

I got a report from an (anonymous) Sundance user:

  Ethernet controller: Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY (rev 31)

Revert the driver back in. Make following changes:
 - update Denis's email address in MAINTAINERS
 - adjust to timer API renames:
   - del_timer_sync() -&gt; timer_delete_sync()
   - from_timer() -&gt; timer_container_of()

Fixes: 8401a108a633 ("eth: remove the DLink/Sundance (ST201) driver")
Reviewed-by: Simon Horman &lt;horms@kernel.org&gt;
Link: https://patch.msgid.link/20250901210818.1025316-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dlink: fix multicast stats being counted incorrectly</title>
<updated>2025-08-26T00:22:31+00:00</updated>
<author>
<name>Yeounsu Moon</name>
<email>yyyynoom@gmail.com</email>
</author>
<published>2025-08-23T18:29:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=007a5ffadc4fd51739527f1503b7cf048f31c413'/>
<id>urn:sha1:007a5ffadc4fd51739527f1503b7cf048f31c413</id>
<content type='text'>
`McstFramesRcvdOk` counts the number of received multicast packets, and
it reports the value correctly.

However, reading `McstFramesRcvdOk` clears the register to zero. As a
result, the driver was reporting only the packets since the last read,
instead of the accumulated total.

Fix this by updating the multicast statistics accumulatively instaed of
instantaneously.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Tested-on: D-Link DGE-550T Rev-A3
Signed-off-by: Yeounsu Moon &lt;yyyynoom@gmail.com&gt;
Reviewed-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Link: https://patch.msgid.link/20250823182927.6063-3-yyyynoom@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net</title>
<updated>2025-06-12T17:09:10+00:00</updated>
<author>
<name>Jakub Kicinski</name>
<email>kuba@kernel.org</email>
</author>
<published>2025-06-12T17:08:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=535de528015b56e34a40a8e1eb1629fadf809a84'/>
<id>urn:sha1:535de528015b56e34a40a8e1eb1629fadf809a84</id>
<content type='text'>
Cross-merge networking fixes after downstream PR (net-6.16-rc2).

No conflicts or adjacent changes.

Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dlink: enable RMON MMIO access on supported devices</title>
<updated>2025-06-11T00:47:13+00:00</updated>
<author>
<name>Moon Yeounsu</name>
<email>yyyynoom@gmail.com</email>
</author>
<published>2025-06-10T00:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7fc18f9476256c03755d93b1cec0d42cf64d850a'/>
<id>urn:sha1:7fc18f9476256c03755d93b1cec0d42cf64d850a</id>
<content type='text'>
Enable memory-mapped I/O access to RMON statistics registers for devices
known to work correctly. Currently, only the D-Link DGE-550T (`0x4000`)
with PCI revision A3 (`0x0c`) is allowed.

To avoid issues on other hardware, a runtime check was added to restrict
MMIO usage. The `MEM_MAPPING` macro was removed in favor of runtime
detection.

To access RMON registers, the code `dw32(RmonStatMask, 0x0007ffff);`
must also be skipped, so this patch conditionally disables it as well.

Tested-on: D-Link DGE-550T Rev-A3
Signed-off-by: Moon Yeounsu &lt;yyyynoom@gmail.com&gt;
Link: https://patch.msgid.link/20250610000130.49065-2-yyyynoom@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>treewide, timers: Rename from_timer() to timer_container_of()</title>
<updated>2025-06-08T07:07:37+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@kernel.org</email>
</author>
<published>2025-05-09T05:51:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=41cb08555c4164996d67c78b3bf1c658075b75f1'/>
<id>urn:sha1:41cb08555c4164996d67c78b3bf1c658075b75f1</id>
<content type='text'>
Move this API to the canonical timer_*() namespace.

[ tglx: Redone against pre rc1 ]

Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Link: https://lore.kernel.org/all/aB2X0jCKQO56WdMt@gmail.com

</content>
</entry>
<entry>
<title>net: dlink: Correct endian treatment of t_SROM data</title>
<updated>2025-05-25T14:08:24+00:00</updated>
<author>
<name>Simon Horman</name>
<email>horms@kernel.org</email>
</author>
<published>2025-05-20T14:25:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b3456571cea18e64b9eaf55044db56d45326134d'/>
<id>urn:sha1:b3456571cea18e64b9eaf55044db56d45326134d</id>
<content type='text'>
As it's name suggests, parse_eeprom() parses EEPROM data.

This is done by reading data, 16 bits at a time as follows:

  for (i = 0; i &lt; 128; i++)
    ((__le16 *) sromdata)[i] = cpu_to_le16(read_eeprom(np, i));

sromdata is at the same memory location as psrom.
And the type of psrom is a pointer to struct t_SROM.

As can be seen in the loop above, data is stored in sromdata, and thus
psrom, as 16-bit little-endian values. However, the integer fields of
t_SROM are host byte order.

In the case of the led_mode field this results in a but which has been
addressed by commit e7e5ae71831c ("net: dlink: Correct endianness
handling of led_mode").

In the case of the remaining fields, which are updated by this patch,
I do not believe this does not result in any bugs. But it does seem
best to correctly annotate the endianness of integers.

Flagged by Sparse as:

  .../dl2k.c:344:35: warning: restricted __le32 degrades to integer

Compile tested only.
No run-time change intended.

Signed-off-by: Simon Horman &lt;horms@kernel.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
