David Miller wrote:
Ok, this is rev2, changes:

1) Jumbo MTU support is now present.  I got stuck on this for
   a while because I didn't realize that resetting the RX
   XMAC would reset the XMAC_MAX register.  I thought that
   was a TX XMAC resource, ho hum...

   Fix this by re-initializing the TX MAC after resetting
   the RX MAC.

2) Implementing support for jumbograms required a re-examination of
   how TX queue handling was done.

   Neptune can report the TX Head at a location which is in the middle
   of a packet's group of descriptors for a multi segment packet.
   Working around this would just overly complicate the code.

   We don't need to use the TX Head register.  Instead, track the
   "pkt_cnt" field of the TX_CS register.  The difference since the
   last reading is the number of full TX frames we can reclaim from
   the ring.

   This is not only simpler, it allows us to only need one MMIO
   access (for TX_CS) during a reclaim run instead of two (TX_CS
   and TX_RING_HDL).

   A side note, I'm purposefully not using TX mailbox support.  It's
   broken in Neptune.  If you get the registers in the DMA mailbox, MK
   and MMK are always both set in the TX_CS register.  So even if you
   write the MK and MB bits back to TX_CS to clear the interrupt, the
   MMK propagates to MK and you thus get another interrupt.  This
   basically makes TX DMA mailbox support useless.

4) All register write accessors are now of the form xxx(reg, val)
   instead of xxx(val, reg)

5) Kill PCI_DEVICE_ID_SUN_NEPTUNE define, unneeded.

Performance isn't the best, but the driver is reasonably solid.  After
I flesh out the remaining features that need to be implemented I'll
take a closer look at that.

Enjoy.

commit 684a7c25fff607dc647f065761bb381f28bddbdb
Author: David S. Miller <[EMAIL PROTECTED]>
Date:   Thu Sep 27 21:43:57 2007 -0700

    [NIU]: Add Sun Neptune ethernet driver.
Signed-off-by: David S. Miller <[EMAIL PROTECTED]>

diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 467532c..3c94c8f 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -2601,6 +2601,13 @@ config NETXEN_NIC
        help
          This enables the support for NetXen's Gigabit Ethernet card.
+config NIU
+       tristate "Sun Neptune 10Gbit Ethernet support"
+       depends on PCI
+       help
+         This enables support for cards based upon Sun's
+         Neptune chipset.
+
 config PASEMI_MAC
        tristate "PA Semi 1/10Gbit MAC"
        depends on PPC64 && PCI
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 6220c50..cce379b 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -242,3 +242,4 @@ obj-$(CONFIG_NETCONSOLE) += netconsole.o
 obj-$(CONFIG_FS_ENET) += fs_enet/
obj-$(CONFIG_NETXEN_NIC) += netxen/
+obj-$(CONFIG_NIU) += niu.o
diff --git a/drivers/net/niu.c b/drivers/net/niu.c
new file mode 100644
index 0000000..5b89559
--- /dev/null
+++ b/drivers/net/niu.c

Dave,
Couple of comments on Jumbo support

TX Side:
Can we rule of fragment size > MAX_TX_DESC_LEN? If that is not the case, then the frags my need the same tx post and reclaim logic as the skb->data

RX Side
Since the MAC is set not to strip FCS bytes, the last page could contain just 1 - 4 bytes of FCS. Not only this wastes the page but may result on bug RX process where skb->len is wrong and a page with junk is passed to the stack. In our off-the-tree driver, we check this condition and repost the last page back to the rbr, if it contains just the FCS bytes.

Regards,
Matheos

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to