On Thu, 2015-12-03 at 14:56 +0000, Hans Petter Selasky wrote:
> Author: hselasky
> Date: Thu Dec  3 14:56:17 2015
> New Revision: 291699
> URL: https://svnweb.freebsd.org/changeset/base/291699
> 
> Log:
>   Convert the mlxen driver to use the BUSDMA(9) APIs instead of
>   vtophys() when loading mbufs for transmission and reception. While
> at
>   it all pointer arithmetic and cast qualifier issues were fixed,
> mostly
>   related to transmission and reception.
>   
>   MFC after:  1 week
>   Sponsored by:       Mellanox Technologies
>   Differential Revision:      https://reviews.freebsd.org/D4284
> 
> Modified:
>   head/sys/modules/mlxen/Makefile
>   head/sys/ofed/drivers/net/mlx4/en_netdev.c
>   head/sys/ofed/drivers/net/mlx4/en_rx.c
>   head/sys/ofed/drivers/net/mlx4/en_tx.c
>   head/sys/ofed/drivers/net/mlx4/mlx4_en.h
> 
> [...]
> +             /* load spare mbuf into BUSDMA */
> +             err = -bus_dmamap_load_mbuf_sg(ring->dma_tag, ring
> ->spare.dma_map,
> +                 mb, segs, &nsegs, BUS_DMA_NOWAIT);
> +             if (unlikely(err != 0)) {
> +                     m_freem(mb);
> +                     return (err);
> +             }
> +             KASSERT(nsegs == 1,
> +                 ("Number of segments is expected to be one"));
> +

This KASSERT() (and others like it following map loads) could never
fire, because the dma tag is created with maxsegs 1.  If the buffer
can't be mapped as a single segment the map load would return EFBIG
error.

-- Ian

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to