Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Jan 2005 09:51:40 -0300
From:      mario.lobo@ipad.com.br
To:        freebsd-hackers@freebsd.org
Cc:        freebsd-questions@freebsd.org
Subject:   sk0: discard oversize frame (ether type ....)
Message-ID:  <41DBB8AC.25603.26B282@localhost>

next in thread | raw e-mail | index | archive | help
Hi everyone;

Using freeBsd 5.3.

Trying to get the gigabit sk driver to work but even if I force it to 100b=
aseTX full-duplex I still 
get when doing an ftp session:

sk0: discard oversize frame (ether type ....)
sk0: discard frame w/o leading ethernet header ( len 0 pkt len 0)

The transfer finishes ok though.
I have two machines conected via crossover cat 5 RJ-45. Besides the above =
errors, I get a 3.5 MB/s 
tranfer rate, which is way bellow the 10 MB/s I get when doing the same th=
ing with 2 via-rhine 
boards.

I found this patch on google, but it=B4s a bit outside of my programming s=
kills:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/ncvs/src/sys/pci/if_sk.c,v
retrieving revision 1.86
diff -u -r1.86 if_sk.c
--- if_sk.c20 Aug 2004 06:22:04 -00001.86
+++ if_sk.c1 Nov 2004 00:54:20 -0000
@@ -1816,11 +1816,13 @@
 }
 
 /* Transmit */
-sc_if->sk_cdata.sk_tx_prod =3D idx;
-CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START);
+if (idx !=3D sc_if->sk_cdata.sk_tx_prod) {
+sc_if->sk_cdata.sk_tx_prod =3D idx;
+CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START);
 
-/* Set a timeout in case the chip goes out to lunch. */
-ifp->if_timer =3D 5;
+/* Set a timeout in case the chip goes out to lunch. */
+ifp->if_timer =3D 5;
+}
 SK_IF_UNLOCK(sc_if);
 
 return;
@@ -1960,13 +1962,15 @@
 }
 sc_if->sk_cdata.sk_tx_cnt--;
 SK_INC(idx, SK_TX_RING_CNT);
-ifp->if_timer =3D 0;
 }
 
-sc_if->sk_cdata.sk_tx_cons =3D idx;
-
-if (cur_tx !=3D NULL)
+if (sc_if->sk_cdata.sk_tx_cnt =3D=3D 0) {
+ifp->if_timer =3D 0;
 ifp->if_flags &=3D ~IFF_OACTIVE;
+} else /* nudge chip to keep tx ring moving */
+CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START);
+
+sc_if->sk_cdata.sk_tx_cons =3D idx;
 
 return;
 }
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

The person who found it said that he grabbed from netbsd.

Maybe one of you guys can shed some light on this for me.

Thanks,
-- 
   //|  //||
  // | // ||
-//--//---|| ARIO LOBO
//  //    ||
---------------------------------
mario.lobo@ipad.com.br
http://www.ipad.com.br



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41DBB8AC.25603.26B282>