From owner-svn-src-all@freebsd.org Mon Dec 5 20:43:27 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C623DC68EE9; Mon, 5 Dec 2016 20:43:27 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6A707D50; Mon, 5 Dec 2016 20:43:27 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id uB5KhQeN081422; Mon, 5 Dec 2016 20:43:26 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id uB5KhQU4081415; Mon, 5 Dec 2016 20:43:26 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201612052043.uB5KhQU4081415@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 5 Dec 2016 20:43:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r309560 - in stable: 10/sys/conf 10/sys/dev/cxgbe 10/sys/dev/cxgbe/common 10/sys/dev/cxgbe/firmware 10/sys/dev/cxgbe/tom 10/sys/modules/cxgbe 10/sys/modules/cxgbe/if_cc 10/sys/modules/c... X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2016 20:43:27 -0000 Author: jhb Date: Mon Dec 5 20:43:25 2016 New Revision: 309560 URL: https://svnweb.freebsd.org/changeset/base/309560 Log: MFC 305695,305696,305699,305702,305703,305713,305715,305827,305852,305906, 305908,306062,306063,306137,306138,306206,306216,306273,306295,306301, 306465,309302: Add support for adapters using the Terminator T6 ASIC. 305695: cxgbe(4): Set up fl_starve_threshold2 accurately for T6. 305696: cxgbe(4): Use correct macro for header length with T6 ASICs. This affects the transmit of the VF driver only. 305699: cxgbe(4): Update the pad_boundary calculation for T6, which has a different range of boundaries. 305702: cxgbe(4): Use smaller min/max bursts for fl descriptors with a T6. 305703: cxgbe(4): Deal with the slightly different SGE_STAT_CFG in T6. 305713: cxgbe(4): Add support for additional port types and link speeds. 305715: cxgbe(4): Catch up with the rename of tlscaps -> cryptocaps. TLS is one of the capabilities of the crypto engine in T6. 305827: cxgbe(4): Use the interface's viid to calculate the PF/VF/VFValid fields to use in tx work requests. 305852: cxgbe(4): Attach to cards with the Terminator 6 ASIC. T6 cards will come up as 't6nex' nexus devices with 'cc' ports hanging off them. The T6 firmware and configuration files will be added as soon as they are released. For now the driver will try to work with whatever firmware and configuration is on the card's flash. 305906: cxgbe/t4_tom: The SMAC entry for a VI is at a different location in the T6. 305908: cxgbe/t4_tom: Update the active/passive open code to support T6. Data path works as-is. 306062: cxgbe(4): Show wcwr_stats for T6 cards. 306063: cxgbe(4): Setup congestion response for T6 rx queues. 306137: cxgbetool: Add T6 support to the SGE context decoder. 306138: Fix typo. 306206: cxgbe(4): Catch up with the different layout of WHOAMI in T6. Note that the code moved below t4_prep_adapter() as part of this change because now it needs a working chip_id(). 306216: cxgbe(4): Fix the output of the "tids" sysctl on T6. 306273: cxgbe(4): Fix netmap with T6, which doesn't encapsulate SGE_EGR_UPDATE message inside a FW_MSG. The base NIC already deals with updates in either form. 306295: cxgbe(4): Support SIOGIFXMEDIA so that ifconfig displays correct media for 25Gbps and 100Gbps ports. This should have been part of r305713, which is when the driver first started reporting extended media types. 306301: cxgbe(4): Use the port's top speed to figure out whether it is "high speed" or not (for the purpose of calculating the number of queues etc.) This does the right thing for 25Gbps and 100Gbps ports. 306465: cxgbe(4): Claim the T6 -DBG card. 309302: cxgbe(4): Include firmware for T6 cards in the driver. Update all firmwares to 1.16.12.0. Sponsored by: Chelsio Communications Added: stable/11/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu stable/11/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu stable/11/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu stable/11/sys/dev/cxgbe/firmware/t6fw_cfg.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg.txt stable/11/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt stable/11/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt stable/11/sys/dev/cxgbe/if_cc.c - copied unchanged from r305852, head/sys/dev/cxgbe/if_cc.c stable/11/sys/dev/cxgbe/if_ccv.c - copied unchanged from r305852, head/sys/dev/cxgbe/if_ccv.c stable/11/sys/modules/cxgbe/if_cc/ - copied from r305852, head/sys/modules/cxgbe/if_cc/ stable/11/sys/modules/cxgbe/if_ccv/ - copied from r305852, head/sys/modules/cxgbe/if_ccv/ stable/11/sys/modules/cxgbe/t6_firmware/ - copied from r309302, head/sys/modules/cxgbe/t6_firmware/ Deleted: stable/11/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu stable/11/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu Modified: stable/11/sys/conf/files stable/11/sys/dev/cxgbe/adapter.h stable/11/sys/dev/cxgbe/common/common.h stable/11/sys/dev/cxgbe/common/t4_hw.c stable/11/sys/dev/cxgbe/common/t4vf_hw.c stable/11/sys/dev/cxgbe/firmware/t4fw_interface.h stable/11/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt stable/11/sys/dev/cxgbe/t4_iov.c stable/11/sys/dev/cxgbe/t4_main.c stable/11/sys/dev/cxgbe/t4_netmap.c stable/11/sys/dev/cxgbe/t4_sge.c stable/11/sys/dev/cxgbe/t4_tracer.c stable/11/sys/dev/cxgbe/t4_vf.c stable/11/sys/dev/cxgbe/tom/t4_connect.c stable/11/sys/dev/cxgbe/tom/t4_listen.c stable/11/sys/dev/cxgbe/tom/t4_tom.c stable/11/sys/modules/cxgbe/Makefile stable/11/sys/modules/cxgbe/t4_firmware/Makefile stable/11/sys/modules/cxgbe/t5_firmware/Makefile stable/11/tools/tools/cxgbetool/cxgbetool.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Added: stable/10/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t6fw_cfg.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg.txt stable/10/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg_fpga.txt stable/10/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt - copied unchanged from r309302, head/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/if_cc.c - copied unchanged from r305852, head/sys/dev/cxgbe/if_cc.c stable/10/sys/dev/cxgbe/if_ccv.c - copied unchanged from r305852, head/sys/dev/cxgbe/if_ccv.c stable/10/sys/modules/cxgbe/if_cc/ - copied from r305852, head/sys/modules/cxgbe/if_cc/ stable/10/sys/modules/cxgbe/if_ccv/ - copied from r305852, head/sys/modules/cxgbe/if_ccv/ stable/10/sys/modules/cxgbe/t6_firmware/ - copied from r309302, head/sys/modules/cxgbe/t6_firmware/ Deleted: stable/10/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu Modified: stable/10/sys/conf/files stable/10/sys/dev/cxgbe/adapter.h stable/10/sys/dev/cxgbe/common/common.h stable/10/sys/dev/cxgbe/common/t4_hw.c stable/10/sys/dev/cxgbe/common/t4vf_hw.c stable/10/sys/dev/cxgbe/firmware/t4fw_interface.h stable/10/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/t4_main.c stable/10/sys/dev/cxgbe/t4_netmap.c stable/10/sys/dev/cxgbe/t4_sge.c stable/10/sys/dev/cxgbe/t4_tracer.c stable/10/sys/dev/cxgbe/t4_vf.c stable/10/sys/dev/cxgbe/tom/t4_connect.c stable/10/sys/dev/cxgbe/tom/t4_listen.c stable/10/sys/dev/cxgbe/tom/t4_tom.c stable/10/sys/modules/cxgbe/Makefile stable/10/sys/modules/cxgbe/t4_firmware/Makefile stable/10/sys/modules/cxgbe/t5_firmware/Makefile stable/10/tools/tools/cxgbetool/cxgbetool.c Directory Properties: stable/10/ (props changed) Modified: stable/11/sys/conf/files ============================================================================== --- stable/11/sys/conf/files Mon Dec 5 19:37:15 2016 (r309559) +++ stable/11/sys/conf/files Mon Dec 5 20:43:25 2016 (r309560) @@ -1307,7 +1307,7 @@ t4fw.fwo optional cxgbe \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" @@ -1331,10 +1331,34 @@ t5fw.fwo optional cxgbe \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.16.12.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" +t6fw_cfg.c optional cxgbe \ + compile-with "${AWK} -f $S/tools/fw_stub.awk t6fw_cfg.fw:t6fw_cfg t6fw.fw:t6fw -mt6fw_cfg -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "t6fw_cfg.c" +t6fw_cfg.fwo optional cxgbe \ + dependency "t6fw_cfg.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "t6fw_cfg.fwo" +t6fw_cfg.fw optional cxgbe \ + dependency "$S/dev/cxgbe/firmware/t6fw_cfg.txt" \ + compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ + no-obj no-implicit-rule \ + clean "t6fw_cfg.fw" +t6fw.fwo optional cxgbe \ + dependency "t6fw.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "t6fw.fwo" +t6fw.fw optional cxgbe \ + dependency "$S/dev/cxgbe/firmware/t6fw-1.16.12.0.bin.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "t6fw.fw" dev/cy/cy.c optional cy dev/cy/cy_isa.c optional cy isa dev/cy/cy_pci.c optional cy pci Modified: stable/11/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/11/sys/dev/cxgbe/adapter.h Mon Dec 5 19:37:15 2016 (r309559) +++ stable/11/sys/dev/cxgbe/adapter.h Mon Dec 5 20:43:25 2016 (r309560) @@ -231,6 +231,7 @@ struct vi_info { int if_flags; uint16_t *rss, *nm_rss; + int smt_idx; /* for convenience */ uint16_t viid; int16_t xact_addr_filt;/* index of exact MAC address filter */ uint16_t rss_size; /* size of VI's RSS table slice */ @@ -752,10 +753,20 @@ struct sge { struct hw_buf_info hw_buf_info[SGE_FLBUF_SIZES]; }; +struct devnames { + const char *nexus_name; + const char *ifnet_name; + const char *vi_ifnet_name; + const char *pf03_drv_name; + const char *vf_nexus_name; + const char *vf_ifnet_name; +}; + struct adapter { SLIST_ENTRY(adapter) link; device_t dev; struct cdev *cdev; + const struct devnames *names; /* PCIe register resources */ int regs_rid; @@ -835,7 +846,7 @@ struct adapter { uint16_t niccaps; uint16_t toecaps; uint16_t rdmacaps; - uint16_t tlscaps; + uint16_t cryptocaps; uint16_t iscsicaps; uint16_t fcoecaps; @@ -1040,12 +1051,26 @@ is_10G_port(const struct port_info *pi) } static inline bool +is_25G_port(const struct port_info *pi) +{ + + return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G) != 0); +} + +static inline bool is_40G_port(const struct port_info *pi) { return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G) != 0); } +static inline bool +is_100G_port(const struct port_info *pi) +{ + + return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_100G) != 0); +} + static inline int port_top_speed(const struct port_info *pi) { @@ -1054,6 +1079,8 @@ port_top_speed(const struct port_info *p return (100); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G) return (40); + if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G) + return (25); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_10G) return (10); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_1G) @@ -1101,6 +1128,7 @@ int t4_os_pci_restore_state(struct adapt void t4_os_portmod_changed(const struct adapter *, int); void t4_os_link_changed(struct adapter *, int, int, int); void t4_iterate(void (*)(struct adapter *, void *), void *); +void t4_init_devnames(struct adapter *); void t4_add_adapter(struct adapter *); int t4_detach_common(device_t); int t4_filter_rpl(struct sge_iq *, const struct rss_header *, struct mbuf *); Modified: stable/11/sys/dev/cxgbe/common/common.h ============================================================================== --- stable/11/sys/dev/cxgbe/common/common.h Mon Dec 5 19:37:15 2016 (r309559) +++ stable/11/sys/dev/cxgbe/common/common.h Mon Dec 5 20:43:25 2016 (r309560) @@ -578,7 +578,8 @@ int t4_config_rss_range(struct adapter * int t4_config_glbl_rss(struct adapter *adapter, int mbox, unsigned int mode, unsigned int flags); int t4_config_vi_rss(struct adapter *adapter, int mbox, unsigned int viid, - unsigned int flags, unsigned int defq); + unsigned int flags, unsigned int defq, unsigned int skeyidx, + unsigned int skey); int t4_read_rss(struct adapter *adapter, u16 *entries); void t4_fw_tp_pio_rw(struct adapter *adap, u32 *vals, unsigned int nregs, unsigned int start_index, unsigned int rw); Modified: stable/11/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- stable/11/sys/dev/cxgbe/common/t4_hw.c Mon Dec 5 19:37:15 2016 (r309559) +++ stable/11/sys/dev/cxgbe/common/t4_hw.c Mon Dec 5 20:43:25 2016 (r309560) @@ -3669,8 +3669,9 @@ void t4_ulprx_read_la(struct adapter *ad } #define ADVERT_MASK (FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G |\ - FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_40G | \ - FW_PORT_CAP_SPEED_100G | FW_PORT_CAP_ANEG) + FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_25G | \ + FW_PORT_CAP_SPEED_40G | FW_PORT_CAP_SPEED_100G | \ + FW_PORT_CAP_ANEG) /** * t4_link_l1cfg - apply link configuration to MAC/PHY @@ -4738,7 +4739,7 @@ int t4_config_glbl_rss(struct adapter *a c.u.manual.mode_pkd = cpu_to_be32(V_FW_RSS_GLB_CONFIG_CMD_MODE(mode)); } else if (mode == FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL) { - c.u.basicvirtual.mode_pkd = + c.u.basicvirtual.mode_keymode = cpu_to_be32(V_FW_RSS_GLB_CONFIG_CMD_MODE(mode)); c.u.basicvirtual.synmapen_to_hashtoeplitz = cpu_to_be32(flags); } else @@ -4753,11 +4754,14 @@ int t4_config_glbl_rss(struct adapter *a * @viid: the VI id * @flags: RSS flags * @defq: id of the default RSS queue for the VI. + * @skeyidx: RSS secret key table index for non-global mode + * @skey: RSS vf_scramble key for VI. * * Configures VI-specific RSS properties. */ int t4_config_vi_rss(struct adapter *adapter, int mbox, unsigned int viid, - unsigned int flags, unsigned int defq) + unsigned int flags, unsigned int defq, unsigned int skeyidx, + unsigned int skey) { struct fw_rss_vi_config_cmd c; @@ -4768,6 +4772,10 @@ int t4_config_vi_rss(struct adapter *ada c.retval_len16 = cpu_to_be32(FW_LEN16(c)); c.u.basicvirtual.defaultq_to_udpen = cpu_to_be32(flags | V_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(defq)); + c.u.basicvirtual.secretkeyidx_pkd = cpu_to_be32( + V_FW_RSS_VI_CONFIG_CMD_SECRETKEYIDX(skeyidx)); + c.u.basicvirtual.secretkeyxor = cpu_to_be32(skey); + return t4_wr_mbox(adapter, mbox, &c, sizeof(c), NULL); } @@ -4886,11 +4894,11 @@ void t4_write_rss_key(struct adapter *ad if (idx >= 0 && idx < rss_key_addr_cnt) { if (rss_key_addr_cnt > 16) t4_write_reg(adap, A_TP_RSS_CONFIG_VRT, - V_KEYWRADDRX(idx >> 4) | + vrt | V_KEYWRADDRX(idx >> 4) | V_T6_VFWRADDR(idx) | F_KEYWREN); else t4_write_reg(adap, A_TP_RSS_CONFIG_VRT, - V_KEYWRADDR(idx) | F_KEYWREN); + vrt| V_KEYWRADDR(idx) | F_KEYWREN); } } @@ -5775,6 +5783,13 @@ const char *t4_get_port_type_description "QSA", "QSFP", "BP40_BA", + "KR4_100G", + "CR4_QSFP", + "CR_QSFP", + "CR_SFP28", + "SFP28", + "KR_SFP28", + "CR2_QSFP", }; if (port_type < ARRAY_SIZE(port_type_description)) @@ -7462,8 +7477,12 @@ int t4_handle_fw_rpl(struct adapter *ada speed = 1000; else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_10G)) speed = 10000; + else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_25G)) + speed = 25000; else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_40G)) speed = 40000; + else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_100G)) + speed = 100000; for_each_port(adap, i) { pi = adap2pinfo(adap, i); @@ -7866,8 +7885,10 @@ int t4_init_sge_params(struct adapter *a sp->fl_starve_threshold = G_EGRTHRESHOLD(r) * 2 + 1; if (is_t4(adapter)) sp->fl_starve_threshold2 = sp->fl_starve_threshold; - else + else if (is_t5(adapter)) sp->fl_starve_threshold2 = G_EGRTHRESHOLDPACKING(r) * 2 + 1; + else + sp->fl_starve_threshold2 = G_T6_EGRTHRESHOLDPACKING(r) * 2 + 1; /* egress queues: log2 of # of doorbells per BAR2 page */ r = t4_read_reg(adapter, A_SGE_EGRESS_QUEUES_PER_PAGE_PF); @@ -7890,7 +7911,13 @@ int t4_init_sge_params(struct adapter *a sp->sge_control = r; sp->spg_len = r & F_EGRSTATUSPAGESIZE ? 128 : 64; sp->fl_pktshift = G_PKTSHIFT(r); - sp->pad_boundary = 1 << (G_INGPADBOUNDARY(r) + 5); + if (chip_id(adapter) <= CHELSIO_T5) { + sp->pad_boundary = 1 << (G_INGPADBOUNDARY(r) + + X_INGPADBOUNDARY_SHIFT); + } else { + sp->pad_boundary = 1 << (G_INGPADBOUNDARY(r) + + X_T6_INGPADBOUNDARY_SHIFT); + } if (is_t4(adapter)) sp->pack_boundary = sp->pad_boundary; else { @@ -8082,6 +8109,10 @@ int t4_port_init(struct adapter *adap, i return ret; p->vi[0].viid = ret; + if (chip_id(adap) <= CHELSIO_T5) + p->vi[0].smt_idx = (ret & 0x7f) << 1; + else + p->vi[0].smt_idx = (ret & 0x7f); p->tx_chan = j; p->rx_chan_map = t4_get_mps_bg_map(adap, j); p->lport = j; Modified: stable/11/sys/dev/cxgbe/common/t4vf_hw.c ============================================================================== --- stable/11/sys/dev/cxgbe/common/t4vf_hw.c Mon Dec 5 19:37:15 2016 (r309559) +++ stable/11/sys/dev/cxgbe/common/t4vf_hw.c Mon Dec 5 20:43:25 2016 (r309560) @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include "common.h" #include "t4_regs.h" +#include "t4_regs_values.h" #undef msleep #define msleep(x) do { \ @@ -130,9 +131,10 @@ int t4vf_get_sge_params(struct adapter * sp->fl_starve_threshold = G_EGRTHRESHOLD(vals[5]) * 2 + 1; if (is_t4(adapter)) sp->fl_starve_threshold2 = sp->fl_starve_threshold; + else if (is_t5(adapter)) + sp->fl_starve_threshold2 = G_EGRTHRESHOLDPACKING(vals[5]) * 2 + 1; else - sp->fl_starve_threshold2 = G_EGRTHRESHOLDPACKING(vals[5]) * 2 + - 1; + sp->fl_starve_threshold2 = G_T6_EGRTHRESHOLDPACKING(vals[5]) * 2 + 1; /* * We need the Queues/Page and Host Page Size for our VF. @@ -168,7 +170,13 @@ int t4vf_get_sge_params(struct adapter * */ sp->spg_len = sp->sge_control & F_EGRSTATUSPAGESIZE ? 128 : 64; sp->fl_pktshift = G_PKTSHIFT(sp->sge_control); - sp->pad_boundary = 1 << (G_INGPADBOUNDARY(sp->sge_control) + 5); + if (chip_id(adapter) <= CHELSIO_T5) { + sp->pad_boundary = 1 << (G_INGPADBOUNDARY(sp->sge_control) + + X_INGPADBOUNDARY_SHIFT); + } else { + sp->pad_boundary = 1 << (G_INGPADBOUNDARY(sp->sge_control) + + X_T6_INGPADBOUNDARY_SHIFT); + } if (is_t4(adapter)) sp->pack_boundary = sp->pad_boundary; else { Copied: stable/11/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu (from r309302, head/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu Mon Dec 5 20:43:25 2016 (r309560, copy of r309302, head/sys/dev/cxgbe/firmware/t4fw-1.16.12.0.bin.uu) @@ -0,0 +1,9594 @@ +/*- + * Copyright (c) 2016 Chelsio Communications, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +begin-base64 644 t4fw +AAAEKQEQDAAAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAABAwEGwQjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IFR1ZSBOb3YgIDggMDk6 +MjI6MzEgUFNUIDIwMTYgb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j +dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDR4eCAwMS4xMC4wYy4wMAAAAAAAAAAAAAAAAIf/EtRg +AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//2U4QGUcCAAAADhAZwE4QB5AAAC +AEDhAHmAAAYAQAACAAoABgAK4QB5BAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA +AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//kuAAAAAA +H/+S5AAAAAAf/5LoAAAAAB//kuwf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/ +zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC +EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT +Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/ +uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ +JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA +MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtEv+VwDAnNwAnNxAn +NyAnNzAjPQFyM+0S/5AV/5AW/5HAMNcgBWYBYAAZAAAAAAAAAAQ2BQACANMP0w8FMwxuOxQHRxQH +BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF +IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9 +AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m +lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/AAA +H/wAAOMACfgf/AAAH/wAAOMACfgf/AAAH/wAAOMACfgf/4AAH/+KUOMACfgf/4pQH/+KUOMAFEgf +/4pQH/+KUOMAFEgf/4pQH/+L8OMAFEgf/4vwH/+S3OMAFegf/5LgH/+0AOMAHNgf/7QAH/+0AOMA +Pfgf/8AAH//+geMAPfggAAAAIAABauMAfHwgAAF4IAABfOMAfeggAAF8IAABheMAfewgAAGYIAAB +nOMAffggAAGcIAABpeMAffwgAAG4IAABvOMAfgggAAG8IAABxeMAfgwgAAHYIAAB2OMAfhggAAHc +IAAB4uMAfhggAAH4IAAB+OMAfiAgAAH8IAAB/OMAfiAgAAIYIAACGOMAfiAgAAIcIAACHOMAfiAg +AAI4IAACOOMAfiAgAAI8IAACPOMAfiAgAAJYIAACWOMAfiAgAAJcIAACYuMAfiAgAAJ4IAACeOMA +figgAAJ8IAACguMAfiggAAKYIAHy6eMAfjAgAwAAIAMVhOMCboQgAxWEIAMVhOMChAggAxWIIAbc +NOMChAwgBtxAIAbfsOMGSsQgCAAAIAgOYOMGTjQgCA5gIAkofuMGXJQgCSiAIAkpTOMHdrQgCwAA +IAsAAOMHd4AgCwAAIAsAAOMHd4AgCwAAIAufuOMHd4AAAAAAAAAAAAAAAAAgABOGIAATeCAAF2Ig +ABN4IAAW3SAAE3ggABQqIAAWdSAAFfogABN4IAAVqSAAFWIgABT1IAATZSAAFJ8gABN4IAATeCAA +E3ggABRKAAAAAP///////w/8///w////APwgAKuTIACs+iAArSogAKzwIACssSAArKcgAKxxIACs +ZyAArFYgAKwCIACtKCAAq/ggAKvLIACtKiAAq8EAAAAAARAYAQAEAAAAAAAAAAAAAAAAAAoAAAAK +AAAAFAAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEA +AQACAAMABAAFAAYABwAIAAkACgAOABEAFQAZAB4AIwAtADwAUABkAMgBLAGQAfQAAAAAAAAAAAAA +AAAAAAAAAAAAAQABAAIAAgADAAMAAwADAAQABAAEAAQABAAFAAUABQAFAAUABQAGAAYABwAHAAAA +AgAAAAYAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKA +AAADgAAABQEAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAA +AcAAAAKAAAADgAD/AAECAgAAAAAAAAAAAAAAECBAAAAAAAAAAAAAAAAAAAQAAgABAACAAEAAIAAQ +AAggQIAAAAAAAAAAAAAAAAAAIAipByAIqQcgCKjDIAiokCAIqGIgCKg2IAioNiAIqdAgCKnQIAio +NiAIqdAgCKnQIAioNiAIqDYgCKfrIAip0CAIqdAgCKnQIAip0CAIqdAgCKnQIAip0CAIqdAgCKnQ +IAip0CAIqdAgCKnQIAip0CAIqdAgCKnQIAip0CAIqBkgAwrQAAAAASADCtgAAAACIAMO+AAAAP8g +AwgwAAAA/yADCrwAAAACIAMKwAAAAAMgAwrIAAAABwAAAAAAAAAAIAMKoAAAAAEgAwqkAAAAAiAD +CqwAAAAEIAMO+AAAAP8gAwgwAAAA/wAAAAAAAAAAIAMIMAAAAAAgAw74AAAAACADCWwAAAABIAMJ +dAAAAAQgAwl8AAAACCADCYgAAAAgIAMJmAAAAEAgAwmgAAAAgCADCagAAAEAIAMJsAAAAgAgAwnE +AAAEACADCdgAAAgAIAMJ8AAAEAAgAwoEAAAgACADChQAAEAAIAMKIAAAgAAgAwo0AAEAACADCkQA +AgAAIAMKVAAQAAAgAwpsACAAACADCoQAQAAAIAMKjACAAAAgAwlYAAAAECADCWAAAAARIAMJQAAA +AAAgAwlEAAAAASADCUgAAAACIAMJUAAAAAMAAAAAAAD//wAAAAAAAP//IAMIwAAAAQAgAwjMAAAA +gCADCNwAAABAIAMI7AAAACAgAwj8AAAAECADCQwAAAAIIAMJGAAAAAQgAwkkAAAAAiADCTAAAAAB +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 +4QIOAP//v//hAA4A4QGOAP//vv8f/52EH/+qgCABw7AgAc/c4AUAAAP/AAAf/6m0IAMM6B/8v/88 +AAAAAAX//4MAAAAf/6lMIAHlcCALY+Af/67EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAAAAAAAAA//// +/////////////////x///Igf//yIH//8UB///FAf//xQH//8UB//9dAf//j4H//3VB//91Qf//dU +IAaw8AAAAAAAAAAAAAAAAAAAAAAgBrQ4IAa0OAAAAAAAAAAAAAAAAAAAAAAgBrDwIAaw8B//+fAf +//nwH//58B//+fAf//nwH//58AAAAAAgAcTIAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAAAAAAAAAAA +AAAEAAAAAAAAAIGAAAAAAAAQBQAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgFAAAAgAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***