All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <640295.36173.qm@web37608.mail.mud.yahoo.com>

diff --git a/a/1.txt b/N1/1.txt
index e7bfdaa..c00321b 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,35 +1,64 @@
-As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,=0A=
-older revisions of gianfar controllers will be unable to calculate a TCP/UD=
-P=0Apacket checksum for some alignments of the appropriate FCB. This patch =
-checks=0Afor FCB alignment on such controllers and falls back to software c=
-hecksumming=0Aif the alignment is known to be bad.=0A=0ASigned-off-by: Alex=
- Dubov <oakad@yahoo.com>=0A---=0AChanges for v2:=0A   - Make indentation sl=
-ightly more consistent.=0A   - Replace bizarre switch-based condition with =
-plain boring one.=0A=0A drivers/net/gianfar.c |   16 ++++++++++++++--=0A dr=
-ivers/net/gianfar.h |    1 +=0A 2 files changed, 15 insertions(+), 2 deleti=
-ons(-)=0A=0Adiff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c=0Ain=
-dex 5ed8f9f..3da19a5 100644=0A--- a/drivers/net/gianfar.c=0A+++ b/drivers/n=
-et/gianfar.c=0A@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct g=
-far_private *priv)=0A =09=09=09(pvr =3D=3D 0x80861010 && (mod & 0xfff9) =3D=
-=3D 0x80c0))=0A =09=09priv->errata |=3D GFAR_ERRATA_A002;=0A =0A+=09/* MPC8=
-313 Rev < 2.0, MPC8548 rev 2.0 */=0A+=09if ((pvr =3D=3D 0x80850010 && mod =
-=3D=3D 0x80b0 && rev < 0x0020) ||=0A+=09=09=09(pvr =3D=3D 0x80210020 && mod=
- =3D=3D 0x8030 && rev =3D=3D 0x0020))=0A+=09=09priv->errata |=3D GFAR_ERRAT=
-A_12;=0A+=0A =09if (priv->errata)=0A =09=09dev_info(dev, "enabled errata wo=
-rkarounds, flags: 0x%x\n",=0A =09=09=09 priv->errata);=0A@@ -2156,8 +2161,1=
-5 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev=
-)=0A =09/* Set up checksumming */=0A =09if (CHECKSUM_PARTIAL =3D=3D skb->ip=
-_summed) {=0A =09=09fcb =3D gfar_add_fcb(skb);=0A-=09=09lstatus |=3D BD_LFL=
-AG(TXBD_TOE);=0A-=09=09gfar_tx_checksum(skb, fcb);=0A+=09=09/* as specified=
- by errata */=0A+=09=09if (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)=
-=0A+=09=09=09     && ((unsigned long)fcb % 0x20) > 0x18)) {=0A+=09=09=09__s=
-kb_pull(skb, GMAC_FCB_LEN);=0A+=09=09=09skb_checksum_help(skb);=0A+=09=09} =
-else {=0A+=09=09=09lstatus |=3D BD_LFLAG(TXBD_TOE);=0A+=09=09=09gfar_tx_che=
-cksum(skb, fcb);=0A+=09=09}=0A =09}=0A =0A =09if (vlan_tx_tag_present(skb))=
- {=0Adiff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h=0Aindex 54d=
-e413..ec5d595 100644=0A--- a/drivers/net/gianfar.h=0A+++ b/drivers/net/gian=
-far.h=0A@@ -1039,6 +1039,7 @@ enum gfar_errata {=0A =09GFAR_ERRATA_74=09=09=
-=3D 0x01,=0A =09GFAR_ERRATA_76=09=09=3D 0x02,=0A =09GFAR_ERRATA_A002=09=3D =
-0x04,=0A+=09GFAR_ERRATA_12=09=09=3D 0x08, /* a.k.a errata eTSEC49 */=0A };=
-=0A =0A /* Struct stolen almost completely (and shamelessly) from the FCC e=
-net source=0A-- =0A1.7.3.2=0A=0A=0A=0A=0A
+As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,
+older revisions of gianfar controllers will be unable to calculate a TCP/UDP
+packet checksum for some alignments of the appropriate FCB. This patch checks
+for FCB alignment on such controllers and falls back to software checksumming
+if the alignment is known to be bad.
+
+Signed-off-by: Alex Dubov <oakad@yahoo.com>
+---
+Changes for v2:
+   - Make indentation slightly more consistent.
+   - Replace bizarre switch-based condition with plain boring one.
+
+ drivers/net/gianfar.c |   16 ++++++++++++++--
+ drivers/net/gianfar.h |    1 +
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
+index 5ed8f9f..3da19a5 100644
+--- a/drivers/net/gianfar.c
++++ b/drivers/net/gianfar.c
+@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct gfar_private *priv)
+ 			(pvr == 0x80861010 && (mod & 0xfff9) == 0x80c0))
+ 		priv->errata |= GFAR_ERRATA_A002;
+ 
++	/* MPC8313 Rev < 2.0, MPC8548 rev 2.0 */
++	if ((pvr == 0x80850010 && mod == 0x80b0 && rev < 0x0020) ||
++			(pvr == 0x80210020 && mod == 0x8030 && rev == 0x0020))
++		priv->errata |= GFAR_ERRATA_12;
++
+ 	if (priv->errata)
+ 		dev_info(dev, "enabled errata workarounds, flags: 0x%x\n",
+ 			 priv->errata);
+@@ -2156,8 +2161,15 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ 	/* Set up checksumming */
+ 	if (CHECKSUM_PARTIAL == skb->ip_summed) {
+ 		fcb = gfar_add_fcb(skb);
+-		lstatus |= BD_LFLAG(TXBD_TOE);
+-		gfar_tx_checksum(skb, fcb);
++		/* as specified by errata */
++		if (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)
++			     && ((unsigned long)fcb % 0x20) > 0x18)) {
++			__skb_pull(skb, GMAC_FCB_LEN);
++			skb_checksum_help(skb);
++		} else {
++			lstatus |= BD_LFLAG(TXBD_TOE);
++			gfar_tx_checksum(skb, fcb);
++		}
+ 	}
+ 
+ 	if (vlan_tx_tag_present(skb)) {
+diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
+index 54de413..ec5d595 100644
+--- a/drivers/net/gianfar.h
++++ b/drivers/net/gianfar.h
+@@ -1039,6 +1039,7 @@ enum gfar_errata {
+ 	GFAR_ERRATA_74		= 0x01,
+ 	GFAR_ERRATA_76		= 0x02,
+ 	GFAR_ERRATA_A002	= 0x04,
++	GFAR_ERRATA_12		= 0x08, /* a.k.a errata eTSEC49 */
+ };
+ 
+ /* Struct stolen almost completely (and shamelessly) from the FCC enet source
+-- 
+1.7.3.2
diff --git a/a/content_digest b/N1/content_digest
index ceb8df7..c64db10 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -3,46 +3,75 @@
  "Subject\0[PATCH v2] gianfar: Fall back to software tcp/udp checksum on older controllers\0"
  "Date\0Thu, 27 Jan 2011 20:37:48 -0800 (PST)\0"
  "To\0Anton Vorontsov <cbouatmailru@gmail.com>\0"
- "Cc\0netdev@vger.kernel.org"
+ "Cc\0mlcreech@gmail.com"
   linuxppc-dev@lists.ozlabs.org
   davem@davemloft.net
- " mlcreech@gmail.com\0"
+ " netdev@vger.kernel.org\0"
  "\00:1\0"
  "b\0"
- "As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,=0A=\n"
- "older revisions of gianfar controllers will be unable to calculate a TCP/UD=\n"
- "P=0Apacket checksum for some alignments of the appropriate FCB. This patch =\n"
- "checks=0Afor FCB alignment on such controllers and falls back to software c=\n"
- "hecksumming=0Aif the alignment is known to be bad.=0A=0ASigned-off-by: Alex=\n"
- " Dubov <oakad@yahoo.com>=0A---=0AChanges for v2:=0A   - Make indentation sl=\n"
- "ightly more consistent.=0A   - Replace bizarre switch-based condition with =\n"
- "plain boring one.=0A=0A drivers/net/gianfar.c |   16 ++++++++++++++--=0A dr=\n"
- "ivers/net/gianfar.h |    1 +=0A 2 files changed, 15 insertions(+), 2 deleti=\n"
- "ons(-)=0A=0Adiff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c=0Ain=\n"
- "dex 5ed8f9f..3da19a5 100644=0A--- a/drivers/net/gianfar.c=0A+++ b/drivers/n=\n"
- "et/gianfar.c=0A@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct g=\n"
- "far_private *priv)=0A =09=09=09(pvr =3D=3D 0x80861010 && (mod & 0xfff9) =3D=\n"
- "=3D 0x80c0))=0A =09=09priv->errata |=3D GFAR_ERRATA_A002;=0A =0A+=09/* MPC8=\n"
- "313 Rev < 2.0, MPC8548 rev 2.0 */=0A+=09if ((pvr =3D=3D 0x80850010 && mod =\n"
- "=3D=3D 0x80b0 && rev < 0x0020) ||=0A+=09=09=09(pvr =3D=3D 0x80210020 && mod=\n"
- " =3D=3D 0x8030 && rev =3D=3D 0x0020))=0A+=09=09priv->errata |=3D GFAR_ERRAT=\n"
- "A_12;=0A+=0A =09if (priv->errata)=0A =09=09dev_info(dev, \"enabled errata wo=\n"
- "rkarounds, flags: 0x%x\\n\",=0A =09=09=09 priv->errata);=0A@@ -2156,8 +2161,1=\n"
- "5 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev=\n"
- ")=0A =09/* Set up checksumming */=0A =09if (CHECKSUM_PARTIAL =3D=3D skb->ip=\n"
- "_summed) {=0A =09=09fcb =3D gfar_add_fcb(skb);=0A-=09=09lstatus |=3D BD_LFL=\n"
- "AG(TXBD_TOE);=0A-=09=09gfar_tx_checksum(skb, fcb);=0A+=09=09/* as specified=\n"
- " by errata */=0A+=09=09if (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)=\n"
- "=0A+=09=09=09     && ((unsigned long)fcb % 0x20) > 0x18)) {=0A+=09=09=09__s=\n"
- "kb_pull(skb, GMAC_FCB_LEN);=0A+=09=09=09skb_checksum_help(skb);=0A+=09=09} =\n"
- "else {=0A+=09=09=09lstatus |=3D BD_LFLAG(TXBD_TOE);=0A+=09=09=09gfar_tx_che=\n"
- "cksum(skb, fcb);=0A+=09=09}=0A =09}=0A =0A =09if (vlan_tx_tag_present(skb))=\n"
- " {=0Adiff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h=0Aindex 54d=\n"
- "e413..ec5d595 100644=0A--- a/drivers/net/gianfar.h=0A+++ b/drivers/net/gian=\n"
- "far.h=0A@@ -1039,6 +1039,7 @@ enum gfar_errata {=0A =09GFAR_ERRATA_74=09=09=\n"
- "=3D 0x01,=0A =09GFAR_ERRATA_76=09=09=3D 0x02,=0A =09GFAR_ERRATA_A002=09=3D =\n"
- "0x04,=0A+=09GFAR_ERRATA_12=09=09=3D 0x08, /* a.k.a errata eTSEC49 */=0A };=\n"
- "=0A =0A /* Struct stolen almost completely (and shamelessly) from the FCC e=\n"
- net source=0A-- =0A1.7.3.2=0A=0A=0A=0A=0A
+ "As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,\n"
+ "older revisions of gianfar controllers will be unable to calculate a TCP/UDP\n"
+ "packet checksum for some alignments of the appropriate FCB. This patch checks\n"
+ "for FCB alignment on such controllers and falls back to software checksumming\n"
+ "if the alignment is known to be bad.\n"
+ "\n"
+ "Signed-off-by: Alex Dubov <oakad@yahoo.com>\n"
+ "---\n"
+ "Changes for v2:\n"
+ "   - Make indentation slightly more consistent.\n"
+ "   - Replace bizarre switch-based condition with plain boring one.\n"
+ "\n"
+ " drivers/net/gianfar.c |   16 ++++++++++++++--\n"
+ " drivers/net/gianfar.h |    1 +\n"
+ " 2 files changed, 15 insertions(+), 2 deletions(-)\n"
+ "\n"
+ "diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c\n"
+ "index 5ed8f9f..3da19a5 100644\n"
+ "--- a/drivers/net/gianfar.c\n"
+ "+++ b/drivers/net/gianfar.c\n"
+ "@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct gfar_private *priv)\n"
+ " \t\t\t(pvr == 0x80861010 && (mod & 0xfff9) == 0x80c0))\n"
+ " \t\tpriv->errata |= GFAR_ERRATA_A002;\n"
+ " \n"
+ "+\t/* MPC8313 Rev < 2.0, MPC8548 rev 2.0 */\n"
+ "+\tif ((pvr == 0x80850010 && mod == 0x80b0 && rev < 0x0020) ||\n"
+ "+\t\t\t(pvr == 0x80210020 && mod == 0x8030 && rev == 0x0020))\n"
+ "+\t\tpriv->errata |= GFAR_ERRATA_12;\n"
+ "+\n"
+ " \tif (priv->errata)\n"
+ " \t\tdev_info(dev, \"enabled errata workarounds, flags: 0x%x\\n\",\n"
+ " \t\t\t priv->errata);\n"
+ "@@ -2156,8 +2161,15 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)\n"
+ " \t/* Set up checksumming */\n"
+ " \tif (CHECKSUM_PARTIAL == skb->ip_summed) {\n"
+ " \t\tfcb = gfar_add_fcb(skb);\n"
+ "-\t\tlstatus |= BD_LFLAG(TXBD_TOE);\n"
+ "-\t\tgfar_tx_checksum(skb, fcb);\n"
+ "+\t\t/* as specified by errata */\n"
+ "+\t\tif (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)\n"
+ "+\t\t\t     && ((unsigned long)fcb % 0x20) > 0x18)) {\n"
+ "+\t\t\t__skb_pull(skb, GMAC_FCB_LEN);\n"
+ "+\t\t\tskb_checksum_help(skb);\n"
+ "+\t\t} else {\n"
+ "+\t\t\tlstatus |= BD_LFLAG(TXBD_TOE);\n"
+ "+\t\t\tgfar_tx_checksum(skb, fcb);\n"
+ "+\t\t}\n"
+ " \t}\n"
+ " \n"
+ " \tif (vlan_tx_tag_present(skb)) {\n"
+ "diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h\n"
+ "index 54de413..ec5d595 100644\n"
+ "--- a/drivers/net/gianfar.h\n"
+ "+++ b/drivers/net/gianfar.h\n"
+ "@@ -1039,6 +1039,7 @@ enum gfar_errata {\n"
+ " \tGFAR_ERRATA_74\t\t= 0x01,\n"
+ " \tGFAR_ERRATA_76\t\t= 0x02,\n"
+ " \tGFAR_ERRATA_A002\t= 0x04,\n"
+ "+\tGFAR_ERRATA_12\t\t= 0x08, /* a.k.a errata eTSEC49 */\n"
+ " };\n"
+ " \n"
+ " /* Struct stolen almost completely (and shamelessly) from the FCC enet source\n"
+ "-- \n"
+ 1.7.3.2
 
-1b1846a50fe62366f29c515079433c7235d80c9e0cea9e8446a5a514fa617a34
+78f0a4d190c35372de8784d197ac67a54896742a88f305b772b17655a42a2e8e

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.