Revision df30f7408b187929dbde72661c7f7c615268f1d0 authored by pravin shelar on 26 December 2016, 16:31:27 UTC, committed by David S. Miller on 27 December 2016, 17:28:07 UTC
Networking stack accelerate vlan tag handling by
keeping topmost vlan header in skb. This works as
long as packet remains in OVS datapath. But during
OVS upcall vlan header is pushed on to the packet.
When such packet is sent back to OVS datapath, core
networking stack might not handle it correctly. Following
patch avoids this issue by accelerating the vlan tag
during flow key extract. This simplifies datapath by
bringing uniform packet processing for packets from
all code paths.

Fixes: 5108bbaddc ("openvswitch: add processing of L3 packets").
CC: Jarno Rajahalme <jarno@ovn.org>
CC: Jiri Benc <jbenc@redhat.com>
Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 56ab6b9
Raw File
sudmac.h
/*
 * Header for the SUDMAC driver
 *
 * Copyright (C) 2013 Renesas Solutions Corp.
 *
 * This is free software; you can redistribute it and/or modify
 * it under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 */
#ifndef SUDMAC_H
#define SUDMAC_H

#include <linux/dmaengine.h>
#include <linux/shdma-base.h>
#include <linux/types.h>

/* Used by slave DMA clients to request DMA to/from a specific peripheral */
struct sudmac_slave {
	struct shdma_slave	shdma_slave;	/* Set by the platform */
};

/*
 * Supplied by platforms to specify, how a DMA channel has to be configured for
 * a certain peripheral
 */
struct sudmac_slave_config {
	int		slave_id;
};

struct sudmac_channel {
	unsigned long	offset;
	unsigned long	config;
	unsigned long	wait;		/* The configuable range is 0 to 3 */
	unsigned long	dint_end_bit;
};

struct sudmac_pdata {
	const struct sudmac_slave_config *slave;
	int slave_num;
	const struct sudmac_channel *channel;
	int channel_num;
};

/* Definitions for the sudmac_channel.config */
#define SUDMAC_TX_BUFFER_MODE	BIT(0)
#define SUDMAC_RX_END_MODE	BIT(1)

/* Definitions for the sudmac_channel.dint_end_bit */
#define SUDMAC_DMA_BIT_CH0	BIT(0)
#define SUDMAC_DMA_BIT_CH1	BIT(1)

#endif
back to top