svn commit: r247805 - stable/8/sys/dev/an
John Baldwin
jhb at FreeBSD.org
Mon Mar 4 17:35:11 UTC 2013
Author: jhb
Date: Mon Mar 4 17:35:10 2013
New Revision: 247805
URL: http://svnweb.freebsd.org/changeset/base/247805
Log:
MFC 199757:
- For 350 chips, don't set various INTR bits in TX control word; turning INTR
bits on seems to confuse hardware TX engine.
- For 350 chips, set TX desc's buffer physical address before turning on the
TX desc valid bit.
PR: kern/85886
Modified:
stable/8/sys/dev/an/if_an.c
stable/8/sys/dev/an/if_anreg.h
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/dev/ (props changed)
stable/8/sys/dev/an/ (props changed)
Modified: stable/8/sys/dev/an/if_an.c
==============================================================================
--- stable/8/sys/dev/an/if_an.c Mon Mar 4 16:55:16 2013 (r247804)
+++ stable/8/sys/dev/an/if_an.c Mon Mar 4 17:35:10 2013 (r247805)
@@ -2803,7 +2803,7 @@ an_start(struct ifnet *ifp)
tx_frame_802_3.an_tx_802_3_payload_len,
(caddr_t)&sc->an_txbuf);
- txcontrol = AN_TXCTL_8023;
+ txcontrol = AN_TXCTL_8023 | AN_TXCTL_HW(sc->mpi350);
/* write the txcontrol only */
an_write_data(sc, id, 0x08, (caddr_t)&txcontrol,
sizeof(txcontrol));
@@ -2866,7 +2866,7 @@ an_start(struct ifnet *ifp)
tx_frame_802_3.an_tx_802_3_payload_len,
(caddr_t)&sc->an_txbuf);
- txcontrol = AN_TXCTL_8023;
+ txcontrol = AN_TXCTL_8023 | AN_TXCTL_HW(sc->mpi350);
/* write the txcontrol only */
bcopy((caddr_t)&txcontrol, &buf[0x08],
sizeof(txcontrol));
@@ -2888,7 +2888,7 @@ an_start(struct ifnet *ifp)
tx_frame_802_3.an_tx_802_3_payload_len;
an_tx_desc.an_phys
= sc->an_tx_buffer[idx].an_dma_paddr;
- for (i = 0; i < sizeof(an_tx_desc) / 4 ; i++) {
+ for (i = sizeof(an_tx_desc) / 4 - 1; i >= 0; i--) {
CSR_MEM_AUX_WRITE_4(sc, AN_TX_DESC_OFFSET
/* zero for now */
+ (0 * sizeof(an_tx_desc))
Modified: stable/8/sys/dev/an/if_anreg.h
==============================================================================
--- stable/8/sys/dev/an/if_anreg.h Mon Mar 4 16:55:16 2013 (r247804)
+++ stable/8/sys/dev/an/if_anreg.h Mon Mar 4 17:35:10 2013 (r247805)
@@ -394,13 +394,18 @@ struct an_txframe_802_3 {
#define AN_PAYLOADTYPE_ETHER 0x0000
#define AN_PAYLOADTYPE_LLC 0x0010
-#define AN_TXCTL_80211 \
- (AN_TXCTL_TXOK_INTR|AN_TXCTL_TXERR_INTR|AN_HEADERTYPE_80211| \
- AN_PAYLOADTYPE_LLC|AN_TXCTL_NORELEASE)
-
-#define AN_TXCTL_8023 \
- (AN_TXCTL_TXOK_INTR|AN_TXCTL_TXERR_INTR|AN_HEADERTYPE_8023| \
- AN_PAYLOADTYPE_ETHER|AN_TXCTL_NORELEASE)
+#define AN_TXCTL_80211 (AN_HEADERTYPE_80211|AN_PAYLOADTYPE_LLC)
+
+#define AN_TXCTL_8023 (AN_HEADERTYPE_8023|AN_PAYLOADTYPE_ETHER)
+
+/*
+ * Additions to transmit control bits for MPI350
+ */
+#define AN_TXCTL_HW(x) \
+ ( x ? (AN_TXCTL_NORELEASE) \
+ : \
+ (AN_TXCTL_TXOK_INTR|AN_TXCTL_TXERR_INTR|AN_TXCTL_NORELEASE) \
+ )
#define AN_TXGAP_80211 0
#define AN_TXGAP_8023 0
More information about the svn-src-stable
mailing list