38#define msleep t3_os_sleep
56 int attempts,
int delay,
u32 *valp)
61 if (!!(val & mask) == polarity) {
124 unsigned int data_reg,
u32 *vals,
unsigned int nregs,
125 unsigned int start_idx)
147 static int shift[] = { 0, 0, 16, 24 };
148 static int step[] = { 0, 32, 16, 8 };
150 unsigned int size64 =
mc7->
size / 8;
153 if (start >= size64 || start + n > size64)
161 for (i = (1 <<
mc7->
width) - 1; i >= 0; --i) {
169 while ((val &
F_BUSY) && attempts--)
179 val64 |= (
u64)val << 32;
198#define I2C_ATTEMPTS 100
259#define MDIO_ATTEMPTS 20
265 int reg_addr,
unsigned int *valp)
285 int reg_addr,
unsigned int val)
312 int reg_addr,
unsigned int *valp)
335 int reg_addr,
unsigned int val)
412 }
while (ctl && --wait);
428 unsigned int val = 0;
470 unsigned int val = 0;
611#define VPD_ENTRY(name, len) \
612 u8 name##_kword[2]; u8 name##_len; u8 name##_data[len]
643#define EEPROM_MAX_POLL 40
644#define EEPROM_STAT_ADDR 0x4000
645#define VPD_BASE 0xc00
674 CH_ERR(
adapter,
"reading EEPROM address 0x%x failed\n", addr);
710 CH_ERR(
adapter,
"write to EEPROM address 0x%x failed\n", addr);
733 return isdigit(c) ? c -
'0' : toupper(c) -
'A' + 10;
746 u32 read_offset, tmp, shift, len = 0;
750 read_offset = offset & 0xfffffffc;
751 shift = offset & 0x03;
766 len = (buf[shift + 1] & 0xff) +
767 ((buf[shift+2] << 8) & 0xff00) + 3;
769 len = (tag & 0x07) + 1;
783 u32 read_offset, shift, ret, tmp;
786 read_offset = offset & 0xfffffffc;
787 shift = offset & 0x03;
794 if (buf[shift] == 0x78)
844 for (i = 0; i < vpd->
len; i += 4) {
876 for (i = 0; i <
sizeof(vpd); i += 4) {
878 (
u32 *)((
u8 *)&vpd + i));
904 for (i = 0; i < 6; i++)
906 hex2int(vpd.na_data[2 * i + 1]);
963 if (!byte_cnt || byte_cnt > 4)
988 if (!byte_cnt || byte_cnt > 4)
1017 if (--attempts == 0)
1038 u32 *data,
int byte_oriented)
1042 if (addr + nwords *
sizeof(
u32) >
SF_SIZE || (addr & 3))
1051 for ( ; nwords; nwords--, data++) {
1056 *data = htonl(*data);
1076 unsigned int n,
const u8 *data,
1081 unsigned int c, left, val, offset = addr & 0xff;
1083 if (addr + n >
SF_SIZE || offset + n > 256)
1092 for (left = n; left; left -= c) {
1094 val = *(
const u32*)data;
1112 if (memcmp(data - n, (
u8 *)buf + offset, n))
1149 unsigned int major, minor;
1168 "driver compiled for version %d.%d\n", major, minor,
1188 const u32 *p = (
const u32 *)tp_sram;
1191 for (csum = 0, i = 0; i < size /
sizeof(csum); i++)
1192 csum += ntohl(p[i]);
1193 if (csum != 0xffffffff) {
1194 CH_ERR(
adapter,
"corrupted protocol SRAM image, checksum %u\n",
1219 if (!ret && *vers != 0xffffffff)
1236 unsigned int type, major, minor;
1252 "driver compiled for version %u.%u\n", major, minor,
1256 "driver compiled for version %u.%u\n", major, minor,
1273 while (start <= end) {
1299 u32 version, csum, fw_version_addr;
1301 const u32 *p = (
const u32 *)fw_data;
1309 version = ntohl(*(
const u32 *)(fw_data + size - 8));
1319 for (csum = 0, i = 0; i < size /
sizeof(csum); i++)
1320 csum += ntohl(p[i]);
1321 if (csum != 0xffffffff) {
1333 unsigned int chunk_size = min(size, 256U);
1340 fw_data += chunk_size;
1347 CH_ERR(
adapter,
"firmware download failed, error %d\n", ret);
1383 CH_ERR(
adapter,
"boot image header length != image length\n");
1392 unsigned int chunk_size = min(size, 256U);
1399 boot_data += chunk_size;
1405 CH_ERR(
adapter,
"boot image download failed, error %d\n", ret);
1409#define CIM_CTL_BASE 0x2000
1428 for ( ; !ret && n--; addr += 4) {
1439 u32 *rx_hash_high,
u32 *rx_hash_low)
1463 u32 rx_hash_high,
u32 rx_hash_low)
1479 uint32_t rx_cfg, rx_hash_high, rx_hash_low;
1524 int link_ok, speed, duplex, fc,
link_fault, link_state;
1540 else if (++
phy->
rst == 3) {
1692 lc->
fc = (
unsigned char)
fc;
1704 lc->
fc = (
unsigned char)
fc;
1750 unsigned long *stats)
1755 for ( ; acts->
mask; ++acts) {
1756 if (!(status & acts->
mask))
continue;
1760 acts->
msg, status & acts->
mask);
1761 status &= ~acts->mask;
1762 }
else if (acts->
msg)
1764 acts->
msg, status & acts->
mask);
1773#define SGE_INTR_MASK (F_RSPQDISABLED | \
1774 F_UC_REQ_FRAMINGERROR | F_R_REQ_FRAMINGERROR | \
1775 F_CPPARITYERROR | F_OCPARITYERROR | F_RCPARITYERROR | \
1776 F_IRPARITYERROR | V_ITPARITYERROR(M_ITPARITYERROR) | \
1777 V_FLPARITYERROR(M_FLPARITYERROR) | F_LODRBPARITYERROR | \
1778 F_HIDRBPARITYERROR | F_LORCQPARITYERROR | \
1780#define MC5_INTR_MASK (F_PARITYERR | F_ACTRGNFULL | F_UNKNOWNCMD | \
1781 F_REQQPARERR | F_DISPQPARERR | F_DELACTEMPTY | \
1783#define MC7_INTR_MASK (F_AE | F_UE | F_CE | V_PE(M_PE))
1784#define XGM_INTR_MASK (V_TXFIFO_PRTY_ERR(M_TXFIFO_PRTY_ERR) | \
1785 V_RXFIFO_PRTY_ERR(M_RXFIFO_PRTY_ERR) | \
1787#define PCIX_INTR_MASK (F_MSTDETPARERR | F_SIGTARABT | F_RCVTARABT | \
1788 F_RCVMSTABT | F_SIGSYSERR | F_DETPARERR | \
1789 F_SPLCMPDIS | F_UNXSPLCMP | F_RCVSPLCMPERR | \
1790 F_DETCORECCERR | F_DETUNCECCERR | F_PIOPARERR | \
1791 V_WFPARERR(M_WFPARERR) | V_RFPARERR(M_RFPARERR) | \
1792 V_CFPARERR(M_CFPARERR) )
1793#define PCIE_INTR_MASK (F_UNXSPLCPLERRR | F_UNXSPLCPLERRC | F_PCIE_PIOPARERR |\
1794 F_PCIE_WFPARERR | F_PCIE_RFPARERR | F_PCIE_CFPARERR | \
1796 F_RETRYBUFPARERR | F_RETRYLUTPARERR | F_RXPARERR | \
1797 F_TXPARERR | V_BISTERR(M_BISTERR))
1798#define ULPRX_INTR_MASK (F_PARERRDATA | F_PARERRPCMD | F_ARBPF1PERR | \
1799 F_ARBPF0PERR | F_ARBFPERR | F_PCMDMUXPERR | \
1800 F_DATASELFRAMEERR1 | F_DATASELFRAMEERR0)
1801#define ULPTX_INTR_MASK 0xfc
1802#define CPLSW_INTR_MASK (F_CIM_OP_MAP_PERR | F_TP_FRAMING_ERROR | \
1803 F_SGE_FRAMING_ERROR | F_CIM_FRAMING_ERROR | \
1804 F_ZERO_SWITCH_ERROR)
1805#define CIM_INTR_MASK (F_BLKWRPLINT | F_BLKRDPLINT | F_BLKWRCTLINT | \
1806 F_BLKRDCTLINT | F_BLKWRFLASHINT | F_BLKRDFLASHINT | \
1807 F_SGLWRFLASHINT | F_WRBLKFLASHINT | F_BLKWRBOOTINT | \
1808 F_FLASHRANGEINT | F_SDRAMRANGEINT | F_RSVDSPACEINT | \
1809 F_DRAMPARERR | F_ICACHEPARERR | F_DCACHEPARERR | \
1810 F_OBQSGEPARERR | F_OBQULPHIPARERR | F_OBQULPLOPARERR | \
1811 F_IBQSGELOPARERR | F_IBQSGEHIPARERR | F_IBQULPPARERR | \
1812 F_IBQTPPARERR | F_ITAGPARERR | F_DTAGPARERR)
1813#define PMTX_INTR_MASK (F_ZERO_C_CMD_ERROR | ICSPI_FRM_ERR | OESPI_FRM_ERR | \
1814 V_ICSPI_PAR_ERROR(M_ICSPI_PAR_ERROR) | \
1815 V_OESPI_PAR_ERROR(M_OESPI_PAR_ERROR))
1816#define PMRX_INTR_MASK (F_ZERO_E_CMD_ERROR | IESPI_FRM_ERR | OCSPI_FRM_ERR | \
1817 V_IESPI_PAR_ERROR(M_IESPI_PAR_ERROR) | \
1818 V_OCSPI_PAR_ERROR(M_OCSPI_PAR_ERROR))
1819#define MPS_INTR_MASK (V_TX0TPPARERRENB(M_TX0TPPARERRENB) | \
1820 V_TX1TPPARERRENB(M_TX1TPPARERRENB) | \
1821 V_RXTPPARERRENB(M_RXTPPARERRENB) | \
1822 V_MCAPARERRENB(M_MCAPARERRENB))
1823#define XGM_EXTRA_INTR_MASK (F_LINKFAULTCHANGE)
1824#define PL_INTR_MASK (F_T3DBG | F_XGMAC0_0 | F_XGMAC0_1 | F_MC5A | F_PM1_TX | \
1825 F_PM1_RX | F_ULP2_TX | F_ULP2_RX | F_TP1 | F_CIM | \
1826 F_MC7_CM | F_MC7_PMTX | F_MC7_PMRX | F_SGE3 | F_PCIM0 | \
1827 F_MPS0 | F_CPL_SWITCH)
1833 static struct intr_info pcix1_intr_info[] = {
1835 {
F_SIGTARABT,
"PCI signaled target abort", -1, 1 },
1836 {
F_RCVTARABT,
"PCI received target abort", -1, 1 },
1837 {
F_RCVMSTABT,
"PCI received master abort", -1, 1 },
1838 {
F_SIGSYSERR,
"PCI signaled system error", -1, 1 },
1839 {
F_DETPARERR,
"PCI detected parity error", -1, 1 },
1840 {
F_SPLCMPDIS,
"PCI split completion discarded", -1, 1 },
1841 {
F_UNXSPLCMP,
"PCI unexpected split completion error", -1, 1 },
1847 {
F_PIOPARERR,
"PCI PIO FIFO parity error", -1, 1 },
1869 static struct intr_info pcie_intr_info[] = {
1870 {
F_PEXERR,
"PCI PEX error", -1, 1 },
1872 "PCI unexpected split completion DMA read error", -1, 1 },
1874 "PCI unexpected split completion DMA command error", -1, 1 },
1880 "PCI MSI-X table/PBA parity error", -1, 1 },
1883 {
F_RXPARERR,
"PCI Rx parity error", -1, 1 },
1884 {
F_TXPARERR,
"PCI Tx parity error", -1, 1 },
1903 static struct intr_info tp_intr_info[] = {
1904 { 0xffffff,
"TP parity error", -1, 1 },
1905 { 0x1000000,
"TP out of Rx pages", -1, 1 },
1906 { 0x2000000,
"TP out of Tx pages", -1, 1 },
1909 static struct intr_info tp_intr_info_t3c[] = {
1910 { 0x1fffffff,
"TP parity error", -1, 1 },
1918 tp_intr_info : tp_intr_info_t3c, NULL))
1927 static struct intr_info cim_intr_info[] = {
1938 {
F_BLKRDPLINT,
"CIM block read from PL space", -1, 1 },
1939 {
F_BLKWRPLINT,
"CIM block write to PL space", -1, 1 },
1956 cim_intr_info, NULL))
1965 static struct intr_info ulprx_intr_info[] = {
1967 {
F_PARERRPCMD,
"ULP RX command parity error", -1, 1 },
1970 {
F_ARBFPERR,
"ULP RX ArbF parity error", -1, 1 },
1978 ulprx_intr_info, NULL))
1987 static struct intr_info ulptx_intr_info[] = {
1992 { 0xfc,
"ULP TX parity error", -1, 1 },
2001#define ICSPI_FRM_ERR (F_ICSPI0_FIFO2X_RX_FRAMING_ERROR | \
2002 F_ICSPI1_FIFO2X_RX_FRAMING_ERROR | F_ICSPI0_RX_FRAMING_ERROR | \
2003 F_ICSPI1_RX_FRAMING_ERROR | F_ICSPI0_TX_FRAMING_ERROR | \
2004 F_ICSPI1_TX_FRAMING_ERROR)
2005#define OESPI_FRM_ERR (F_OESPI0_RX_FRAMING_ERROR | \
2006 F_OESPI1_RX_FRAMING_ERROR | F_OESPI0_TX_FRAMING_ERROR | \
2007 F_OESPI1_TX_FRAMING_ERROR | F_OESPI0_OFIFO2X_TX_FRAMING_ERROR | \
2008 F_OESPI1_OFIFO2X_TX_FRAMING_ERROR)
2015 static struct intr_info pmtx_intr_info[] = {
2020 "PMTX ispi parity error", -1, 1 },
2022 "PMTX ospi parity error", -1, 1 },
2027 pmtx_intr_info, NULL))
2031#define IESPI_FRM_ERR (F_IESPI0_FIFO2X_RX_FRAMING_ERROR | \
2032 F_IESPI1_FIFO2X_RX_FRAMING_ERROR | F_IESPI0_RX_FRAMING_ERROR | \
2033 F_IESPI1_RX_FRAMING_ERROR | F_IESPI0_TX_FRAMING_ERROR | \
2034 F_IESPI1_TX_FRAMING_ERROR)
2035#define OCSPI_FRM_ERR (F_OCSPI0_RX_FRAMING_ERROR | \
2036 F_OCSPI1_RX_FRAMING_ERROR | F_OCSPI0_TX_FRAMING_ERROR | \
2037 F_OCSPI1_TX_FRAMING_ERROR | F_OCSPI0_OFIFO2X_TX_FRAMING_ERROR | \
2038 F_OCSPI1_OFIFO2X_TX_FRAMING_ERROR)
2045 static struct intr_info pmrx_intr_info[] = {
2050 "PMRX ispi parity error", -1, 1 },
2052 "PMRX ospi parity error", -1, 1 },
2057 pmrx_intr_info, NULL))
2066 static struct intr_info cplsw_intr_info[] = {
2077 cplsw_intr_info, NULL))
2086 static struct intr_info mps_intr_info[] = {
2087 { 0x1ff,
"MPS parity error", -1, 1 },
2092 mps_intr_info, NULL))
2096#define MC7_INTR_FATAL (F_UE | V_PE(M_PE) | F_AE)
2109 "data 0x%x 0x%x 0x%x\n",
mc7->
name,
2119 "data 0x%x 0x%x 0x%x\n",
mc7->
name,
2149#define XGM_INTR_FATAL (V_TXFIFO_PRTY_ERR(M_TXFIFO_PRTY_ERR) | \
2150 V_RXFIFO_PRTY_ERR(M_RXFIFO_PRTY_ERR))
2175 CH_ALERT(adap,
"port%d: MAC TX FIFO parity error\n", idx);
2179 CH_ALERT(adap,
"port%d: MAC RX FIFO parity error\n", idx);
2232 "adverse environment. Check the spec "
2233 "sheet for corrective action.");
2303 unsigned int i, gpi_intr = 0;
2386 static const unsigned int cause_reg_addr[] = {
2410 for (i = 0; i <
ARRAY_SIZE(cause_reg_addr); ++i)
2483#define SG_CONTEXT_CMD_ATTEMPTS 100
2566 unsigned int size,
unsigned int token,
int gen,
2571 if (base_addr & 0xfff)
2608 u64 base_addr,
unsigned int size,
unsigned int bsize,
2609 unsigned int cong_thres,
int gen,
unsigned int cidx)
2611 if (base_addr & 0xfff)
2647 u64 base_addr,
unsigned int size,
2648 unsigned int fl_thres,
int gen,
unsigned int cidx)
2650 unsigned int ctrl, intr = 0;
2652 if (base_addr & 0xfff)
2663 if ((irq_vec_idx > 0) ||
2666 if (irq_vec_idx >= 0)
2690 unsigned int size,
int rspq,
int ovfl_mode,
2691 unsigned int credits,
unsigned int credit_thres)
2693 if (base_addr & 0xfff)
2823 unsigned int credits)
2837 if (op >= 2 && op < 7) {
2863 unsigned int id,
u32 data[4])
2959 int i, j, cpu_idx = 0, q_idx = 0;
2965 for (j = 0; j < 2; ++j) {
2966 val |= (cpus[cpu_idx++] & 0x3f) << (8 * j);
2967 if (cpus[cpu_idx] == 0xff)
2976 (i << 16) | rspq[q_idx++]);
2977 if (rspq[q_idx] == 0xffff)
3002 if (!(val & 0x80000000))
3005 *lkup++ = (
u8)(val >> 8);
3013 if (!(val & 0x80000000))
3044 unsigned int mask,
unsigned int val)
3090 unsigned int pg_size)
3092 unsigned int n = mem_size / pg_size;
3097#define mem_region(adap, start, size, reg) \
3098 t3_write_reg((adap), A_ ## reg, (start)); \
3112 unsigned int timers = 0, timers_shift = 22;
3115 if (tids <= 16 * 1024) {
3118 }
else if (tids <= 64 * 1024) {
3121 }
else if (tids <= 256 * 1024) {
3143 pstructs -= pstructs % 24;
3147 mem_region(adap, m, (64 << 10) * 64, SG_EGR_CNTX_BADDR);
3148 mem_region(adap, m, (64 << 10) * 64, SG_CQ_CONTEXT_BADDR);
3150 m += ((p->
ntimer_qs - 1) << timers_shift) + (1 << 22);
3151 mem_region(adap, m, pstructs * 64, TP_CMM_MM_BASE);
3152 mem_region(adap, m, 64 * (pstructs / 24), TP_CMM_MM_PS_FLST_BASE);
3156 m = (m + 4095) & ~0xfff;
3160 tids = (p->
cm_size - m - (3 << 20)) / 3072 - 32;
3246#define TP_DACK_TIMER 50
3247#define TP_RTO_MIN 250
3261 unsigned int tstamp_re = fls(core_clk / 1000);
3262 unsigned int tps = core_clk >> tre;
3278#define SECONDS * tps
3372 a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = a[8] = 1;
3397 b[0] = b[1] = b[2] = b[3] = b[4] = b[5] = b[6] = b[7] = b[8] = 0;
3400 b[13] = b[14] = b[15] = b[16] = 3;
3401 b[17] = b[18] = b[19] = b[20] = b[21] = 4;
3402 b[22] = b[23] = b[24] = b[25] = b[26] = b[27] = 5;
3408#define CC_MIN_INCR 2U
3424 unsigned short beta[
NCCTRL_WIN],
unsigned short mtu_cap)
3426 static const unsigned int avg_pkts[
NCCTRL_WIN] = {
3427 2, 6, 10, 14, 20, 28, 40, 56, 80, 112, 160, 224, 320, 448, 640,
3428 896, 1281, 1792, 2560, 3584, 5120, 7168, 10240, 14336, 20480,
3429 28672, 40960, 57344, 81920, 114688, 163840, 229376 };
3433 for (i = 0; i <
NMTUS; ++i) {
3434 unsigned int mtu = min(mtus[i], mtu_cap);
3435 unsigned int log2 = fls(mtu);
3437 if (!(mtu & ((1 << log2) >> 2)))
3440 (i << 24) | (log2 << 16) | mtu);
3445 inc = max(((mtu - 40) * alpha[w]) / avg_pkts[w],
3449 (w << 16) | (beta[w] << 13) | inc);
3465 for (i = 0; i <
NMTUS; ++i) {
3470 mtus[i] = val & 0x3fff;
3485 unsigned int mtu, w;
3487 for (mtu = 0; mtu <
NMTUS; ++mtu)
3490 0xffff0000 | (mtu << 5) | w);
3506 sizeof(*tps) /
sizeof(
u32), 0);
3536 unsigned int start,
unsigned int n)
3540 for ( ; n; n--, start++, pace_vals++)
3542 ((*pace_vals + tick_ns / 2) / tick_ns));
3545#define ulp_region(adap, name, start, len) \
3546 t3_write_reg((adap), A_ULPRX_ ## name ## _LLIMIT, (start)); \
3547 t3_write_reg((adap), A_ULPRX_ ## name ## _ULIMIT, \
3548 (start) + (len) - 1); \
3551#define ulptx_region(adap, name, start, len) \
3552 t3_write_reg((adap), A_ULPTX_ ## name ## _LLIMIT, (start)); \
3553 t3_write_reg((adap), A_ULPTX_ ## name ## _ULIMIT, \
3554 (start) + (len) - 1)
3581 const u32 *buf = (
const u32 *)data;
3608 int filter_index,
int invert,
int enable)
3610 u32 addr, key[4], mask[4];
3612 key[0] = tp->
sport | (tp->
sip << 16);
3613 key[1] = (tp->
sip >> 16) | (tp->
dport << 16);
3623 key[3] |= (1 << 29);
3625 key[3] |= (1 << 28);
3650 int filter_index,
int *inverted,
int *enabled)
3652 u32 addr, key[4], mask[4];
3664 tp->
sport = key[0] & 0xffff;
3665 tp->
sip = (key[0] >> 16) | ((key[1] & 0xffff) << 16);
3666 tp->
dport = key[1] >> 16;
3668 tp->
proto = key[3] & 0xff;
3669 tp->
vlan = key[3] >> 8;
3670 tp->
intf = key[3] >> 20;
3673 tp->
sip_mask = (mask[0] >> 16) | ((mask[1] & 0xffff) << 16);
3680 *inverted = key[3] & (1 << 29);
3681 *enabled = key[3] & (1 << 28);
3694 unsigned int v, tps, cpt, bpt, delta, mindelta = ~0;
3696 unsigned int selected_cpt = 0, selected_bpt = 0;
3700 for (cpt = 1; cpt <= 255; cpt++) {
3702 bpt = (kbps + tps / 2) / tps;
3703 if (bpt > 0 && bpt <= 255) {
3705 delta = v >= kbps ? v - kbps : kbps - v;
3706 if (delta < mindelta) {
3711 }
else if (selected_cpt)
3721 v = (v & 0xffff) | (selected_cpt << 16) | (selected_bpt << 24);
3723 v = (v & 0xffff0000) | selected_cpt | (selected_bpt << 8);
3742 ipg = (ipg + 5000) / 10000;
3749 v = (v & 0xffff) | (ipg << 16);
3751 v = (v & 0xffff0000) | ipg;
3769 unsigned int v, addr, bpt, cpt;
3777 bpt = (v >> 8) & 0xff;
3783 *kbps = (v * bpt) / 125;
3817 CH_ERR(adap,
"TP initialization timed out\n");
3853 if (chan_map != 3) {
3860 chan_map == 1 ? 0xffffffff : 0);
3878 for (i = 0; i < 16; i++)
3880 (i << 16) | 0x1010);
3891 for (i = 0; i < 5; ++i) {
3949 CH_ERR(
adapter,
"write to MC7 register 0x%x timed out\n", addr);
3955 static const unsigned int mc7_mode[] = {
3956 0x632, 0x642, 0x652, 0x432, 0x442
3959 { 12, 3, 4, { 20, 28, 34, 52, 0 }, 15, 6, 4 },
3960 { 12, 4, 5, { 20, 28, 34, 52, 0 }, 16, 7, 4 },
3961 { 12, 5, 6, { 20, 28, 34, 52, 0 }, 17, 8, 4 },
3962 { 9, 3, 4, { 15, 21, 26, 39, 0 }, 12, 6, 4 },
3963 { 9, 4, 5, { 15, 21, 26, 39, 0 }, 13, 7, 4 }
3967 unsigned int width, density, slow, attempts;
3977 density =
G_DEN(val);
4028 mc7_mode[mem_type]) ||
4034 mc7_clock = mc7_clock * 7812 + mc7_clock / 2;
4035 mc7_clock /= 1000000;
4054 }
while ((val &
F_BUSY) && --attempts);
4070 static const u16 ack_lat[4][6] = {
4071 { 237, 416, 559, 1071, 2095, 4143 },
4072 { 128, 217, 289, 545, 1057, 2081 },
4073 { 73, 118, 154, 282, 538, 1050 },
4074 { 67, 107, 86, 150, 278, 534 }
4076 static const u16 rpl_tmr[4][6] = {
4077 { 711, 1248, 1677, 3213, 6285, 12429 },
4078 { 384, 651, 867, 1635, 3171, 6243 },
4079 { 219, 354, 462, 846, 1614, 3150 },
4080 { 201, 321, 258, 450, 834, 1602 }
4084 unsigned int log2_width, pldsize;
4085 unsigned int fst_trn_rx, fst_trn_tx, acklat, rpllmt;
4097 if (devid == 0x37) {
4109 fst_trn_rx = adap->
params.
rev == 0 ? fst_trn_tx :
4112 acklat = ack_lat[log2_width][pldsize];
4114 acklat += fst_trn_tx * 4;
4115 rpllmt = rpl_tmr[log2_width][pldsize] + fst_trn_rx * 4;
4149 int err = -EIO, attempts, i;
4171 for (i = 0; i < 32; i++)
4233 static unsigned short speed_map[] = { 33, 66, 100, 133 };
4234 u32 pci_mode, pcie_cap;
4244 p->
width = (val >> 4) & 0x3f;
4254 else if (pci_mode < 4)
4256 else if (pci_mode < 8)
4297 unsigned int width =
G_WIDTH(cfg);
4298 unsigned int banks = !!(cfg &
F_BKS) + 1;
4299 unsigned int org = !!(cfg &
F_ORG) + 1;
4300 unsigned int density =
G_DEN(cfg);
4301 unsigned int MBs = ((256 << density) * banks) / (org << width);
4307 unsigned int base_addr,
const char *name)
4395 int i, save_and_restore_pcie =
4399 if (save_and_restore_pcie)
4407 for (i = 0; i < 10; i++) {
4410 if (devid == 0x1425)
4414 if (devid != 0x1425)
4417 if (save_and_restore_pcie)
4429 for (err = i = 0; !err && i < 16; i++)
4431 for (i = 0xfff0; !err && i <= 0xffff; i++)
4439 for (i = 0; i < 4; i++)
4465 unsigned int i, j = 0;
4704 u32 *size,
void *data)
4716 *stopped = !(v & 1);
4726 v = (i << 2) | (1 << 1);
4736 while ((v & (1 << 1)) && cnt) {
4758 *index = (v >> 16) + 4;
4774 for (i = 0; i < 4; i++) {
4783 u32 base_addr = 0x10 * (i + 1);
4785 for (j = 0; j < 4; j++) {
#define MDIO_UNLOCK(adapter)
uint8_t hw_addr[ETHER_ADDR_LEN]
void t3_sge_err_intr_handler(adapter_t *adapter)
static __inline void t3_write_reg(adapter_t *adapter, uint32_t reg_addr, uint32_t val)
#define MDIO_LOCK(adapter)
static __inline uint32_t t3_read_reg(adapter_t *adapter, uint32_t reg_addr)
static __inline void t3_os_pci_read_config_4(adapter_t *adapter, int reg, uint32_t *val)
int t3_os_pci_save_state(struct adapter *adapter)
int t3_os_pci_restore_state(struct adapter *adapter)
void t3_os_phymod_changed(struct adapter *adap, int port_id)
static __inline void t3_os_pci_read_config_2(adapter_t *adapter, int reg, uint16_t *val)
int t3_os_find_pci_capability(adapter_t *adapter, int cap)
const struct port_type_info * port_type
void t3_os_link_changed(adapter_t *adapter, int port_id, int link_status, int speed, int duplex, int fc, int mac_was_reset)
void t3_os_set_hw_addr(adapter_t *adapter, int port_idx, u8 hw_addr[])
static __inline struct port_info * adap2pinfo(struct adapter *adap, int idx)
static __inline void t3_os_pci_write_config_2(adapter_t *adapter, int reg, uint16_t val)
static __inline void t3_os_pci_write_config_4(adapter_t *adapter, int reg, uint32_t val)
void t3_os_link_intr(struct port_info *)
int t3_ael2005_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_qt2045_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_ael1002_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_ael2020_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_ael1006_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_xaui_direct_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
int t3_aq100x_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
static int mdio_read(struct cphy *phy, int mmd, int reg, unsigned int *valp)
int t3_vsc7323_init(adapter_t *adap, int nports)
int t3_vsc8211_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
void t3_mac_disable_exact_filters(struct cmac *mac)
void t3_sge_prep(adapter_t *adap, struct sge_params *p)
void t3_mac_enable_exact_filters(struct cmac *mac)
static int is_10G(const adapter_t *adap)
#define G_TP_VERSION_MAJOR(x)
static unsigned int core_ticks_per_usec(const adapter_t *adap)
static unsigned int t3_mc7_size(const struct mc7 *p)
#define XGM_REG(reg_addr, idx)
int t3_mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex, int fc)
void t3_mc5_prep(adapter_t *adapter, struct mc5 *mc5, int mode)
int t3_mac_enable(struct cmac *mac, int which)
static unsigned int t3_mc5_size(const struct mc5 *p)
static int uses_xaui(const adapter_t *adap)
#define G_TP_VERSION_MINOR(x)
int t3_mac_init(struct cmac *mac)
#define MAC_STATS_ACCUM_SECS
#define VSC_STATS_ACCUM_SECS
int t3_mac_disable(struct cmac *mac, int which)
static int is_offload(const adapter_t *adap)
int t3_mc5_init(struct mc5 *mc5, unsigned int nservers, unsigned int nfilters, unsigned int nroutes)
@ cphy_cause_module_change
#define MAX_RX_COALESCING_LEN
static unsigned int is_pcie(const adapter_t *adap)
#define for_each_port(adapter, iter)
static int t3_wait_op_done(adapter_t *adapter, int reg, u32 mask, int polarity, int attempts, int delay)
#define adapter_info(adap)
void t3_mc5_intr_handler(struct mc5 *mc5)
static int mdio_write(struct cphy *phy, int mmd, int reg, unsigned int val)
void t3c_pcs_force_los(struct cmac *mac)
void t3_fatal_err(adapter_t *adapter)
void t3_sge_init(adapter_t *adap, struct sge_params *p)
@ PCI_VARIANT_PCIX_MODE1_PARITY
@ PCI_VARIANT_PCIX_266_MODE2
@ PCI_VARIANT_PCIX_MODE1_ECC
void t3b_pcs_reset(struct cmac *mac)
int t3_mv88e1xxx_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
static unsigned int dack_ticks_to_usec(const adapter_t *adap, unsigned int ticks)
int t3_tn1010_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
#define G_FW_VERSION_MINOR(x)
#define G_FW_VERSION_TYPE(x)
#define G_FW_VERSION_MAJOR(x)
#define ADVERTISE_1000XHALF
#define ADVERTISED_1000baseT_Full
#define ADVERTISE_1000XPSE_ASYM
#define ADVERTISE_PAUSE_ASYM
#define ADVERTISE_1000HALF
#define ADVERTISE_100FULL
#define ADVERTISE_1000XPAUSE
#define simple_strtoul(...)
#define SUPPORTED_10000baseT_Full
#define SUPPORTED_Autoneg
#define ADVERTISED_100baseT_Half
#define ADVERTISED_100baseT_Full
#define ADVERTISED_10baseT_Full
#define ADVERTISE_1000FULL
#define ADVERTISED_1000baseT_Half
#define PCI_EXP_DEVCTL_READRQ
#define ADVERTISE_100HALF
#define ADVERTISED_10baseT_Half
#define CH_WARN(adap, fmt,...)
#define CH_ERR(adap, fmt,...)
#define CH_ALERT(adap, fmt,...)
#define ADVERTISED_Asym_Pause
#define ADVERTISE_PAUSE_CAP
#define PCI_EXP_DEVCTL_PAYLOAD
#define ADVERTISE_1000XFULL
#define A_TP_VLAN_PRI_MAP
#define XGMAC0_0_BASE_ADDR
#define A_TP_PMM_RX_MAX_PAGE
#define V_PCIE_MSIXPARERR(x)
#define A_TP_FINWAIT2_TIMER
#define V_PERSHIFTBACKOFFMAX(x)
#define A_TP_TX_MOD_QUE_TABLE
#define A_XGM_RX_HASH_HIGH
#define A_TP_TX_MOD_QUEUE_WEIGHT0
#define A_CIM_HOST_INT_CAUSE
#define A_TP_CMM_TIMER_BASE
#define F_ENABLELINKDWNDRST
#define A_CIM_HOST_INT_ENABLE
#define M_IESPI_PAR_ERROR
#define A_T3DBG_INT_ENABLE
#define A_TP_TX_MOD_Q1_Q0_TIMER_SEPARATOR
#define A_TP_EMBED_OP_FIELD2
#define V_WINDOWSCALEMODE(x)
#define A_TP_MOD_RATE_LIMIT
#define A_TP_PMM_TX_MAX_PAGE
#define M_PCIE_MSIXPARERR
#define A_TP_MAC_MATCH_MAP1
#define F_ENABLETXPORTFROMDA2
#define A_ULPTX_INT_CAUSE
#define A_XGM_XGM_INT_DISABLE
#define A_ULPTX_INT_ENABLE
#define V_PMMAXXFERLEN1(x)
#define A_MC7_BIST_ADDR_BEG
#define A_T3DBG_GPIO_ACT_LOW
#define A_TP_PREAMBLE_MSB
#define A_TP_TX_MOD_QUEUE_WEIGHT1
#define A_SG_CONTEXT_DATA1
#define F_ZERO_E_CMD_ERROR
#define F_ZERO_SWITCH_ERROR
#define A_CIM_SDRAM_BASE_ADDR
#define M_TABLELATENCYDELTA
#define A_PCIE_INT_ENABLE
#define V_IESPI_PAR_ERROR(x)
#define A_MC7_BIST_ADDR_END
#define V_OCSPI_PAR_ERROR(x)
#define F_TXFIFO_UNDERRUN
#define A_TP_EMBED_OP_FIELD3
#define A_PCIX_INT_ENABLE
#define A_SG_CONTEXT_DATA0
#define F_DATASELFRAMEERR1
#define V_RXCOALESCESIZE(x)
#define V_RXTSHIFTMAXR1(x)
#define A_TP_CMM_MM_MAX_PSTRUCT
#define A_TP_MAC_MATCH_MAP0
#define A_ULPTX_DMA_WEIGHT
#define M_ICSPI_PAR_ERROR
#define A_SG_CONTEXT_DATA2
#define F_RXCOALESCEPSHEN
#define V_ACTTORDWRDLY(x)
#define V_DELAYEDACKRESOLUTION(x)
#define A_TP_GLOBAL_CONFIG
#define A_TP_EMBED_OP_FIELD0
#define V_TIMERRESOLUTION(x)
#define A_ULPRX_INT_ENABLE
#define V_MSSTHRESHOLD(x)
#define V_PMMAXXFERLEN0(x)
#define A_XGM_XGM_INT_ENABLE
#define V_CONTEXT_CMD_OPCODE(x)
#define XGMAC0_1_BASE_ADDR
#define A_MC5_DB_INT_ENABLE
#define F_CIM_FRAMING_ERROR
#define M_OESPI_PAR_ERROR
#define A_TP_TCP_BACKOFF_REG2
#define A_TP_RSS_MAP_TABLE
#define A_TP_EMBED_OP_FIELD4
#define F_TXPACEAUTOSTRICT
#define V_TABLELATENCYDELTA(x)
#define F_TCPCHECKSUMOFFLOAD
#define A_PM1_RX_INT_CAUSE
#define M_TXFIFO_PRTY_ERR
#define A_CIM_SDRAM_ADDR_SIZE
#define V_KEEPALIVEMAX(x)
#define A_TP_TCP_BACKOFF_REG1
#define A_TP_TIMER_RESOLUTION
#define S_VLANEXTRACTIONENABLE
#define A_SG_CONTEXT_MASK1
#define F_CONTEXT_CMD_BUSY
#define F_ENABLEEXTRACTIONSFD
#define F_ZERO_C_CMD_ERROR
#define F_TXTOSQUEUEMAPMODE
#define F_ENABLEEPCMDAFULL
#define F_ENABLETXPORTFROMDA
#define V_ICSPI_PAR_ERROR(x)
#define F_ENABLELINKDOWNRST
#define V_TX_MOD_QUEUE_REQ_MAP(x)
#define M_OCSPI_PAR_ERROR
#define F_CIM_OP_MAP_PERR
#define V_TIMESTAMPRESOLUTION(x)
#define A_TP_RSS_LKP_TABLE
#define A_TP_TCP_BACKOFF_REG0
#define A_XGM_XAUI_ACT_CTRL
#define A_SG_RSPQ_FL_STATUS
#define A_SG_CONTEXT_MASK2
#define A_TP_TX_MOD_Q1_Q0_RATE_LIMIT
#define V_OESPI_PAR_ERROR(x)
#define A_PM1_TX_INT_ENABLE
#define V_RXTSHIFTMAXR2(x)
#define A_TP_EGRESS_CONFIG
#define A_TP_QOS_RX_MAP_MODE
#define A_MC5_DB_INT_CAUSE
#define F_REWRITEFORCETOSIZE
#define A_SG_CONTEXT_MASK0
#define F_RXCONGESTIONMODE
#define A_SG_CONTEXT_DATA3
#define F_TXCONGESTIONMODE
#define G_NUMFSTTRNSEQRX(x)
#define F_XAUIPCSALIGNCHANGE
#define A_TP_PROXY_FLOW_CNTL
#define F_SGE_FRAMING_ERROR
#define A_XGM_RX_HASH_LOW
#define A_PM1_RX_INT_ENABLE
#define A_CIM_IBQ_DBG_CFG
#define A_TP_EMBED_OP_FIELD5
#define F_ENABLEINSERTIONSFD
#define A_PM1_TX_INT_CAUSE
#define A_XGM_SERDES_CTRL
#define F_LINKFAULTCHANGE
#define F_ENABLEOCSPIFULL
#define MC7_PMRX_BASE_ADDR
#define F_ENABLERXPORTFROMADDR
#define M_FIVETUPLELOOKUP
#define A_TP_PMM_TX_PAGE_SIZE
#define F_ENABLEINSERTION
#define A_TP_INTF_FROM_TX_PKT
#define A_CIM_HOST_ACC_CTRL
#define V_TXFIFO_PRTY_ERR(x)
#define G_NUMFSTTRNSEQ(x)
#define A_MC5_DB_SERVER_INDEX
#define F_UDPCHECKSUMOFFLOAD
#define V_CMTIMERMAXNUM(x)
#define V_TIMESTAMPSMODE(x)
#define M_RXFIFO_PRTY_ERR
#define F_PBL_BOUND_ERR_CH0
#define V_RXFIFO_PRTY_ERR(x)
#define A_TP_TCP_BACKOFF_REG3
#define F_DISBLEDAPARBIT0
#define A_SG_CONTEXT_MASK3
#define MC7_PMTX_BASE_ADDR
#define A_T3DBG_INT_CAUSE
#define A_ULPRX_TDDP_TAGMASK
#define A_CIM_HOST_ACC_DATA
#define F_PBL_BOUND_ERR_CH1
#define F_IPCHECKSUMOFFLOAD
#define A_TP_PREAMBLE_LSB
#define A_TP_PMM_RX_PAGE_SIZE
#define F_RXFIFO_OVERFLOW
#define V_TXDATAACKIDX(x)
#define A_TP_TX_RESOURCE_LIMIT
#define A_TP_EMBED_OP_FIELD1
#define A_ULPRX_INT_CAUSE
#define V_BYTETHRESHOLD(x)
#define F_RXCOALESCEENABLE
#define A_TP_TX_MOD_QUEUE_REQ_MAP
#define F_DATASELFRAMEERR0
#define F_XGM_IMPSETUPDATE
#define V_FIVETUPLELOOKUP(x)
#define A_CPL_INTR_ENABLE
#define F_TP_FRAMING_ERROR
#define F_ENABLENONOFDTNLSYN
#define A_TP_MOD_CHANNEL_WEIGHT
#define F_CFG_CQE_SOP_MASK
#define A_TP_INGRESS_CONFIG
#define A_CIM_IBQ_DBG_DATA
#define V_FL_CONG_THRES(x)
#define V_CQ_OVERFLOW_MODE(x)
#define M_FL_ENTRY_SIZE_LO
#define S_FL_ENTRY_SIZE_LO
#define V_FL_ENTRY_SIZE_LO(x)
#define V_FL_ENTRY_SIZE_HI(x)
#define V_CQ_CREDIT_THRES(x)
int t3_set_proto_sram(adapter_t *adap, const u8 *data)
int t3_get_up_ioqs(adapter_t *adapter, u32 *size, void *data)
void t3_disable_filters(adapter_t *adap)
void t3_query_trace_filter(adapter_t *adapter, struct trace_params *tp, int filter_index, int *inverted, int *enabled)
int t3_load_fw(adapter_t *adapter, const u8 *fw_data, unsigned int size)
static int t3_cim_hac_write(adapter_t *adapter, u32 addr, u32 val)
void t3_tp_get_mib_stats(adapter_t *adap, struct tp_mib_stats *tps)
int t3_check_fw_version(adapter_t *adapter)
static struct port_type_info port_types[]
int t3_sge_disable_fl(adapter_t *adapter, unsigned int id)
int t3_mdio_change_bits(struct cphy *phy, int mmd, int reg, unsigned int clear, unsigned int set)
void t3_read_hw_mtus(adapter_t *adap, unsigned short mtus[NMTUS])
static int mi1_ext_read(adapter_t *adapter, int phy_addr, int mmd_addr, int reg_addr, unsigned int *valp)
int t3_seeprom_read(adapter_t *adapter, u32 addr, u32 *data)
int t3_get_fw_version(adapter_t *adapter, u32 *vers)
int t3_tp_set_coalescing_size(adapter_t *adap, unsigned int size, int psh)
int t3_slow_intr_handler(adapter_t *adapter)
int t3_get_up_la(adapter_t *adapter, u32 *stopped, u32 *index, u32 *size, void *data)
static unsigned int hex2int(unsigned char c)
void t3_link_changed(adapter_t *adapter, int port_id)
static int clear_sge_ctxt(adapter_t *adap, unsigned int id, unsigned int type)
static int phy_intr_handler(adapter_t *adapter)
static int tp_init(adapter_t *adap, const struct tp_params *p)
static void t3_open_rx_traffic(struct cmac *mac, u32 rx_cfg, u32 rx_hash_high, u32 rx_hash_low)
static int t3_sge_read_context(unsigned int type, adapter_t *adapter, unsigned int id, u32 data[4])
int t3_sge_read_cq(adapter_t *adapter, unsigned int id, u32 data[4])
static struct mdio_ops mi1_mdio_ops
void t3_write_regs(adapter_t *adapter, const struct addr_val_pair *p, int n, unsigned int offset)
void t3_failover_done(adapter_t *adapter, int port)
int t3_phy_reset(struct cphy *phy, int mmd, int wait)
static void t3_gate_rx_traffic(struct cmac *mac, u32 *rx_cfg, u32 *rx_hash_high, u32 *rx_hash_low)
static int sf1_write(adapter_t *adapter, unsigned int byte_cnt, int cont, u32 val)
int t3_sge_init_ecntxt(adapter_t *adapter, unsigned int id, int gts_enable, enum sge_context_type type, int respq, u64 base_addr, unsigned int size, unsigned int token, int gen, unsigned int cidx)
int t3_seeprom_write(adapter_t *adapter, u32 addr, u32 data)
int t3_reset_adapter(adapter_t *adapter)
static void __devinit mc7_prep(adapter_t *adapter, struct mc7 *mc7, unsigned int base_addr, const char *name)
static int get_vpd_params(adapter_t *adapter, struct vpd_params *p)
static void tp_set_timers(adapter_t *adap, unsigned int core_clk)
static int t3_write_flash(adapter_t *adapter, unsigned int addr, unsigned int n, const u8 *data, int byte_oriented)
int t3_i2c_read8(adapter_t *adapter, int chained, u8 *valp)
void t3_enable_filters(adapter_t *adap)
int t3_load_boot(adapter_t *adapter, u8 *boot_data, unsigned int size)
int t3_i2c_write8(adapter_t *adapter, int chained, u8 val)
static void tp_wr_bits_indirect(adapter_t *adap, unsigned int addr, unsigned int mask, unsigned int val)
static struct adapter_info t3_adap_info[]
int t3_read_vpd(adapter_t *adapter, struct generic_vpd *vpd)
static void __devinit init_cong_ctrl(unsigned short *a, unsigned short *b)
void t3_port_intr_disable(adapter_t *adapter, int idx)
int __devinit t3_prep_adapter(adapter_t *adapter, const struct adapter_info *ai, int reset)
static void ulprx_intr_handler(adapter_t *adapter)
static void config_pcie(adapter_t *adap)
int t3_link_start(struct cphy *phy, struct cmac *mac, struct link_config *lc)
int t3_sge_cqcntxt_op(adapter_t *adapter, unsigned int id, unsigned int op, unsigned int credits)
int t3_mi1_read(adapter_t *adapter, int phy_addr, int mmd_addr, int reg_addr, unsigned int *valp)
static int t3_handle_intr_status(adapter_t *adapter, unsigned int reg, unsigned int mask, const struct intr_info *acts, unsigned long *stats)
void t3_read_pace_tbl(adapter_t *adap, unsigned int pace_vals[NTX_SCHED])
void t3_failover_clear(adapter_t *adapter)
void early_hw_init(adapter_t *adapter, const struct adapter_info *ai)
static void __devinit init_link_config(struct link_config *lc, unsigned int caps)
void t3_intr_clear(adapter_t *adapter)
static int get_desc_len(adapter_t *adapter, u32 offset)
int t3_sge_init_rspcntxt(adapter_t *adapter, unsigned int id, int irq_vec_idx, u64 base_addr, unsigned int size, unsigned int fl_thres, int gen, unsigned int cidx)
static void mps_intr_handler(adapter_t *adapter)
int t3_mps_set_active_ports(adapter_t *adap, unsigned int port_mask)
static unsigned int pm_num_pages(unsigned int mem_size, unsigned int pg_size)
static int mi1_ext_write(adapter_t *adapter, int phy_addr, int mmd_addr, int reg_addr, unsigned int val)
int t3_phy_lasi_intr_handler(struct cphy *phy)
int t3_sge_read_rspq(adapter_t *adapter, unsigned int id, u32 data[4])
static void pci_intr_handler(adapter_t *adapter)
static void cplsw_intr_handler(adapter_t *adapter)
static int t3_flash_erase_sectors(adapter_t *adapter, int start, int end)
#define ulp_region(adap, name, start, len)
int t3_sge_read_fl(adapter_t *adapter, unsigned int id, u32 data[4])
void t3_set_reg_field(adapter_t *adapter, unsigned int addr, u32 mask, u32 val)
static unsigned int __devinit mc7_calc_size(u32 cfg)
const struct adapter_info * t3_get_adapter_info(unsigned int id)
int t3_phy_lasi_intr_clear(struct cphy *phy)
static int mc7_init(struct mc7 *mc7, unsigned int mc7_clock, int mem_type)
int t3_init_hw(adapter_t *adapter, u32 fw_params)
void t3_get_cong_cntl_tab(adapter_t *adap, unsigned short incr[NMTUS][NCCTRL_WIN])
int t3_sge_read_ecntxt(adapter_t *adapter, unsigned int id, u32 data[4])
struct boot_header_s boot_header_t
void t3_config_trace_filter(adapter_t *adapter, const struct trace_params *tp, int filter_index, int invert, int enable)
static void pmrx_intr_handler(adapter_t *adapter)
static void pcie_intr_handler(adapter_t *adapter)
static void mc7_intr_handler(struct mc7 *mc7)
static void t3_read_indirect(adapter_t *adap, unsigned int addr_reg, unsigned int data_reg, u32 *vals, unsigned int nregs, unsigned int start_idx)
static void __devinit get_pci_mode(adapter_t *adapter, struct pci_params *p)
static void partition_mem(adapter_t *adap, const struct tp_params *p)
static struct mdio_ops mi1_mdio_ext_ops
static int sf1_read(adapter_t *adapter, unsigned int byte_cnt, int cont, u32 *valp)
int t3_set_sched_ipg(adapter_t *adap, int sched, unsigned int ipg)
int t3_phy_advertise(struct cphy *phy, unsigned int advert)
void t3_port_intr_enable(adapter_t *adapter, int idx)
static void ulp_config(adapter_t *adap, const struct tp_params *p)
static void tp_wr_indirect(adapter_t *adap, unsigned int addr, u32 val)
static void __devinit init_mtus(unsigned short mtus[])
int t3_get_vpd_len(adapter_t *adapter, struct generic_vpd *vpd)
void t3_intr_enable(adapter_t *adapter)
int t3_cim_ctl_blk_read(adapter_t *adap, unsigned int addr, unsigned int n, unsigned int *valp)
void t3_xgm_intr_disable(adapter_t *adapter, int idx)
static u32 tp_rd_indirect(adapter_t *adap, unsigned int addr)
int t3_sge_disable_cqcntxt(adapter_t *adapter, unsigned int id)
static void mi1_init(adapter_t *adap, const struct adapter_info *ai)
static void chan_init_hw(adapter_t *adap, unsigned int chan_map)
static int flash_wait_op(adapter_t *adapter, int attempts, int delay)
static unsigned int calc_gpio_intr(adapter_t *adap)
void t3_port_failover(adapter_t *adapter, int port)
static void pmtx_intr_handler(adapter_t *adapter)
static int is_end_tag(adapter_t *adapter, u32 offset)
int t3_check_tpsram(adapter_t *adapter, const u8 *tp_sram, unsigned int size)
int t3_phy_lasi_intr_enable(struct cphy *phy)
static int mac_intr_handler(adapter_t *adap, unsigned int idx)
void t3_xgm_intr_enable(adapter_t *adapter, int idx)
#define SG_CONTEXT_CMD_ATTEMPTS
int t3_phy_advertise_fiber(struct cphy *phy, unsigned int advert)
void t3_get_tx_sched(adapter_t *adap, unsigned int sched, unsigned int *kbps, unsigned int *ipg)
static void t3_clear_faults(adapter_t *adapter, int port_id)
static void tp_intr_handler(adapter_t *adapter)
int t3_check_tpsram_version(adapter_t *adapter)
int t3_sge_enable_ecntxt(adapter_t *adapter, unsigned int id, int enable)
static void tp_config(adapter_t *adap, const struct tp_params *p)
void t3_config_rss(adapter_t *adapter, unsigned int rss_config, const u8 *cpus, const u16 *rspq)
void t3_led_ready(adapter_t *adapter)
#define ulptx_region(adap, name, start, len)
static void calibrate_xgm_t3b(adapter_t *adapter)
static int wrreg_wait(adapter_t *adapter, unsigned int addr, u32 val)
static void ulptx_intr_handler(adapter_t *adapter)
int t3_phy_lasi_intr_disable(struct cphy *phy)
void t3_set_pace_tbl(adapter_t *adap, unsigned int *pace_vals, unsigned int start, unsigned int n)
void mac_prep(struct cmac *mac, adapter_t *adapter, int index)
static int t3_sge_write_context(adapter_t *adapter, unsigned int id, unsigned int type)
static void cim_intr_handler(adapter_t *adapter)
int t3_config_sched(adapter_t *adap, unsigned int kbps, int sched)
int t3_wait_op_done_val(adapter_t *adapter, int reg, u32 mask, int polarity, int attempts, int delay, u32 *valp)
static int calibrate_xgm(adapter_t *adapter)
int t3_mi1_write(adapter_t *adapter, int phy_addr, int mmd_addr, int reg_addr, unsigned int val)
static int init_parity(adapter_t *adap)
static int t3_cim_hac_read(adapter_t *adapter, u32 addr, u32 *val)
void t3_tp_set_max_rxsize(adapter_t *adap, unsigned int size)
int t3_read_rss(adapter_t *adapter, u8 *lkup, u16 *map)
int t3_set_phy_speed_duplex(struct cphy *phy, int speed, int duplex)
#define mem_region(adap, start, size, reg)
int t3_mc7_bd_read(struct mc7 *mc7, unsigned int start, unsigned int n, u64 *buf)
int t3_get_tp_version(adapter_t *adapter, u32 *vers)
int t3_reinit_adapter(adapter_t *adap)
void t3_load_mtus(adapter_t *adap, unsigned short mtus[NMTUS], unsigned short alpha[NCCTRL_WIN], unsigned short beta[NCCTRL_WIN], unsigned short mtu_cap)
#define XGM_EXTRA_INTR_MASK
int t3_sge_init_cqcntxt(adapter_t *adapter, unsigned int id, u64 base_addr, unsigned int size, int rspq, int ovfl_mode, unsigned int credits, unsigned int credit_thres)
int t3_read_flash(adapter_t *adapter, unsigned int addr, unsigned int nwords, u32 *data, int byte_oriented)
void t3_set_vlan_accel(adapter_t *adapter, unsigned int ports, int on)
int t3_sge_disable_rspcntxt(adapter_t *adapter, unsigned int id)
static int t3_detect_link_fault(adapter_t *adapter, int port_id)
void t3_intr_disable(adapter_t *adapter)
void t3_tp_set_offload_mode(adapter_t *adap, int enable)
int t3_seeprom_wp(adapter_t *adapter, int enable)
int t3_sge_init_flcntxt(adapter_t *adapter, unsigned int id, int gts_enable, u64 base_addr, unsigned int size, unsigned int bsize, unsigned int cong_thres, int gen, unsigned int cidx)
void t3_port_intr_clear(adapter_t *adapter, int idx)
const struct mdio_ops * mdio_ops
unsigned char phy_base_addr
unsigned int stats_update_period
unsigned short a_wnd[NCCTRL_WIN]
unsigned short mtus[NMTUS]
const struct adapter_info * info
unsigned int linkpoll_period
unsigned short b_wnd[NCCTRL_WIN]
unsigned int slow_intr_mask
struct adapter_params params
unsigned long irq_stats[IRQ_NUM_STATS]
int(* power_down)(struct cphy *phy, int enable)
int(* reset)(struct cphy *phy, int wait)
int(* intr_disable)(struct cphy *phy)
int(* intr_handler)(struct cphy *phy)
int(* intr_enable)(struct cphy *phy)
int(* advertise)(struct cphy *phy, unsigned int advertise_map)
int(* set_speed_duplex)(struct cphy *phy, int speed, int duplex)
int(* autoneg_enable)(struct cphy *phy)
int(* intr_clear)(struct cphy *phy)
int(* get_link_status)(struct cphy *phy, int *link_state, int *speed, int *duplex, int *fc)
const struct cphy_ops * ops
unsigned long fifo_errors
unsigned char requested_duplex
unsigned short requested_speed
unsigned char requested_fc
unsigned long rx_fifo_ovfl
unsigned long xaui_pcs_align_change
unsigned long tx_fifo_parity_err
unsigned long link_faults
unsigned long xaui_pcs_ctc_err
unsigned long rx_fifo_parity_err
unsigned long serdes_signal_loss
unsigned long tx_fifo_urun
unsigned char ActToPreDly
unsigned char ActToRdWrDly
unsigned int vpd_cap_addr
unsigned int pcie_cap_addr
struct link_config link_config
int(* phy_prep)(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *ops)
unsigned int max_pkt_size
VPD_ENTRY(sn, SERNUM_LEN)
unsigned int chan_tx_size
unsigned int chan_rx_size
unsigned short xauicfg[2]