Hi Christos!

> Sent: Friday, October 27, 2017 at 1:58 PM
> From: "Christos Zoulas" <chris...@astron.com>
> To: tech-kern@netbsd.org
> Subject: Re: MCLGETI in if_msk.c
>
[...]
>
> OpenBSD:
>                 m = MCLGETI(NULL, M_DONTWAIT, NULL, MCLBYTES);
>                 if (m == NULL)
>                       goto fail;
> NetBSD:
>                 MGETHDR(m, M_DONTWAIT, MT_DATA);
>                 if (m == NULL)
>                         goto fail; 
>                 MCLGET(m, M_DONTWAIT);
>                 if (m->m_flags & M_EXT) == 0) {
>                       m_freem(m);
>                         goto fail;
>               }

I didn't paste the whole OpenBSD code of rev. 1.72, but it is exactly:

        MGETHDR(m, M_DONTWAIT, MT_DATA);
        if (m == NULL)
                return (ENOBUFS);

        MCLGETI(m, M_DONTWAIT, &sc_if->arpcom.ac_if, sc_if->sk_pktlen);
        if ((m->m_flags & M_EXT) == 0) {
                m_freem(m);
                return (ENOBUFS);
        }

IIUC, I'll simply leave the MGETHDR part unchanged, and I'll replace the
MCLGETI call with the `MCLGET(m, M_DONTWAIT)' call you suggested.

> It is not such a big deal :-)

At a first glance, it seemed to the unexperienced me :D

> Or if you want to allocate a size other
> than MCLBYTES (I am not sure if that works, perhaps we need a different
> pool), use:
>               _MCLGET(m, mcl_cache, size, M_DONTWAIT) 
> 
> It is ~trivial to add the macro in <sys/mbuf.h> and since we are porting
> too many OpenBSD drivers, perhaps we should. But this should be discussed
> in tech-net.

It can be surely considered. As a side note, I suggest that also the MCLGETI
declared twice in `src/sys/dev/ic/arn5008.c' and `src/sys/dev/ic/arn9003.c',
and also in `src/sys/dev/pci/if_iwn.c' can be re-arranged.
Thank you,

Rocky

> 
> christos
> 
> 

Reply via email to