I have similar problems on a couple of 7.3 boxes with latest driver form -CURRENT. I just wanted to know if your 7 boxes work fine so I look for cause else where.
On 2/7/2011 3:23 AM, Mike Tancsa wrote:
So far so good. I would often get a hang on the level zero dumps to my backup server Sunday AM, and it made it through! So a good sign, but not a definitive sign. I have a PCIe em card that has this chipset as well and was showing the same sort of problem in a customer's RELENG_7 box. I will see if I can get the customer to try the card in their box with the patch for RELENG_7 as it would show this issue at least once a day until I pulled the card for an older version ---Mike On 2/4/2011 1:12 PM, Jack Vogel wrote:Was curious too, but being more patient than you :) Jack On Fri, Feb 4, 2011 at 10:09 AM, Sean Bruno<sean...@yahoo-inc.com> wrote:Any more data on this problem or do we have to wait a while? Sean On Wed, 2011-02-02 at 10:28 -0800, Mike Tancsa wrote:On 2/2/2011 12:37 PM, Jack Vogel wrote:So has everyone that wanted to get something testing been able to doso?I have been testing in the back and will deploy to my production box this afternoon. As I am not able to reproduce it easily, it will be a bit before I can say the issue is gone. Jan however, was able to trigger it with greater ease ? ---MikeJack On Tue, Feb 1, 2011 at 7:03 PM, Mike Tancsa<m...@sentex.net> wrote:On 2/1/2011 5:03 PM, Sean Bruno wrote:On Tue, 2011-02-01 at 13:43 -0800, Jack Vogel wrote:To those who are going to test, here is the if_em.c, based on head, with my changes, I have to leave for the afternoon, and have not had achanceto build this, but it should work. I will check back in the later evening. Any blatant problems Sean, feel free to fix them :) JackI suspect that line 1490 should be: if (more_rx || (ifp->if_drv_flags& IFF_DRV_OACTIVE)) {I have hacked up a RELENG_8 version which I think is correct including the above change http://www.tancsa.com/if_em-8.c --- if_em.c.orig 2011-02-01 21:47:14.000000000 -0500 +++ if_em.c 2011-02-01 21:47:19.000000000 -0500 @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE.******************************************************************************/-/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21.2.20 2011/01/22 01:37:53 jfv Exp $*/ +/*$FreeBSD$*/ #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" @@ -93,7 +93,7 @@/********************************************************************** Driver version:*********************************************************************/-char em_driver_version[] = "7.1.9"; +char em_driver_version[] = "7.1.9-test";/********************************************************************** PCI Device ID Table @@ -927,11 +927,10 @@ if (!adapter->link_active) return; - /* Call cleanup if number of TX descriptors low */ - if (txr->tx_avail<= EM_TX_CLEANUP_THRESHOLD) - em_txeof(txr); - while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + /* First cleanup if TX descriptors low */ + if (txr->tx_avail<= EM_TX_CLEANUP_THRESHOLD) + em_txeof(txr); if (txr->tx_avail< EM_MAX_SCATTER) { ifp->if_drv_flags |= IFF_DRV_OACTIVE; break; @@ -1411,8 +1410,7 @@ if (!drbr_empty(ifp, txr->br)) em_mq_start_locked(ifp, txr, NULL); #else - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) - em_start_locked(ifp, txr); + em_start_locked(ifp, txr); #endif EM_TX_UNLOCK(txr); @@ -1475,11 +1473,10 @@ struct ifnet *ifp = adapter->ifp; struct tx_ring *txr = adapter->tx_rings; struct rx_ring *rxr = adapter->rx_rings; - bool more; - if (ifp->if_drv_flags& IFF_DRV_RUNNING) { - more = em_rxeof(rxr, adapter->rx_process_limit, NULL); + bool more_rx; + more_rx = em_rxeof(rxr, adapter->rx_process_limit,NULL);EM_TX_LOCK(txr); em_txeof(txr); @@ -1487,12 +1484,10 @@ if (!drbr_empty(ifp, txr->br)) em_mq_start_locked(ifp, txr, NULL); #else - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) - em_start_locked(ifp, txr); + em_start_locked(ifp, txr); #endif - em_txeof(txr); EM_TX_UNLOCK(txr); - if (more) { + if (more_rx || (ifp->if_drv_flags& IFF_DRV_OACTIVE)){taskqueue_enqueue(adapter->tq,&adapter->que_task);return; } @@ -1604,7 +1599,6 @@ if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) em_start_locked(ifp, txr); #endif - em_txeof(txr); E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims); EM_TX_UNLOCK(txr); } @@ -3730,17 +3724,17 @@ txr->queue_status = EM_QUEUE_HUNG; /* - * If we have enough room, clear IFF_DRV_OACTIVE + * If we have a minimum free, clear IFF_DRV_OACTIVE * to tell the stack that it is OK to send packets. */ - if (txr->tx_avail> EM_TX_CLEANUP_THRESHOLD) { + if (txr->tx_avail> EM_MAX_SCATTER) ifp->if_drv_flags&= ~IFF_DRV_OACTIVE; - /* Disable watchdog if all clean */ - if (txr->tx_avail == adapter->num_tx_desc) { - txr->queue_status = EM_QUEUE_IDLE; - return (FALSE); - } - } + + /* Disable watchdog if all clean */ + if (txr->tx_avail == adapter->num_tx_desc) { + txr->queue_status = EM_QUEUE_IDLE; + return (FALSE); + } return (TRUE); } @@ -5064,8 +5058,8 @@ char namebuf[QUEUE_NAME_LEN]; /* Driver Statistics */ - SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "link_irq", - CTLFLAG_RD,&adapter->link_irq, 0, + SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "link_irq", + CTLFLAG_RD,&adapter->link_irq,0, "Link MSIX IRQ Handled"); SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_alloc_fail", CTLFLAG_RD,&adapter->mbuf_alloc_failed, @@ -5108,11 +5102,13 @@ queue_list = SYSCTL_CHILDREN(queue_node); SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_head", - CTLFLAG_RD, adapter,E1000_TDH(txr->me),+ CTLFLAG_RD, adapter, + E1000_TDH(txr->me), em_sysctl_reg_handler, "IU", "Transmit Descriptor Head"); SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_tail", - CTLFLAG_RD, adapter,E1000_TDT(txr->me),+ CTLFLAG_RD, adapter, + E1000_TDT(txr->me), em_sysctl_reg_handler, "IU", "Transmit Descriptor Tail"); SYSCTL_ADD_ULONG(ctx, queue_list, OID_AUTO, "tx_irq", @@ -5123,11 +5119,13 @@ "Queue No Descriptor Available"); SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head", - CTLFLAG_RD, adapter,E1000_RDH(rxr->me),+ CTLFLAG_RD, adapter, + E1000_RDH(rxr->me), em_sysctl_reg_handler, "IU", "Receive Descriptor Head"); SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_tail", - CTLFLAG_RD, adapter,E1000_RDT(rxr->me),+ CTLFLAG_RD, adapter, + E1000_RDT(rxr->me), em_sysctl_reg_handler, "IU", "Receive Descriptor Tail"); SYSCTL_ADD_ULONG(ctx, queue_list, OID_AUTO, "rx_irq", @@ -5141,19 +5139,19 @@ CTLFLAG_RD, NULL, "Statistics"); stat_list = SYSCTL_CHILDREN(stat_node); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "excess_coll", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "excess_coll", CTLFLAG_RD,&stats->ecol, "Excessive collisions"); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "single_coll", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "single_coll", CTLFLAG_RD,&stats->scc, "Single collisions"); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "multiple_coll", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "multiple_coll", CTLFLAG_RD,&stats->mcc, "Multiple collisions"); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "late_coll", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "late_coll", CTLFLAG_RD,&stats->latecol, "Late collisions"); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "collision_count", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "collision_count", CTLFLAG_RD,&stats->colc, "Collision Count"); SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "symbol_errors", @@ -5240,12 +5238,12 @@ SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO,"rx_frames_1024_1522",CTLFLAG_RD,&adapter->stats.prc1522, "1023-1522 byte frames received"); - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "good_octets_recvd", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "good_octets_recvd", CTLFLAG_RD,&adapter->stats.gorc, "Good Octets Received"); /* Packet Transmission Stats */ - SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "good_octets_txd", + SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "good_octets_txd", CTLFLAG_RD,&adapter->stats.gotc, "Good Octets Transmitted"); SYSCTL_ADD_QUAD(ctx, stat_list, OID_AUTO, "total_pkts_txd", -- ------------------- Mike Tancsa, tel +1 519 651 3400 Sentex Communications, m...@sentex.net Providing Internet services since 1994 www.sentex.net Cambridge, Ontario Canada http://www.tancsa.com/-- ------------------- Mike Tancsa, tel +1 519 651 3400 Sentex Communications, m...@sentex.net Providing Internet services since 1994 www.sentex.net Cambridge, Ontario Canada http://www.tancsa.com/ _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
_______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"