From: till straumann <till.straum...@alumni.tu-berlin.de>

Testing (TCP with larger amounts of data while MVETH_TESTING
was defined which reduces the ring sizes to very small numbers)
revealed that the BSD stack honours the 'sendqlen' and
never hands us chains exceeding the ring size.

Update #4345
---
 rtemsbsd/sys/dev/mve/mv643xx_nexus.c | 33 ++--------------------------
 1 file changed, 2 insertions(+), 31 deletions(-)

diff --git a/rtemsbsd/sys/dev/mve/mv643xx_nexus.c 
b/rtemsbsd/sys/dev/mve/mv643xx_nexus.c
index 3b443583..5edcdea4 100644
--- a/rtemsbsd/sys/dev/mve/mv643xx_nexus.c
+++ b/rtemsbsd/sys/dev/mve/mv643xx_nexus.c
@@ -95,8 +95,9 @@
 
 /* Define default ring sizes */
 
-#ifdef MVETH_TESTING
+#undef  MVETH_TESTING
 
+#ifdef  MVETH_TESTING
 /* hard and small defaults */
 #define MV643XX_RX_RING_SIZE   2
 #define MV643XX_TX_QUEUE_SIZE   4
@@ -116,9 +117,6 @@
 #endif /* MVETH_TESTING */
 
 /* NOTE: tx ring size MUST be > max. # of fragments / mbufs in a chain;
- *       in 'TESTING' mode, special code is compiled in to repackage
- *              chains that are longer than the ring size. Normally, this is
- *              disabled for sake of speed.
  *              I observed chains of >17 entries regularly!
  */
 #define MV643XX_TX_RING_SIZE   ((MV643XX_TX_QUEUE_SIZE) * 
(MV643XX_BD_PER_PACKET))
@@ -240,25 +238,6 @@ mve_probe(device_t dev)
        return err;
 }
 
-/* allocate a new cluster and copy an existing chain there;
- * old chain is released...
- */
-static struct mbuf *
-repackage_chain(struct mbuf *m_head)
-{
-struct mbuf *m;
-
-       m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
-
-       if ( m ) {
-               m_copydata(m_head, 0, MCLBYTES, mtod(m, caddr_t));
-               m->m_pkthdr.len = m->m_len = m_head->m_pkthdr.len;
-       }
-
-       m_freem(m_head);
-       return m;
-}
-
 /*
  * starting at 'm' scan the buffer chain until we
  * find a non-empty buffer (which we return)
@@ -328,8 +307,6 @@ mve_send_mbuf( struct mve_enet_softc *sc, struct mbuf 
*m_head )
 MveMbufIter iter;
 int         rval;
 
-startover:
-
        if ( ! m_head ) {
                return 0;
        }
@@ -342,12 +319,6 @@ startover:
 
        rval = BSP_mve_send_buf_chain( sc->mp, nextBuf, &iter.it );
 
-       if ( -2 == rval ) {
-               /* would never fit (too many fragments) */
-               m_head = repackage_chain( m_head );
-               goto startover;
-       }
-
        return rval;
 }
 
-- 
2.26.2

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to