[dpdk-dev] [PATCH] kni: implement header_ops parse method

Ferruh Yigit ferruh.yigit at intel.com
Tue Oct 2 18:58:33 CEST 2018


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