summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-01-21 18:18:19 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-01-21 18:18:19 +0000
commit10fca441e0b551c5c194fe657e89d53ee8813c2f (patch)
tree215a12168c8f11db7e5e2905d9c302e7da6a56fe /c
parent2009-01-21 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-10fca441e0b551c5c194fe657e89d53ee8813c2f.tar.bz2
2009-01-21 Frank Ueberschar <frank.ueberschar@dsa-volgmann.de>
PR 1354/bsps * network/network.c: In some cases it can occur that an empty mbuf is put on the descriptor chain. (We found it especially then when transmitting fragmented IP Packets.) Since the actual buffer descriptor pointer will be incremented after every inserted mbuf (txBd = sc->txBdBase + sc->txBdHead;) even if m->m_len of the current mbuf was zero. This leads to the bug.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/m68k/av5282/ChangeLog10
-rw-r--r--c/src/lib/libbsp/m68k/av5282/network/network.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/m68k/av5282/ChangeLog b/c/src/lib/libbsp/m68k/av5282/ChangeLog
index c0c3c54493..42403bd68f 100644
--- a/c/src/lib/libbsp/m68k/av5282/ChangeLog
+++ b/c/src/lib/libbsp/m68k/av5282/ChangeLog
@@ -1,3 +1,13 @@
+2009-01-21 Frank Ueberschar <frank.ueberschar@dsa-volgmann.de>
+
+ PR 1354/bsps
+ * network/network.c: In some cases it can occur that an empty mbuf is
+ put on the descriptor chain. (We found it especially then when
+ transmitting fragmented IP Packets.) Since the actual buffer
+ descriptor pointer will be incremented after every inserted mbuf
+ (txBd = sc->txBdBase + sc->txBdHead;) even if m->m_len of the current
+ mbuf was zero. This leads to the bug.
+
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
diff --git a/c/src/lib/libbsp/m68k/av5282/network/network.c b/c/src/lib/libbsp/m68k/av5282/network/network.c
index 7575072425..2dcf1d1e04 100644
--- a/c/src/lib/libbsp/m68k/av5282/network/network.c
+++ b/c/src/lib/libbsp/m68k/av5282/network/network.c
@@ -548,10 +548,10 @@ fec_sendpacket(struct ifnet *ifp, struct mbuf *m)
* The IP fragmentation routine in ip_output
* can produce fragments with zero length.
*/
- txBd = sc->txBdBase + sc->txBdHead;
if (m->m_len){
char *p = mtod(m, char *);
int offset = (int) p & 0x3;
+ txBd = sc->txBdBase + sc->txBdHead;
if (offset == 0) {
txBd->buffer = p;
txBd->length = m->m_len;