[dpdk-dev] [PATCH] kni: implement header_ops parse method
Igor Ryzhov
iryzhov at nfware.com
Fri Nov 30 20:07:07 CET 2018
Hi Ferruh,
header_ops.parse method is used by raw-sockets to fill sockaddr_ll
structure.
It is used, for example, in isisd for frrouting.
Regarding your question about eth_header_ops – I, unfortunately, don't know
why .cache and .cache_update are disabled for KNI.
I also think that it will be better to use default eth_header_ops.
Best regards,
Igor
On Tue, Oct 2, 2018 at 7:58 PM Ferruh Yigit <ferruh.yigit at intel.com> wrote:
> On 9/27/2018 1:02 AM, Igor Ryzhov wrote:
> > Signed-off-by: Igor Ryzhov <iryzhov at nfware.com>
>
> Hi Igor,
>
> What is the motivation to add this support? What is enabled by this?
>
>
> Meanwhile, why we are not using eth_header_ops, which is already set by
> ether_setup().
> To disable .cache & .cache_update?
>
> If so why not using relevant eth_header_ops (eth_header, eth_header_parse
> ..)
> instead of implementing ours?
>
> > ---
> > kernel/linux/kni/kni_net.c | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
> > index 7fcfa106c..128a5477c 100644
> > --- a/kernel/linux/kni/kni_net.c
> > +++ b/kernel/linux/kni/kni_net.c
> > @@ -678,6 +678,19 @@ kni_net_header(struct sk_buff *skb, struct
> net_device *dev,
> > return dev->hard_header_len;
> > }
> >
> > +/*
> > + * Extract hardware address from packet
> > + */
> > +static int
> > +kni_net_header_parse(const struct sk_buff *skb, unsigned char *haddr)
> > +{
> > + const struct ethhdr *eth = eth_hdr(skb);
> > +
> > + memcpy(haddr, eth->h_source, ETH_ALEN);
> > +
> > + return ETH_ALEN;
> > +}
> > +
> > /*
> > * Re-fill the eth header
> > */
> > @@ -739,6 +752,7 @@ kni_net_change_carrier(struct net_device *dev, bool
> new_carrier)
> >
> > static const struct header_ops kni_net_header_ops = {
> > .create = kni_net_header,
> > + .parse = kni_net_header_parse,
> > #ifdef HAVE_REBUILD_HEADER
> > .rebuild = kni_net_rebuild_header,
> > #endif /* < 4.1.0 */
> >
>
>
More information about the dev
mailing list