<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>

<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>

<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px;
}
body {
font-family: var(--default-regular-font, "GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px; font-family: var(--default-regular-font, "GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">

<p class="details" style="font-style: italic; color: #737278;">
<a href="https://gitlab.rtems.org/cedric">Cedric Berger</a> created an issue: <a href="https://gitlab.rtems.org/rtems/pkg/rtems-libbsd/-/issues/2">#2</a>
</p>
<div class="md" style="color: #333238; word-wrap: break-word;">
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #333238; margin: 0 0 16px;" align="initial">
<a href="#summary" aria-hidden="true" class="anchor" id="user-content-summary" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Summary</h2>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">At least with data in SDRAM (FMC) on a stm32h747, the if_stmac.c driver is not working properly. it might be due to stm32h747 not supporting unaligned access on FMC (see stm32h7 errata) or for some other reason, like the many erratas for the ethernet IP on this chip.</p>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">I spent a day trying to understand what is going on, without success.</p>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">When trying to ping from another host, the reception path got OK:</p>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0 0 16px; padding: 0;">
<li style="margin-top: 0; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">I could receive a proper ARP packet</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">The ARP response was correctly generated by the stack.</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">No packet (or a corrupted packet) was received on the other side (transmission problem).</li>
</ul>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #333238; margin: 24px 0 16px;" align="initial">
<a href="#steps-to-reproduce" aria-hidden="true" class="anchor" id="user-content-steps-to-reproduce" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Steps to reproduce</h2>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">Configure a stm32h7 eval board using SDRAM for data/bss/heap.
Try networking with something like like media01.exe.</p>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #333238; margin: 24px 0 16px;" align="initial">
<a href="#minor-issues" aria-hidden="true" class="anchor" id="user-content-minor-issues" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Minor issues:</h2>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">During testing, I found out two minor problems, and came up with the following patch, included here in case it helps:</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre class="code highlight js-syntax-highlight language-plaintext" v-pre="true" style='display: block; font-size: 14px; color: #333238; line-height: 1.6em; overflow-x: auto; border-radius: .25rem; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; margin: 0 0 16px; padding: 12px; border: 1px solid #dcdcde;'><code style='font-size: inherit; color: inherit; word-wrap: normal; word-break: keep-all; background-color: inherit; border-radius: .25rem; white-space: pre; margin-top: 0; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; vertical-align: bottom; overflow-wrap: normal; padding: unset;'><span id="LC1" class="line" lang="plaintext" style="margin-top: 0;">--- a/rtemsbsd/sys/dev/stmac/if_stmac.c</span>
<span id="LC2" class="line" lang="plaintext">+++ b/rtemsbsd/sys/dev/stmac/if_stmac.c</span>
<span id="LC3" class="line" lang="plaintext">@@ -50,6 +50,8 @@</span>
<span id="LC4" class="line" lang="plaintext"> #include <net/if_types.h></span>
<span id="LC5" class="line" lang="plaintext"> #include <net/if_var.h></span>
<span id="LC6" class="line" lang="plaintext"> </span>
<span id="LC7" class="line" lang="plaintext">+#include <net/bpf.h></span>
<span id="LC8" class="line" lang="plaintext">+</span>
<span id="LC9" class="line" lang="plaintext"> #include <machine/bus.h></span>
<span id="LC10" class="line" lang="plaintext"> </span>
<span id="LC11" class="line" lang="plaintext"> #include <dev/mii/mii.h></span>
<span id="LC12" class="line" lang="plaintext">@@ -115,9 +117,9 @@ stmac_new_mbuf(struct ifnet *ifp)</span>
<span id="LC13" class="line" lang="plaintext"> </span>
<span id="LC14" class="line" lang="plaintext">        m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);</span>
<span id="LC15" class="line" lang="plaintext">        if (m != NULL) {</span>
<span id="LC16" class="line" lang="plaintext">+               rtems_cache_invalidate_multiple_data_lines(m->m_ext.ext_buf, m->m_ext.ext_size);</span>
<span id="LC17" class="line" lang="plaintext">                m->m_data = mtod(m, char *) + ETHER_ALIGN;</span>
<span id="LC18" class="line" lang="plaintext">                m->m_pkthdr.rcvif = ifp;</span>
<span id="LC19" class="line" lang="plaintext">-               rtems_cache_invalidate_multiple_data_lines(m->m_data, m->m_len);</span>
<span id="LC20" class="line" lang="plaintext">        }</span>
<span id="LC21" class="line" lang="plaintext"> </span>
<span id="LC22" class="line" lang="plaintext">        return m;</span>
<span id="LC23" class="line" lang="plaintext">@@ -793,6 +795,8 @@ stmac_tx_enqueue(struct stmac_softc *sc, struct ifnet *ifp, struct mbuf *m)</span>
<span id="LC24" class="line" lang="plaintext">        _ARM_Data_synchronization_barrier();</span>
<span id="LC25" class="line" lang="plaintext">        regs = sc->heth.Instance;</span>
<span id="LC26" class="line" lang="plaintext">        WRITE_REG(regs->DMACTDTPR, (uint32_t)&desc_ring[new_head_idx]);</span>
<span id="LC27" class="line" lang="plaintext">+</span>
<span id="LC28" class="line" lang="plaintext">+       ETHER_BPF_MTAP(sc->ifp, m);</span>
<span id="LC29" class="line" lang="plaintext">        return (0);</span>
<span id="LC30" class="line" lang="plaintext"> }</span></code></pre>
<copy-code></copy-code>
</div>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0 0 16px; padding: 0;">
<li style="margin-top: 0; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<p style="color: #333238; margin: 0 0 16px;">The <code style='font-size: 90%; color: #1f1e24; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0; font-weight: inherit; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; vertical-align: bottom; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 2px 4px;'>rtems_cache_invalidate_multiple_data_lines</code> call was doing nothing, since <code style='font-size: 90%; color: #1f1e24; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; vertical-align: bottom; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 2px 4px;'>m_len</code> is 0 for a new mbuf.</p>
</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<p style="color: #333238; margin: 0 0 16px;">ETHER_BPF_MTAP was missing to see the output packet with tcpdump.</p>
</li>
</ul>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #333238; margin: 24px 0 16px;" align="initial">
<a href="#fun-read" aria-hidden="true" class="anchor" id="user-content-fun-read" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Fun read</h2>
<p dir="auto" style="color: #333238; margin: 0 0 16px;" align="initial">No idea if this is relevant, but the following blog is pretty fun (or horrifying)</p>
<p dir="auto" style="color: #333238; margin: 0;" align="initial"><a href="https://www.mattkeeter.com/blog/2023-10-31-dma/" rel="nofollow noreferrer noopener" target="_blank" style="margin-top: 0;">https://www.mattkeeter.com/blog/2023-10-31-dma/</a></p>
</div>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #737278;">

<br>
<a href="https://gitlab.rtems.org/rtems/pkg/rtems-libbsd/-/issues/2">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.rtems.org">gitlab.rtems.org</a>. <a href="https://gitlab.rtems.org/-/sent_notifications/764c3b6d2fe394e5f6e0a6ad3a543903/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.rtems.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.rtems.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Issue","url":"https://gitlab.rtems.org/rtems/pkg/rtems-libbsd/-/issues/2"}}</script>


</p>
</div>
</body>
</html>