Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 May 2017 05:50:08 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r317864 - head/sys/dev/etherswitch/infineon
Message-ID:  <201705060550.v465o8rn072682@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sat May  6 05:50:07 2017
New Revision: 317864
URL: https://svnweb.freebsd.org/changeset/base/317864

Log:
  [infineon] [etherswitch] no hardcode tagging port setting at amd6996fc
  
  Tagging port can set by etherswitchcfg command.
  
  Tested:
  
  * on Netgear_WGR614Cv7
  
  Submitted by:	Hiroki Mori <yamori813@yahoo.co.jp>
  Reviewed by:	mizhka

Modified:
  head/sys/dev/etherswitch/infineon/adm6996fc.c

Modified: head/sys/dev/etherswitch/infineon/adm6996fc.c
==============================================================================
--- head/sys/dev/etherswitch/infineon/adm6996fc.c	Sat May  6 05:37:36 2017	(r317863)
+++ head/sys/dev/etherswitch/infineon/adm6996fc.c	Sat May  6 05:50:07 2017	(r317864)
@@ -35,6 +35,7 @@
  * This code suppose ADM6996FC SDC/SDIO connect to SOC network interface
  * MDC/MDIO.
  * This code development on Netgear WGR614Cv7.
+ * etherswitchcfg command port option support addtag.
  */
 
 #include <sys/param.h>
@@ -462,8 +463,6 @@ adm6996fc_getport(device_t dev, etherswi
 		p->es_pvid = ADM6996FC_PVIDBYDATA(data1, data2);
 		if (((data1 >> ADM6996FC_OPTE_SHIFT) & 0x01) == 1)
 			p->es_flags |= ETHERSWITCH_PORT_ADDTAG;
-		else
-			p->es_flags |= ETHERSWITCH_PORT_STRIPTAG;
 	} else {
 		p->es_pvid = 0;
 	}
@@ -517,6 +516,10 @@ adm6996fc_setport(device_t dev, etherswi
 		data = ADM6996FC_READREG(parent, bcaddr[p->es_port]);
 		data &= ~(0xf << 10);
 		data |= (p->es_pvid & 0xf) << ADM6996FC_PVID_SHIFT;
+		if (p->es_flags & ETHERSWITCH_PORT_ADDTAG)
+			data |= 1 << ADM6996FC_OPTE_SHIFT;
+		else
+			data &= ~(1 << ADM6996FC_OPTE_SHIFT);
 		ADM6996FC_WRITEREG(parent, bcaddr[p->es_port], data);
 		data = ADM6996FC_READREG(parent, vidaddr[p->es_port]);
 		/* only port 4 is hi bit */
@@ -670,9 +673,6 @@ adm6996fc_setconf(device_t dev, etherswi
 			/* Private VID set 1 */
 			data &= ~(0xf << 10);
 			data |= (1 << 10);
-			/* Output Packet Tagging Enable */
-			if (i == 5)
-				data |= (1 << 4);
 			ADM6996FC_WRITEREG(parent, bcaddr[i], data);
 		}
 		for (i = 2;i <= 15; ++i) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705060550.v465o8rn072682>