This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
PATCH eth/powerpc fec/quicc RX routine
- From: "Harald Küthe" <Harald dot Kuethe at controlware dot de>
- To: <ecos-patches at sources dot redhat dot com>
- Date: Mon, 11 Oct 2004 10:09:24 +0200
- Subject: PATCH eth/powerpc fec/quicc RX routine
Hello,
during my bridging tests I found out that the packet which is passed to the upper layer contains the CRC.
This causes packets which use the full ethernet length will not be forwarded.
This patch removes the CRC.
A further patch which adds setting the promiscuous mode to the FEC can be provided.
Regards
Harald
diff -urN packages.orig/devs/eth/powerpc/fec/current/ChangeLog packages/devs/eth/powerpc/fec/current/ChangeLog
--- packages.orig/devs/eth/powerpc/fec/current/ChangeLog 2003-12-21 14:46:52.000000000 +0100
+++ packages/devs/eth/powerpc/fec/current/ChangeLog 2004-10-11 09:59:51.000000000 +0200
@@ -1,3 +1,7 @@
+2004-10-11 Harald Kuethe <hkuethe@controlware.de>
+
+ * src/if_fec.c (fec_eth_RxEvent): remove crc from packet.
+
2003-12-21 Gary Thomas <gary@mlbassoc.com>
* src/if_fec.c (fec_eth_RxEvent): Clean up some unused variables.
diff -urN packages.orig/devs/eth/powerpc/fec/current/src/if_fec.c packages/devs/eth/powerpc/fec/current/src/if_fec.c
--- packages.orig/devs/eth/powerpc/fec/current/src/if_fec.c 2003-12-21 14:46:54.000000000 +0100
+++ packages/devs/eth/powerpc/fec/current/src/if_fec.c 2004-10-11 09:55:35.000000000 +0200
@@ -678,7 +678,7 @@
if ((rxbd->ctrl & FEC_BD_Rx_Empty) == 0) {
qi->rxbd = rxbd; // Save for callback
set_led(LED_RxACTIVE);
- (sc->funs->eth_drv->recv)(sc, rxbd->length);
+ (sc->funs->eth_drv->recv)(sc, rxbd->length - 4); // remove CRC
}
if (rxbd->ctrl & FEC_BD_Rx_Wrap) {
rxbd = qi->rbase;
diff -urN packages.orig/devs/eth/powerpc/quicc/current/ChangeLog packages/devs/eth/powerpc/quicc/current/ChangeLog
--- packages.orig/devs/eth/powerpc/quicc/current/ChangeLog 2003-08-19 19:29:44.000000000 +0200
+++ packages/devs/eth/powerpc/quicc/current/ChangeLog 2004-10-11 09:59:44.000000000 +0200
@@ -1,3 +1,7 @@
+2004-10-11 Harald Kuethe <hkuethe@controlware.de>
+
+ * src/if_quicc.c (quicc_eth_RxEvent): remove crc from packet.
+
2003-08-19 Gary Thomas <gary@mlbassoc.com>
* src/if_quicc.c (quicc_eth_init): Use 'quicc_eth_command()'
diff -urN packages.orig/devs/eth/powerpc/quicc/current/src/if_quicc.c packages/devs/eth/powerpc/quicc/current/src/if_quicc.c
--- packages.orig/devs/eth/powerpc/quicc/current/src/if_quicc.c 2003-08-19 19:29:44.000000000 +0200
+++ packages/devs/eth/powerpc/quicc/current/src/if_quicc.c 2004-10-11 09:59:02.000000000 +0200
@@ -646,7 +646,7 @@
qi->rxbd = rxbd; // Save for callback
set_led(LED_RxACTIVE);
- (sc->funs->eth_drv->recv)(sc, rxbd->length);
+ (sc->funs->eth_drv->recv)(sc, rxbd->length - 4); // remove CRC
clear_led(LED_RxACTIVE);
}