From: till straumann <till.straum...@alumni.tu-berlin.de> Update #4344 --- bsps/powerpc/beatnik/include/bsp/mv643xx_eth.h | 2 +- bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/bsps/powerpc/beatnik/include/bsp/mv643xx_eth.h b/bsps/powerpc/beatnik/include/bsp/mv643xx_eth.h index f963b91d3d..6a7dbacf69 100644 --- a/bsps/powerpc/beatnik/include/bsp/mv643xx_eth.h +++ b/bsps/powerpc/beatnik/include/bsp/mv643xx_eth.h @@ -70,7 +70,7 @@ typedef struct MveEthBufIter { reasons) */ } MveEthBufIter; -typedef MveEthBufIter *(*MveEthBufIterNext)(const MveEthBufIter*); +typedef MveEthBufIter *(*MveEthBufIterNext)(MveEthBufIter*); int BSP_mve_send_buf_chain(struct mveth_private *mp, MveEthBufIterNext next, MveEthBufIter *it); diff --git a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c index 25631d76c3..b475711fef 100644 --- a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c +++ b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c @@ -1830,6 +1830,7 @@ register MvEthTxDesc l,d,h; int needed; void *frst_buf; int frst_len; +void *uarg; rval = 0; @@ -1855,13 +1856,17 @@ int frst_len; #endif /* find the 'first' user buffer */ - if ( (frst_buf = head_p) ) { + if ( (frst_buf = head_p) && (h_len > 0) ) { frst_len = h_len; } else { frst_buf = data_p; frst_len = d_len; } + uarg = (head_p && ! h_len) ? head_p : frst_buf; + + /* Legacy: if h_len == 0 but head_p is not then use that for the user arg */ + /* Don't use the first descriptor yet because BSP_mve_swipe_tx() * needs mp->d_tx_h->buf_ptr == NULL as a marker. Hence, we * start with the second (optional) slot and fill the first @@ -1898,7 +1903,7 @@ int frst_len; l->cmd_sts |= TDESC_LAST | TDESC_INT_ENA; /* first buffer of 'chain' goes into last desc */ - l->u_buf = frst_buf; + l->u_buf = uarg; FLUSH_DESC(l); -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel