forked from mirrors/linux
		
	staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch (DPSW) objects discovered on the MC bus. Suggested-by: Alexandru Marginean <alexandru.marginean@nxp.com> Signed-off-by: Razvan Stefanescu <razvan.stefanescu@nxp.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									0006351fd1
								
							
						
					
					
						commit
						44baaa43d7
					
				
					 3 changed files with 1573 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -7,4 +7,4 @@
 | 
			
		|||
 | 
			
		||||
obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o
 | 
			
		||||
 | 
			
		||||
dpaa2-ethsw-objs := dpsw.o
 | 
			
		||||
dpaa2-ethsw-objs := ethsw.o dpsw.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1507
									
								
								drivers/staging/fsl-dpaa2/ethsw/ethsw.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1507
									
								
								drivers/staging/fsl-dpaa2/ethsw/ethsw.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										65
									
								
								drivers/staging/fsl-dpaa2/ethsw/ethsw.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								drivers/staging/fsl-dpaa2/ethsw/ethsw.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
/*
 | 
			
		||||
 * DPAA2 Ethernet Switch declarations
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2014-2016 Freescale Semiconductor Inc.
 | 
			
		||||
 * Copyright 2017-2018 NXP
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __ETHSW_H
 | 
			
		||||
#define __ETHSW_H
 | 
			
		||||
 | 
			
		||||
#include <linux/netdevice.h>
 | 
			
		||||
#include <linux/etherdevice.h>
 | 
			
		||||
#include <linux/rtnetlink.h>
 | 
			
		||||
#include <linux/if_vlan.h>
 | 
			
		||||
#include <uapi/linux/if_bridge.h>
 | 
			
		||||
#include <net/switchdev.h>
 | 
			
		||||
#include <linux/if_bridge.h>
 | 
			
		||||
 | 
			
		||||
#include "dpsw.h"
 | 
			
		||||
 | 
			
		||||
/* Number of IRQs supported */
 | 
			
		||||
#define DPSW_IRQ_NUM	2
 | 
			
		||||
 | 
			
		||||
#define ETHSW_VLAN_MEMBER	1
 | 
			
		||||
#define ETHSW_VLAN_UNTAGGED	2
 | 
			
		||||
#define ETHSW_VLAN_PVID		4
 | 
			
		||||
#define ETHSW_VLAN_GLOBAL	8
 | 
			
		||||
 | 
			
		||||
/* Maximum Frame Length supported by HW (currently 10k) */
 | 
			
		||||
#define DPAA2_MFL		(10 * 1024)
 | 
			
		||||
#define ETHSW_MAX_FRAME_LENGTH	(DPAA2_MFL - VLAN_ETH_HLEN - ETH_FCS_LEN)
 | 
			
		||||
#define ETHSW_L2_MAX_FRM(mtu)	((mtu) + VLAN_ETH_HLEN + ETH_FCS_LEN)
 | 
			
		||||
 | 
			
		||||
struct ethsw_core;
 | 
			
		||||
 | 
			
		||||
/* Per port private data */
 | 
			
		||||
struct ethsw_port_priv {
 | 
			
		||||
	struct net_device	*netdev;
 | 
			
		||||
	u16			idx;
 | 
			
		||||
	struct ethsw_core	*ethsw_data;
 | 
			
		||||
	u8			link_state;
 | 
			
		||||
	u8			stp_state;
 | 
			
		||||
	bool			flood;
 | 
			
		||||
 | 
			
		||||
	u8			vlans[VLAN_VID_MASK + 1];
 | 
			
		||||
	u16			pvid;
 | 
			
		||||
	struct net_device	*bridge_dev;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Switch data */
 | 
			
		||||
struct ethsw_core {
 | 
			
		||||
	struct device			*dev;
 | 
			
		||||
	struct fsl_mc_io		*mc_io;
 | 
			
		||||
	u16				dpsw_handle;
 | 
			
		||||
	struct dpsw_attr		sw_attr;
 | 
			
		||||
	int				dev_id;
 | 
			
		||||
	struct ethsw_port_priv		**ports;
 | 
			
		||||
 | 
			
		||||
	u8				vlans[VLAN_VID_MASK + 1];
 | 
			
		||||
	bool				learning;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif	/* __ETHSW_H */
 | 
			
		||||
		Loading…
	
		Reference in a new issue