Module Name: src Committed By: martin Date: Wed Apr 4 16:18:49 UTC 2018
Modified Files: src/sys/dev/pci/ixgbe [netbsd-8]: ix_txrx.c ixgbe.c ixgbe.h ixgbe_82599.c ixgbe_api.h ixgbe_common.c ixgbe_common.h ixgbe_x550.c ixgbe_x550.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #690): sys/dev/pci/ixgbe/ixgbe_82599.c: revision 1.17 sys/dev/pci/ixgbe/ixgbe.c: revision 1.138 sys/dev/pci/ixgbe/ixv.c: revision 1.90 sys/dev/pci/ixgbe/ixgbe.c: revision 1.139 sys/dev/pci/ixgbe/ixgbe_common.c: revision 1.19 sys/dev/pci/ixgbe/ixgbe_common.h: revision 1.11 sys/dev/pci/ixgbe/ixgbe.h: revision 1.38 sys/dev/pci/ixgbe/ixgbe_api.h: revision 1.12 sys/dev/pci/ixgbe/ixgbe.h: revision 1.39 sys/dev/pci/ixgbe/ixgbe_x550.c: revision 1.10 sys/dev/pci/ixgbe/ixgbe_x550.c: revision 1.11 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.37 sys/dev/pci/ixgbe/ix_txrx.c: revision 1.38 sys/dev/pci/ixgbe/ixgbe.c: revision 1.140 sys/dev/pci/ixgbe/ixgbe_common.c: revision 1.20 sys/dev/pci/ixgbe/ixgbe.c: revision 1.141 sys/dev/pci/ixgbe/ixgbe.c: revision 1.142 sys/dev/pci/ixgbe/ixgbe.c: revision 1.143 sys/dev/pci/ixgbe/ixgbe.h: revision 1.40 sys/dev/pci/ixgbe/ixgbe_x550.h: revision 1.4 Fix the problem between eitr and link_speed. In ixgbe_msix_que(), que->eitr_setting is limited to IXGBE_MIN_RSC_EITR_10G1G when link_speed is 1Gbps or 10Gbps. However, que->eitr_setting is set to EITR register in the *next* Tx/Rx interrupt. If link_speed changes from 100Mbps to 1Gbps ro 10Gbps, que->eitr_setting which is not limited can be set to EITR register, that is, the problem fixed by ixgbe.c:r1.124 can occur in this case. To fix this case, que->eitr_setting should be clear when link_speed is changed or link state is changed. Furthermore, expand the variants used for AIM (txr->bytes, txr->packets, rxr->bytes and rxr->packets) from u32 to u64 to avoid wraparound which causes que->eitr_setting calculation mistake. XXX pullup-8 Don't write EIMC directly. It is required to manage with struct ix_queue status. XXX pullup-8 - Add missing IFM_NONE support. If a interface support linkdown, "ifconfig ixgN media none" drpos link. Not all interface can do link down. Tested: 82598 AT2 (T) 92599 SF+(SFI) (X520-DA2) X540 X550-T1 X550EM_x (X10SDV-8C-TLN4F) X550EM_a (A2SDi-H-TP4F port 0, 1 (T)) Doesn't work: X550EM_a (A2SDi-H-TP4F port 2, 3 (SFP+ (KR))) X550EM_a (MA10-ST0 port 2, 3 (SFP+ (SFI))) (Denverton SFP+ can't force link down because SFP+'s TX_DISABLE pin is pull down. Is there a way to shutdown SFP+ cage's power?) Not tested: 82598 fiber. - Change some functions static. Avoid issues caused by sending old packets at next link-up time. This modification consists by the following two parts. - drain packets in if_snd queue or corresponding txr->txr_interq when link_active == false in ifp->if_start(), ifp->if_transmit(), and deferred Tx processing - drain packets in if_snd queue and all of txr->txr_interq's at link-down time ok by msaitoh@n.o. Fix long standing bug that 82598 SFP+ panics in ixgbe_handle_mod() because hw->mac.ops.setup_sfp is NULL. This change is a part of FreeBSD r327031. Fix a bug that "ifconfig ixgN down up" forgot IFM_NONE setting. - Don't assume autoneg == 0 is the first call of ixgbe_config_link(). Check ifm_media, too. - Don't override autoneg_advertised in ixgbe_get_phy_id_fw() to not to be inconsistent with if_media value. To generate a diff of this commit: cvs rdiff -u -r1.24.2.8 -r1.24.2.9 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.88.2.15 -r1.88.2.16 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.24.6.8 -r1.24.6.9 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.14.8.1 -r1.14.8.2 src/sys/dev/pci/ixgbe/ixgbe_82599.c cvs rdiff -u -r1.9.8.1 -r1.9.8.2 src/sys/dev/pci/ixgbe/ixgbe_api.h cvs rdiff -u -r1.13.2.2 -r1.13.2.3 src/sys/dev/pci/ixgbe/ixgbe_common.c cvs rdiff -u -r1.7.8.2 -r1.7.8.3 src/sys/dev/pci/ixgbe/ixgbe_common.h cvs rdiff -u -r1.5.6.2 -r1.5.6.3 src/sys/dev/pci/ixgbe/ixgbe_x550.c cvs rdiff -u -r1.2.12.1 -r1.2.12.2 src/sys/dev/pci/ixgbe/ixgbe_x550.h cvs rdiff -u -r1.56.2.12 -r1.56.2.13 src/sys/dev/pci/ixgbe/ixv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.