{"id":811171,"url":"http://patchwork.ozlabs.org/api/patches/811171/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/93AF473E2DA327428DE3D46B72B1E9FD41121A22@CHN-SV-EXMX02.mchp-main.com/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<93AF473E2DA327428DE3D46B72B1E9FD41121A22@CHN-SV-EXMX02.mchp-main.com>","list_archive_url":null,"date":"2017-09-07T21:09:30","name":"[RFC,6/6] Modify tag_ksz.c to support other KSZ switch drivers","commit_ref":null,"pull_url":null,"state":"rfc","archived":true,"hash":"e2f52c34dc289604277649195f7eac25c8483150","submitter":{"id":72262,"url":"http://patchwork.ozlabs.org/api/people/72262/?format=json","name":"","email":"Tristram.Ha@microchip.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/93AF473E2DA327428DE3D46B72B1E9FD41121A22@CHN-SV-EXMX02.mchp-main.com/mbox/","series":[{"id":2062,"url":"http://patchwork.ozlabs.org/api/series/2062/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=2062","date":"2017-09-07T21:09:04","name":"[RFC,1/6] The file ksz_common.c will be used by other KSZ switch drivers.","version":1,"mbox":"http://patchwork.ozlabs.org/series/2062/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/811171/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/811171/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xpCl90qjyz9s3T\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri,  8 Sep 2017 07:09:57 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S932508AbdIGVJq convert rfc822-to-8bit (ORCPT\n\t<rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 7 Sep 2017 17:09:46 -0400","from esa6.microchip.iphmx.com ([216.71.154.253]:25730 \"EHLO\n\tesa6.microchip.iphmx.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S932464AbdIGVJn (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 7 Sep 2017 17:09:43 -0400","from smtpout.microchip.com (HELO email.microchip.com)\n\t([198.175.253.82])\n\tby esa6.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA;\n\t07 Sep 2017 14:09:31 -0700","from CHN-SV-EXMX02.mchp-main.com ([fe80::7dfe:3761:863e:3963]) by\n\tCHN-SV-EXCH04.mchp-main.com ([fe80::6150:8a42:4945:9b1b%16]) with\n\tmapi id 14.03.0352.000; Thu, 7 Sep 2017 14:09:31 -0700"],"X-IronPort-AV":"E=Sophos;i=\"5.42,360,1500966000\"; d=\"scan'208\";a=\"4281790\"","From":"<Tristram.Ha@microchip.com>","To":"<andrew@lunn.ch>, <muvarov@gmail.com>, <pavel@ucw.cz>,\n\t<nathan.leigh.conrad@gmail.com>,\n\t<vivien.didelot@savoirfairelinux.com>, <f.fainelli@gmail.com>,\n\t<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,\n\t<Woojung.Huh@microchip.com>","Subject":"[PATCH RFC 6/6] Modify tag_ksz.c to support other KSZ switch drivers","Thread-Topic":"[PATCH RFC 6/6] Modify tag_ksz.c to support other KSZ switch\n\tdrivers","Thread-Index":"AdMoGgjwWn+O5iRqREClMgoWecPmmwAAub+w","Date":"Thu, 7 Sep 2017 21:09:30 +0000","Message-ID":"<93AF473E2DA327428DE3D46B72B1E9FD41121A22@CHN-SV-EXMX02.mchp-main.com>","References":"<93AF473E2DA327428DE3D46B72B1E9FD41121901@CHN-SV-EXMX02.mchp-main.com>","In-Reply-To":"<93AF473E2DA327428DE3D46B72B1E9FD41121901@CHN-SV-EXMX02.mchp-main.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","x-originating-ip":"[10.10.76.4]","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"8BIT","MIME-Version":"1.0","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"From: Tristram Ha <Tristram.Ha@microchip.com>\n\nThe KSZ tail tag code can be used by different KSZ switch drivers.\n\nSigned-off-by: Tristram Ha <Tristram.Ha@microchip.com>\n---\n \t\tnskb = skb;\n \t} else {\n \t\tnskb = alloc_skb(NET_IP_ALIGN + skb->len +\n-\t\t\t\t padlen + KSZ_INGRESS_TAG_LEN, GFP_ATOMIC);\n+\t\t\t\t padlen + len, GFP_ATOMIC);\n \t\tif (!nskb)\n \t\t\treturn NULL;\n \t\tskb_reserve(nskb, NET_IP_ALIGN);\n@@ -70,9 +56,7 @@ static struct sk_buff *ksz_xmit(struct sk_buff *skb, struct net_device *dev)\n \t\tconsume_skb(skb);\n \t}\n \n-\ttag = skb_put(nskb, KSZ_INGRESS_TAG_LEN);\n-\ttag[0] = 0;\n-\ttag[1] = 1 << p->dp->index; /* destination port */\n+\tswdev->dev_ops->add_tail_tag(swdev, nskb, p->dp->index);\n \n \treturn nskb;\n }\n@@ -83,16 +67,16 @@ static struct sk_buff *ksz_rcv(struct sk_buff *skb, struct net_device *dev,\n \tstruct dsa_switch_tree *dst = dev->dsa_ptr;\n \tstruct dsa_port *cpu_dp = dsa_get_cpu_port(dst);\n \tstruct dsa_switch *ds = cpu_dp->ds;\n-\tu8 *tag;\n+\tstruct ksz_device *swdev = ds->priv;\n+\tint len;\n \tint source_port;\n \n-\ttag = skb_tail_pointer(skb) - KSZ_EGRESS_TAG_LEN;\n+\tlen = swdev->dev_ops->get_tail_tag(swdev, skb, &source_port);\n \n-\tsource_port = tag[0] & 7;\n \tif (source_port >= ds->num_ports || !ds->ports[source_port].netdev)\n \t\treturn NULL;\n \n-\tpskb_trim_rcsum(skb, skb->len - KSZ_EGRESS_TAG_LEN);\n+\tpskb_trim_rcsum(skb, skb->len - len);\n \n \tskb->dev = ds->ports[source_port].netdev;","diff":"diff --git a/net/dsa/tag_ksz.c b/net/dsa/tag_ksz.c index 010ca0a..d5faf14 100644\n--- a/net/dsa/tag_ksz.c\n+++ b/net/dsa/tag_ksz.c\n@@ -13,35 +13,21 @@\n #include <linux/slab.h>\n #include <net/dsa.h>\n #include \"dsa_priv.h\"\n-\n-/* For Ingress (Host -> KSZ), 2 bytes are added before FCS.\n- * ---------------------------------------------------------------------------\n- * DA(6bytes)|SA(6bytes)|....|Data(nbytes)|tag0(1byte)|tag1(1byte)|FCS(4bytes)\n- * ---------------------------------------------------------------------------\n- * tag0 : Prioritization (not used now)\n- * tag1 : each bit represents port (eg, 0x01=port1, 0x02=port2, 0x10=port5)\n- *\n- * For Egress (KSZ -> Host), 1 byte is added before FCS.\n- * ---------------------------------------------------------------------------\n- * DA(6bytes)|SA(6bytes)|....|Data(nbytes)|tag0(1byte)|FCS(4bytes)\n- * ---------------------------------------------------------------------------\n- * tag0 : zero-based value represents port\n- *\t  (eg, 0x00=port1, 0x02=port3, 0x06=port7)\n- */\n-\n-#define\tKSZ_INGRESS_TAG_LEN\t2\n-#define\tKSZ_EGRESS_TAG_LEN\t1\n+#include \"../../drivers/net/dsa/microchip/ksz_priv.h\"\n \n static struct sk_buff *ksz_xmit(struct sk_buff *skb, struct net_device *dev)  {\n \tstruct dsa_slave_priv *p = netdev_priv(dev);\n+\tstruct dsa_switch *ds = p->dp->ds;\n+\tstruct ksz_device *swdev = ds->priv;\n \tstruct sk_buff *nskb;\n+\tint len;\n \tint padlen;\n-\tu8 *tag;\n \n \tpadlen = (skb->len >= ETH_ZLEN) ? 0 : ETH_ZLEN - skb->len;\n \n-\tif (skb_tailroom(skb) >= padlen + KSZ_INGRESS_TAG_LEN) {\n+\tlen = swdev->dev_ops->get_tx_len(swdev);\n+\tif (skb_tailroom(skb) >= padlen + len) {\n \t\t/* Let dsa_slave_xmit() free skb */\n \t\tif (__skb_put_padto(skb, skb->len + padlen, false))\n \t\t\treturn NULL;\n@@ -49,7 +35,7 @@ static struct sk_buff *ksz_xmit(struct sk_buff *skb, struct net_device *dev)\n","prefixes":["RFC","6/6"]}