OpenCloudOS-Kernel/drivers/net/ethernet/ti
Grygorii Strashko a3a41d2f94 net: ethernet: ti: cpsw: enable vlan rx vlan offload
In VLAN_AWARE mode CPSW can insert VLAN header encapsulation word on Host
port 0 egress (RX) before the packet data if RX_VLAN_ENCAP bit is set in
CPSW_CONTROL register. VLAN header encapsulation word has following format:

 HDR_PKT_Priority bits 29-31 - Header Packet VLAN prio (Highest prio: 7)
 HDR_PKT_CFI 	  bits 28 - Header Packet VLAN CFI bit.
 HDR_PKT_Vid 	  bits 27-16 - Header Packet VLAN ID
 PKT_Type         bits 8-9 - Packet Type. Indicates whether the packet is
                 	VLAN-tagged, priority-tagged, or non-tagged.
	00: VLAN-tagged packet
	01: Reserved
	10: Priority-tagged packet
	11: Non-tagged packet

This feature can be used to implement TX VLAN offload in case of
VLAN-tagged packets and to insert VLAN tag in case Non-tagged packet was
received on port with PVID set. As per documentation, CPSW never modifies
packet data on Host egress (RX) and as result, without this feature
enabled, Host port will not be able to receive properly packets which
entered switch non-tagged through external Port with PVID set (when
non-tagged packet forwarded from external Port with PVID set to another
external Port - packet will be VLAN tagged properly).

Implementation details:
- on RX driver will check CPDMA status bit RX_VLAN_ENCAP BIT(19) in CPPI
descriptor to identify when VLAN header encapsulation word is present.
- PKT_Type = 0x01 or 0x02 then ignore VLAN header encapsulation word and
pass packet as is;
- if HDR_PKT_Vid = 0 then ignore VLAN header encapsulation word and pass
packet as is;
- In dual mac mode traffic is separated between ports using default port
vlans, which are not be visible to Host and so should not be reported.
Hence, check for default port vlans in dual mac mode and ignore VLAN header
encapsulation word;
- otherwise fill SKB with VLAN info using __vlan_hwaccel_put_tag();
- PKT_Type = 0x00 (VLAN-tagged) then strip out VLAN header from SKB.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-03-17 19:51:01 -04:00
..
Kconfig cpsw/netcp: refine cpts dependency 2017-04-28 15:55:14 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cpmac.c cpmac: remove hopeless #warning 2017-01-16 11:54:36 -05:00
cpsw-common.c net: ti: cpsw-common: dont print error if ti_cm_get_macid() fails 2017-08-30 10:05:07 -07:00
cpsw-phy-sel.c drivers: net: cpsw-phy-sel: Clear RGMII_IDMODE on "rgmii" links 2016-12-07 13:12:17 -05:00
cpsw.c net: ethernet: ti: cpsw: enable vlan rx vlan offload 2018-03-17 19:51:01 -04:00
cpsw.h net: ethernet: ti: cpsw: move mac_hi/lo defines in cpsw.h 2017-12-01 16:36:32 -05:00
cpsw_ale.c net: ethernet: ti: ale: fix port check in cpsw_ale_control_set/get 2017-12-01 16:36:33 -05:00
cpsw_ale.h net: ethernet: ti: ale: use devm_kzalloc in cpsw_ale_create() 2017-12-01 16:36:32 -05:00
cpts.c net: ethernet: make ptp_clock_info const 2017-08-22 11:04:51 -07:00
cpts.h net: ethernet: ti: cpts: fix tx timestamping timeout 2017-08-01 15:22:55 -07:00
davinci_cpdma.c net: ethernet: ti: cpsw: enable vlan rx vlan offload 2018-03-17 19:51:01 -04:00
davinci_cpdma.h net: ethernet: ti: cpsw: enable vlan rx vlan offload 2018-03-17 19:51:01 -04:00
davinci_emac.c net: ethernet: ti: cpdma: correct error handling for chan create 2017-12-13 15:49:53 -05:00
davinci_mdio.c drivers: net: davinci_mdio: print bus frequency 2017-08-11 14:23:59 -07:00
netcp.h net: netcp: use hw capability to remove FCS word from rx packets 2017-01-07 21:03:50 -05:00
netcp_core.c Net: ethernet: ti: netcp: Fix inbound ping crash if MTU size is greater than 1500 2018-01-17 16:19:37 -05:00
netcp_ethss.c net: ethernet: ti: ale: use devm_kzalloc in cpsw_ale_create() 2017-12-01 16:36:32 -05:00
netcp_sgmii.c net: netcp: Fixes SGMII reset on network interface shutdown 2015-07-27 01:14:26 -07:00
netcp_xgbepcsr.c
tlan.c treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts 2017-11-21 16:35:54 -08:00
tlan.h