Removing eth crc. The frames already have a 32bit crc.
authorviric@llimona
Sun, 30 Sep 2007 18:42:11 +0200
changeset 61 0b9daeb1cb1c
parent 60 18c24be2b1a6
child 62 dea93836aba5
Removing eth crc. The frames already have a 32bit crc.
eth_proto.c
--- a/eth_proto.c	Sun Sep 30 18:34:48 2007 +0200
+++ b/eth_proto.c	Sun Sep 30 18:42:11 2007 +0200
@@ -33,7 +33,7 @@
 
 enum {
     MAXPACKET = 1000,
-    HEAD = 10
+    HEAD = 9
 };
 
 static char eth_buffer[1000];
@@ -41,24 +41,21 @@
 static void eth_fill_mac(unsigned char *mac, const char *str);
 
 static int make_head(unsigned char *data, unsigned int seq, enum Control c,
-        int size, unsigned char crc)
+        int size)
 {
     *((unsigned int *) data) = htonl(seq);
     data[4] = (unsigned char) c;
     *((unsigned int *)(data+5)) = htonl(size);
-    data[9] = crc;
     return HEAD;
 }
 
 static int parse_head(unsigned char *data, unsigned int *seq, enum Control *c,
-        int *size, unsigned char *crc)
+        int *size)
 {
     *seq = ntohl( *((unsigned int*) data) );
     *c = data[4];
     if (size)
         *size = ntohl(*((unsigned int *)(data+5)));
-    if (crc)
-        *crc = data[9];
     return HEAD;
 }
 
@@ -82,7 +79,7 @@
         eth_fill_mac(edata.partner, command_line.c_param.server_address);
         edata.partner_set = 1;
 
-        make_head(eth_buffer, edata.seq_send, INIT, 0, 0);
+        make_head(eth_buffer, edata.seq_send, INIT, 0);
         eth_send(command_line.eth_device, edata.partner, eth_buffer, HEAD);
         edata.seq_send++;
     }
@@ -90,24 +87,12 @@
     return edata.socket;
 }
 
-static unsigned char get_crc(const char *data, int size)
-{
-    int i;
-    unsigned char crc = 0;
-    for (i=0; i < size; ++i, ++data)
-    {
-        crc ^= *data;
-    }
-    return crc;
-}
-
 int eth_proto_recv(char *data, int size)
 {
     int res;
     int seq;
     enum Control c;
     char partner[6];
-    unsigned char crc;
 
     if (edata.tmp_buffer_filled)
     {
@@ -120,7 +105,7 @@
             res = eth_recv(eth_buffer, sizeof(eth_buffer), partner);
             edata.partner_set = 1;
     } while(res < HEAD);
-    parse_head(eth_buffer, &seq, &c, &res, &crc);
+    parse_head(eth_buffer, &seq, &c, &res);
     /* We admit any first connection */
     if (seq == 0 && c == INIT)
     {
@@ -128,8 +113,7 @@
       memcpy(edata.partner, partner, sizeof(edata.partner));
       return -1; /* Nothing the parent should care about */
     }
-    if (seq != edata.seq_wait || c != SEND ||
-            crc != get_crc(eth_buffer + HEAD, res) )
+    if (seq != edata.seq_wait || c != SEND)
     {
         edata.wrong_recv++;
         return -1;
@@ -137,7 +121,7 @@
     /* res comes from parse_head. */
     memcpy(data, eth_buffer + HEAD, min(size, res));
 
-    make_head(eth_buffer, seq, ACK, 0, 0);
+    make_head(eth_buffer, seq, ACK, 0);
     eth_send(command_line.eth_device, edata.partner, eth_buffer, HEAD);
     edata.seq_wait++;
 
@@ -173,7 +157,6 @@
         int sent;
         int rseq;
         int res;
-        unsigned char crc;
         enum Control rc;
 
         if (retries == 0)
@@ -184,8 +167,7 @@
 
         once = min(sizeof(eth_buffer)-HEAD, size);
 
-        crc = get_crc(data, once);
-        make_head(eth_buffer, edata.seq_send, SEND, once, crc);
+        make_head(eth_buffer, edata.seq_send, SEND, once);
         memcpy(eth_buffer+HEAD, data, once);
         sent = eth_send(command_line.eth_device, edata.partner,
                 eth_buffer, once+HEAD);
@@ -204,7 +186,7 @@
         unprogram_timeout();
         retries = 3;
 
-        parse_head(eth_buffer, &rseq, &rc, 0, 0);
+        parse_head(eth_buffer, &rseq, &rc, 0);
         if (rc == SEND)
         {
             if (rseq != edata.seq_wait)