Skip to content

Commit 3646153

Browse files
ahduyckkuba-moo
authored andcommitted
eth: fbnic: Add register init to set PCIe/Ethernet device config
As a part of enabling the device the first step is to configure the AXI and Ethernet interfaces to allow for basic traffic. This consists of configuring several registers related to the PCIe and Ethernet FIFOs as well as configuring the handlers for moving traffic between entities. Signed-off-by: Alexander Duyck <[email protected]> Link: https://patch.msgid.link/172079936376.1778861.15942501417449077552.stgit@ahduyck-xeon-server.home.arpa Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 1a9d488 commit 3646153

File tree

7 files changed

+845
-0
lines changed

7 files changed

+845
-0
lines changed

drivers/net/ethernet/meta/fbnic/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ obj-$(CONFIG_FBNIC) += fbnic.o
99

1010
fbnic-y := fbnic_devlink.o \
1111
fbnic_irq.o \
12+
fbnic_mac.o \
1213
fbnic_pci.o

drivers/net/ethernet/meta/fbnic/fbnic.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@
44
#ifndef _FBNIC_H_
55
#define _FBNIC_H_
66

7+
#include <linux/io.h>
8+
79
#include "fbnic_csr.h"
10+
#include "fbnic_mac.h"
811

912
struct fbnic_dev {
1013
struct device *dev;
1114

1215
u32 __iomem *uc_addr0;
1316
u32 __iomem *uc_addr4;
17+
const struct fbnic_mac *mac;
1418
unsigned short num_irqs;
1519

1620
u64 dsn;
21+
u32 mps;
22+
u32 readrq;
1723
};
1824

1925
/* Reserve entry 0 in the MSI-X "others" array until we have filled all
@@ -25,6 +31,41 @@ enum {
2531
FBNIC_NON_NAPI_VECTORS
2632
};
2733

34+
static inline bool fbnic_present(struct fbnic_dev *fbd)
35+
{
36+
return !!READ_ONCE(fbd->uc_addr0);
37+
}
38+
39+
static inline void fbnic_wr32(struct fbnic_dev *fbd, u32 reg, u32 val)
40+
{
41+
u32 __iomem *csr = READ_ONCE(fbd->uc_addr0);
42+
43+
if (csr)
44+
writel(val, csr + reg);
45+
}
46+
47+
u32 fbnic_rd32(struct fbnic_dev *fbd, u32 reg);
48+
49+
static inline void fbnic_wrfl(struct fbnic_dev *fbd)
50+
{
51+
fbnic_rd32(fbd, FBNIC_MASTER_SPARE_0);
52+
}
53+
54+
static inline void
55+
fbnic_rmw32(struct fbnic_dev *fbd, u32 reg, u32 mask, u32 val)
56+
{
57+
u32 v;
58+
59+
v = fbnic_rd32(fbd, reg);
60+
v &= ~mask;
61+
v |= val;
62+
fbnic_wr32(fbd, reg, v);
63+
}
64+
65+
#define wr32(_f, _r, _v) fbnic_wr32(_f, _r, _v)
66+
#define rd32(_f, _r) fbnic_rd32(_f, _r)
67+
#define wrfl(_f) fbnic_wrfl(_f)
68+
2869
extern char fbnic_driver_name[];
2970

3071
void fbnic_devlink_free(struct fbnic_dev *fbd);

drivers/net/ethernet/meta/fbnic/fbnic_csr.h

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,318 @@
44
#ifndef _FBNIC_CSR_H_
55
#define _FBNIC_CSR_H_
66

7+
#include <linux/bitops.h>
8+
9+
#define CSR_BIT(nr) (1u << (nr))
10+
#define CSR_GENMASK(h, l) GENMASK(h, l)
11+
712
#define PCI_DEVICE_ID_META_FBNIC_ASIC 0x0013
813

14+
#define FBNIC_CLOCK_FREQ (600 * (1000 * 1000))
15+
16+
/* Global QM Tx registers */
17+
#define FBNIC_CSR_START_QM_TX 0x00800 /* CSR section delimiter */
18+
#define FBNIC_QM_TWQ_DEFAULT_META_L 0x00818 /* 0x02060 */
19+
#define FBNIC_QM_TWQ_DEFAULT_META_H 0x00819 /* 0x02064 */
20+
21+
#define FBNIC_QM_TQS_CTL0 0x0081b /* 0x0206c */
22+
#define FBNIC_QM_TQS_CTL0_LSO_TS_MASK CSR_BIT(0)
23+
enum {
24+
FBNIC_QM_TQS_CTL0_LSO_TS_FIRST = 0,
25+
FBNIC_QM_TQS_CTL0_LSO_TS_LAST = 1,
26+
};
27+
28+
#define FBNIC_QM_TQS_CTL0_PREFETCH_THRESH CSR_GENMASK(7, 1)
29+
enum {
30+
FBNIC_QM_TQS_CTL0_PREFETCH_THRESH_MIN = 16,
31+
};
32+
33+
#define FBNIC_QM_TQS_CTL1 0x0081c /* 0x02070 */
34+
#define FBNIC_QM_TQS_CTL1_MC_MAX_CREDITS CSR_GENMASK(7, 0)
35+
#define FBNIC_QM_TQS_CTL1_BULK_MAX_CREDITS CSR_GENMASK(15, 8)
36+
#define FBNIC_QM_TQS_MTU_CTL0 0x0081d /* 0x02074 */
37+
#define FBNIC_QM_TQS_MTU_CTL1 0x0081e /* 0x02078 */
38+
#define FBNIC_QM_TQS_MTU_CTL1_BULK CSR_GENMASK(13, 0)
39+
#define FBNIC_QM_TCQ_CTL0 0x0082d /* 0x020b4 */
40+
#define FBNIC_QM_TCQ_CTL0_COAL_WAIT CSR_GENMASK(15, 0)
41+
#define FBNIC_QM_TCQ_CTL0_TICK_CYCLES CSR_GENMASK(26, 16)
42+
#define FBNIC_QM_TQS_EDT_TS_RANGE 0x00849 /* 0x2124 */
43+
#define FBNIC_QM_TNI_TDF_CTL 0x0086c /* 0x021b0 */
44+
#define FBNIC_QM_TNI_TDF_CTL_MRRS CSR_GENMASK(1, 0)
45+
#define FBNIC_QM_TNI_TDF_CTL_CLS CSR_GENMASK(3, 2)
46+
#define FBNIC_QM_TNI_TDF_CTL_MAX_OT CSR_GENMASK(11, 4)
47+
#define FBNIC_QM_TNI_TDF_CTL_MAX_OB CSR_GENMASK(23, 12)
48+
#define FBNIC_QM_TNI_TDE_CTL 0x0086d /* 0x021b4 */
49+
#define FBNIC_QM_TNI_TDE_CTL_MRRS CSR_GENMASK(1, 0)
50+
#define FBNIC_QM_TNI_TDE_CTL_CLS CSR_GENMASK(3, 2)
51+
#define FBNIC_QM_TNI_TDE_CTL_MAX_OT CSR_GENMASK(11, 4)
52+
#define FBNIC_QM_TNI_TDE_CTL_MAX_OB CSR_GENMASK(24, 12)
53+
#define FBNIC_QM_TNI_TDE_CTL_MRRS_1K CSR_BIT(25)
54+
#define FBNIC_QM_TNI_TCM_CTL 0x0086e /* 0x021b8 */
55+
#define FBNIC_QM_TNI_TCM_CTL_MPS CSR_GENMASK(1, 0)
56+
#define FBNIC_QM_TNI_TCM_CTL_CLS CSR_GENMASK(3, 2)
57+
#define FBNIC_QM_TNI_TCM_CTL_MAX_OT CSR_GENMASK(11, 4)
58+
#define FBNIC_QM_TNI_TCM_CTL_MAX_OB CSR_GENMASK(23, 12)
59+
#define FBNIC_CSR_END_QM_TX 0x00873 /* CSR section delimiter */
60+
61+
/* Global QM Rx registers */
62+
#define FBNIC_CSR_START_QM_RX 0x00c00 /* CSR section delimiter */
63+
#define FBNIC_QM_RCQ_CTL0 0x00c0c /* 0x03030 */
64+
#define FBNIC_QM_RCQ_CTL0_COAL_WAIT CSR_GENMASK(15, 0)
65+
#define FBNIC_QM_RCQ_CTL0_TICK_CYCLES CSR_GENMASK(26, 16)
66+
#define FBNIC_QM_RNI_RBP_CTL 0x00c2d /* 0x030b4 */
67+
#define FBNIC_QM_RNI_RBP_CTL_MRRS CSR_GENMASK(1, 0)
68+
#define FBNIC_QM_RNI_RBP_CTL_CLS CSR_GENMASK(3, 2)
69+
#define FBNIC_QM_RNI_RBP_CTL_MAX_OT CSR_GENMASK(11, 4)
70+
#define FBNIC_QM_RNI_RBP_CTL_MAX_OB CSR_GENMASK(23, 12)
71+
#define FBNIC_QM_RNI_RDE_CTL 0x00c2e /* 0x030b8 */
72+
#define FBNIC_QM_RNI_RDE_CTL_MPS CSR_GENMASK(1, 0)
73+
#define FBNIC_QM_RNI_RDE_CTL_CLS CSR_GENMASK(3, 2)
74+
#define FBNIC_QM_RNI_RDE_CTL_MAX_OT CSR_GENMASK(11, 4)
75+
#define FBNIC_QM_RNI_RDE_CTL_MAX_OB CSR_GENMASK(23, 12)
76+
#define FBNIC_QM_RNI_RCM_CTL 0x00c2f /* 0x030bc */
77+
#define FBNIC_QM_RNI_RCM_CTL_MPS CSR_GENMASK(1, 0)
78+
#define FBNIC_QM_RNI_RCM_CTL_CLS CSR_GENMASK(3, 2)
79+
#define FBNIC_QM_RNI_RCM_CTL_MAX_OT CSR_GENMASK(11, 4)
80+
#define FBNIC_QM_RNI_RCM_CTL_MAX_OB CSR_GENMASK(23, 12)
81+
#define FBNIC_CSR_END_QM_RX 0x00c34 /* CSR section delimiter */
82+
83+
/* TCE registers */
84+
#define FBNIC_CSR_START_TCE 0x04000 /* CSR section delimiter */
85+
#define FBNIC_TCE_REG_BASE 0x04000 /* 0x10000 */
86+
87+
#define FBNIC_TCE_LSO_CTRL 0x04000 /* 0x10000 */
88+
#define FBNIC_TCE_LSO_CTRL_TCPF_CLR_1ST CSR_GENMASK(8, 0)
89+
#define FBNIC_TCE_LSO_CTRL_TCPF_CLR_MID CSR_GENMASK(17, 9)
90+
#define FBNIC_TCE_LSO_CTRL_TCPF_CLR_END CSR_GENMASK(26, 18)
91+
#define FBNIC_TCE_LSO_CTRL_IPID_MODE_INC CSR_BIT(27)
92+
93+
#define FBNIC_TCE_CSO_CTRL 0x04001 /* 0x10004 */
94+
#define FBNIC_TCE_CSO_CTRL_TCP_ZERO_CSUM CSR_BIT(0)
95+
96+
#define FBNIC_TCE_TXB_CTRL 0x04002 /* 0x10008 */
97+
#define FBNIC_TCE_TXB_CTRL_LOAD CSR_BIT(0)
98+
#define FBNIC_TCE_TXB_CTRL_TCAM_ENABLE CSR_BIT(1)
99+
#define FBNIC_TCE_TXB_CTRL_DISABLE CSR_BIT(2)
100+
101+
#define FBNIC_TCE_TXB_ENQ_WRR_CTRL 0x04003 /* 0x1000c */
102+
#define FBNIC_TCE_TXB_ENQ_WRR_CTRL_WEIGHT0 CSR_GENMASK(7, 0)
103+
#define FBNIC_TCE_TXB_ENQ_WRR_CTRL_WEIGHT1 CSR_GENMASK(15, 8)
104+
#define FBNIC_TCE_TXB_ENQ_WRR_CTRL_WEIGHT2 CSR_GENMASK(23, 16)
105+
106+
#define FBNIC_TCE_TXB_TEI_Q0_CTRL 0x04004 /* 0x10010 */
107+
#define FBNIC_TCE_TXB_TEI_Q1_CTRL 0x04005 /* 0x10014 */
108+
#define FBNIC_TCE_TXB_MC_Q_CTRL 0x04006 /* 0x10018 */
109+
#define FBNIC_TCE_TXB_RX_TEI_Q_CTRL 0x04007 /* 0x1001c */
110+
#define FBNIC_TCE_TXB_RX_BMC_Q_CTRL 0x04008 /* 0x10020 */
111+
#define FBNIC_TCE_TXB_Q_CTRL_START CSR_GENMASK(10, 0)
112+
#define FBNIC_TCE_TXB_Q_CTRL_SIZE CSR_GENMASK(22, 11)
113+
114+
#define FBNIC_TCE_TXB_TEI_DWRR_CTRL 0x04009 /* 0x10024 */
115+
#define FBNIC_TCE_TXB_TEI_DWRR_CTRL_QUANTUM0 CSR_GENMASK(7, 0)
116+
#define FBNIC_TCE_TXB_TEI_DWRR_CTRL_QUANTUM1 CSR_GENMASK(15, 8)
117+
#define FBNIC_TCE_TXB_NTWRK_DWRR_CTRL 0x0400a /* 0x10028 */
118+
#define FBNIC_TCE_TXB_NTWRK_DWRR_CTRL_QUANTUM0 CSR_GENMASK(7, 0)
119+
#define FBNIC_TCE_TXB_NTWRK_DWRR_CTRL_QUANTUM1 CSR_GENMASK(15, 8)
120+
#define FBNIC_TCE_TXB_NTWRK_DWRR_CTRL_QUANTUM2 CSR_GENMASK(23, 16)
121+
122+
#define FBNIC_TCE_TXB_CLDR_CFG 0x0400b /* 0x1002c */
123+
#define FBNIC_TCE_TXB_CLDR_CFG_NUM_SLOT CSR_GENMASK(5, 0)
124+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG(n) (0x0400c + (n)) /* 0x10030 + 4*n */
125+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_CNT 16
126+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_0_0 CSR_GENMASK(1, 0)
127+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_0_1 CSR_GENMASK(3, 2)
128+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_0_2 CSR_GENMASK(5, 4)
129+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_0_3 CSR_GENMASK(7, 6)
130+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_1_0 CSR_GENMASK(9, 8)
131+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_1_1 CSR_GENMASK(11, 10)
132+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_1_2 CSR_GENMASK(13, 12)
133+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_1_3 CSR_GENMASK(15, 14)
134+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_2_0 CSR_GENMASK(17, 16)
135+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_2_1 CSR_GENMASK(19, 18)
136+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_2_2 CSR_GENMASK(21, 20)
137+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_2_3 CSR_GENMASK(23, 22)
138+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_3_0 CSR_GENMASK(25, 24)
139+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_3_1 CSR_GENMASK(27, 26)
140+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_3_2 CSR_GENMASK(29, 28)
141+
#define FBNIC_TCE_TXB_CLDR_SLOT_CFG_DEST_ID_3_3 CSR_GENMASK(31, 30)
142+
143+
#define FBNIC_TCE_BMC_MAX_PKTSZ 0x0403a /* 0x100e8 */
144+
#define FBNIC_TCE_BMC_MAX_PKTSZ_TX CSR_GENMASK(13, 0)
145+
#define FBNIC_TCE_BMC_MAX_PKTSZ_RX CSR_GENMASK(27, 14)
146+
#define FBNIC_TCE_MC_MAX_PKTSZ 0x0403b /* 0x100ec */
147+
#define FBNIC_TCE_MC_MAX_PKTSZ_TMI CSR_GENMASK(13, 0)
148+
149+
#define FBNIC_TCE_SOP_PROT_CTRL 0x0403c /* 0x100f0 */
150+
#define FBNIC_TCE_SOP_PROT_CTRL_TBI CSR_GENMASK(7, 0)
151+
#define FBNIC_TCE_SOP_PROT_CTRL_TTI_FRM CSR_GENMASK(14, 8)
152+
#define FBNIC_TCE_SOP_PROT_CTRL_TTI_CM CSR_GENMASK(18, 15)
153+
154+
#define FBNIC_TCE_DROP_CTRL 0x0403d /* 0x100f4 */
155+
#define FBNIC_TCE_DROP_CTRL_TTI_CM_DROP_EN CSR_BIT(0)
156+
#define FBNIC_TCE_DROP_CTRL_TTI_FRM_DROP_EN CSR_BIT(1)
157+
#define FBNIC_TCE_DROP_CTRL_TTI_TBI_DROP_EN CSR_BIT(2)
158+
159+
#define FBNIC_TCE_TXB_TX_BMC_Q_CTRL 0x0404B /* 0x1012c */
160+
#define FBNIC_TCE_TXB_BMC_DWRR_CTRL 0x0404C /* 0x10130 */
161+
#define FBNIC_TCE_TXB_BMC_DWRR_CTRL_QUANTUM0 CSR_GENMASK(7, 0)
162+
#define FBNIC_TCE_TXB_BMC_DWRR_CTRL_QUANTUM1 CSR_GENMASK(15, 8)
163+
#define FBNIC_TCE_TXB_TEI_DWRR_CTRL_EXT 0x0404D /* 0x10134 */
164+
#define FBNIC_TCE_TXB_NTWRK_DWRR_CTRL_EXT \
165+
0x0404E /* 0x10138 */
166+
#define FBNIC_TCE_TXB_BMC_DWRR_CTRL_EXT 0x0404F /* 0x1013c */
167+
#define FBNIC_CSR_END_TCE 0x04050 /* CSR section delimiter */
168+
169+
/* TMI registers */
170+
#define FBNIC_CSR_START_TMI 0x04400 /* CSR section delimiter */
171+
#define FBNIC_TMI_SOP_PROT_CTRL 0x04400 /* 0x11000 */
172+
#define FBNIC_CSR_END_TMI 0x0443f /* CSR section delimiter */
173+
/* Rx Buffer Registers */
174+
#define FBNIC_CSR_START_RXB 0x08000 /* CSR section delimiter */
175+
enum {
176+
FBNIC_RXB_FIFO_MC = 0,
177+
/* Unused */
178+
/* Unused */
179+
FBNIC_RXB_FIFO_NET_TO_BMC = 3,
180+
FBNIC_RXB_FIFO_HOST = 4,
181+
/* Unused */
182+
FBNIC_RXB_FIFO_BMC_TO_HOST = 6,
183+
/* Unused */
184+
FBNIC_RXB_FIFO_INDICES = 8
185+
};
186+
187+
#define FBNIC_RXB_CT_SIZE(n) (0x08000 + (n)) /* 0x20000 + 4*n */
188+
#define FBNIC_RXB_CT_SIZE_CNT 8
189+
#define FBNIC_RXB_CT_SIZE_HEADER CSR_GENMASK(5, 0)
190+
#define FBNIC_RXB_CT_SIZE_PAYLOAD CSR_GENMASK(11, 6)
191+
#define FBNIC_RXB_CT_SIZE_ENABLE CSR_BIT(12)
192+
#define FBNIC_RXB_PAUSE_DROP_CTRL 0x08008 /* 0x20020 */
193+
#define FBNIC_RXB_PAUSE_DROP_CTRL_DROP_ENABLE CSR_GENMASK(7, 0)
194+
#define FBNIC_RXB_PAUSE_DROP_CTRL_PAUSE_ENABLE CSR_GENMASK(15, 8)
195+
#define FBNIC_RXB_PAUSE_DROP_CTRL_ECN_ENABLE CSR_GENMASK(23, 16)
196+
#define FBNIC_RXB_PAUSE_DROP_CTRL_PS_ENABLE CSR_GENMASK(27, 24)
197+
#define FBNIC_RXB_PAUSE_THLD(n) (0x08009 + (n)) /* 0x20024 + 4*n */
198+
#define FBNIC_RXB_PAUSE_THLD_CNT 8
199+
#define FBNIC_RXB_PAUSE_THLD_ON CSR_GENMASK(12, 0)
200+
#define FBNIC_RXB_PAUSE_THLD_OFF CSR_GENMASK(25, 13)
201+
#define FBNIC_RXB_DROP_THLD(n) (0x08011 + (n)) /* 0x20044 + 4*n */
202+
#define FBNIC_RXB_DROP_THLD_CNT 8
203+
#define FBNIC_RXB_DROP_THLD_ON CSR_GENMASK(12, 0)
204+
#define FBNIC_RXB_DROP_THLD_OFF CSR_GENMASK(25, 13)
205+
#define FBNIC_RXB_ECN_THLD(n) (0x0801e + (n)) /* 0x20078 + 4*n */
206+
#define FBNIC_RXB_ECN_THLD_CNT 8
207+
#define FBNIC_RXB_ECN_THLD_ON CSR_GENMASK(12, 0)
208+
#define FBNIC_RXB_ECN_THLD_OFF CSR_GENMASK(25, 13)
209+
#define FBNIC_RXB_PBUF_CFG(n) (0x08027 + (n)) /* 0x2009c + 4*n */
210+
#define FBNIC_RXB_PBUF_CFG_CNT 8
211+
#define FBNIC_RXB_PBUF_BASE_ADDR CSR_GENMASK(12, 0)
212+
#define FBNIC_RXB_PBUF_SIZE CSR_GENMASK(21, 13)
213+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0 0x0802f /* 0x200bc */
214+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0_QUANTUM0 CSR_GENMASK(7, 0)
215+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0_QUANTUM1 CSR_GENMASK(15, 8)
216+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0_QUANTUM2 CSR_GENMASK(23, 16)
217+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0_QUANTUM3 CSR_GENMASK(31, 24)
218+
#define FBNIC_RXB_DWRR_RDE_WEIGHT1 0x08030 /* 0x200c0 */
219+
#define FBNIC_RXB_DWRR_RDE_WEIGHT1_QUANTUM4 CSR_GENMASK(7, 0)
220+
#define FBNIC_RXB_DWRR_BMC_WEIGHT 0x08031 /* 0x200c4 */
221+
#define FBNIC_RXB_CLDR_PRIO_CFG(n) (0x8034 + (n)) /* 0x200d0 + 4*n */
222+
#define FBNIC_RXB_CLDR_PRIO_CFG_CNT 16
223+
#define FBNIC_RXB_ENDIAN_FCS 0x08044 /* 0x20110 */
224+
enum {
225+
/* Unused */
226+
/* Unused */
227+
FBNIC_RXB_DEQUEUE_BMC = 2,
228+
FBNIC_RXB_DEQUEUE_HOST = 3,
229+
FBNIC_RXB_DEQUEUE_INDICES = 4
230+
};
231+
232+
#define FBNIC_RXB_PBUF_CREDIT(n) (0x08047 + (n)) /* 0x2011C + 4*n */
233+
#define FBNIC_RXB_PBUF_CREDIT_CNT 8
234+
#define FBNIC_RXB_PBUF_CREDIT_MASK CSR_GENMASK(13, 0)
235+
#define FBNIC_RXB_INTF_CREDIT 0x0804f /* 0x2013C */
236+
#define FBNIC_RXB_INTF_CREDIT_MASK0 CSR_GENMASK(3, 0)
237+
#define FBNIC_RXB_INTF_CREDIT_MASK1 CSR_GENMASK(7, 4)
238+
#define FBNIC_RXB_INTF_CREDIT_MASK2 CSR_GENMASK(11, 8)
239+
#define FBNIC_RXB_INTF_CREDIT_MASK3 CSR_GENMASK(15, 12)
240+
241+
#define FBNIC_RXB_PAUSE_EVENT_CNT(n) (0x08053 + (n)) /* 0x2014c + 4*n */
242+
#define FBNIC_RXB_DROP_FRMS_STS(n) (0x08057 + (n)) /* 0x2015c + 4*n */
243+
#define FBNIC_RXB_DROP_BYTES_STS_L(n) \
244+
(0x08080 + 2 * (n)) /* 0x20200 + 8*n */
245+
#define FBNIC_RXB_DROP_BYTES_STS_H(n) \
246+
(0x08081 + 2 * (n)) /* 0x20204 + 8*n */
247+
#define FBNIC_RXB_TRUN_FRMS_STS(n) (0x08091 + (n)) /* 0x20244 + 4*n */
248+
#define FBNIC_RXB_TRUN_BYTES_STS_L(n) \
249+
(0x080c0 + 2 * (n)) /* 0x20300 + 8*n */
250+
#define FBNIC_RXB_TRUN_BYTES_STS_H(n) \
251+
(0x080c1 + 2 * (n)) /* 0x20304 + 8*n */
252+
#define FBNIC_RXB_TRANS_PAUSE_STS(n) (0x080d1 + (n)) /* 0x20344 + 4*n */
253+
#define FBNIC_RXB_TRANS_DROP_STS(n) (0x080d9 + (n)) /* 0x20364 + 4*n */
254+
#define FBNIC_RXB_TRANS_ECN_STS(n) (0x080e1 + (n)) /* 0x20384 + 4*n */
255+
enum {
256+
FBNIC_RXB_ENQUEUE_NET = 0,
257+
FBNIC_RXB_ENQUEUE_BMC = 1,
258+
/* Unused */
259+
/* Unused */
260+
FBNIC_RXB_ENQUEUE_INDICES = 4
261+
};
262+
263+
#define FBNIC_RXB_DRBO_FRM_CNT_SRC(n) (0x080f9 + (n)) /* 0x203e4 + 4*n */
264+
#define FBNIC_RXB_DRBO_BYTE_CNT_SRC_L(n) \
265+
(0x080fd + (n)) /* 0x203f4 + 4*n */
266+
#define FBNIC_RXB_DRBO_BYTE_CNT_SRC_H(n) \
267+
(0x08101 + (n)) /* 0x20404 + 4*n */
268+
#define FBNIC_RXB_INTF_FRM_CNT_DST(n) (0x08105 + (n)) /* 0x20414 + 4*n */
269+
#define FBNIC_RXB_INTF_BYTE_CNT_DST_L(n) \
270+
(0x08109 + (n)) /* 0x20424 + 4*n */
271+
#define FBNIC_RXB_INTF_BYTE_CNT_DST_H(n) \
272+
(0x0810d + (n)) /* 0x20434 + 4*n */
273+
#define FBNIC_RXB_PBUF_FRM_CNT_DST(n) (0x08111 + (n)) /* 0x20444 + 4*n */
274+
#define FBNIC_RXB_PBUF_BYTE_CNT_DST_L(n) \
275+
(0x08115 + (n)) /* 0x20454 + 4*n */
276+
#define FBNIC_RXB_PBUF_BYTE_CNT_DST_H(n) \
277+
(0x08119 + (n)) /* 0x20464 + 4*n */
278+
279+
#define FBNIC_RXB_PBUF_FIFO_LEVEL(n) (0x0811d + (n)) /* 0x20474 + 4*n */
280+
281+
#define FBNIC_RXB_INTEGRITY_ERR(n) (0x0812f + (n)) /* 0x204bc + 4*n */
282+
#define FBNIC_RXB_MAC_ERR(n) (0x08133 + (n)) /* 0x204cc + 4*n */
283+
#define FBNIC_RXB_PARSER_ERR(n) (0x08137 + (n)) /* 0x204dc + 4*n */
284+
#define FBNIC_RXB_FRM_ERR(n) (0x0813b + (n)) /* 0x204ec + 4*n */
285+
286+
#define FBNIC_RXB_DWRR_RDE_WEIGHT0_EXT 0x08143 /* 0x2050c */
287+
#define FBNIC_RXB_DWRR_RDE_WEIGHT1_EXT 0x08144 /* 0x20510 */
288+
#define FBNIC_CSR_END_RXB 0x081b1 /* CSR section delimiter */
289+
290+
/* Rx Parser and Classifier Registers */
291+
#define FBNIC_CSR_START_RPC 0x08400 /* CSR section delimiter */
292+
#define FBNIC_RPC_RMI_CONFIG 0x08400 /* 0x21000 */
293+
#define FBNIC_RPC_RMI_CONFIG_OH_BYTES CSR_GENMASK(4, 0)
294+
#define FBNIC_RPC_RMI_CONFIG_FCS_PRESENT CSR_BIT(8)
295+
#define FBNIC_RPC_RMI_CONFIG_ENABLE CSR_BIT(12)
296+
#define FBNIC_RPC_RMI_CONFIG_MTU CSR_GENMASK(31, 16)
297+
#define FBNIC_CSR_END_RPC 0x0856b /* CSR section delimiter */
298+
299+
/* Fab Registers */
300+
#define FBNIC_CSR_START_FAB 0x0C000 /* CSR section delimiter */
301+
#define FBNIC_FAB_AXI4_AR_SPACER_2_CFG 0x0C005 /* 0x30014 */
302+
#define FBNIC_FAB_AXI4_AR_SPACER_MASK CSR_BIT(16)
303+
#define FBNIC_FAB_AXI4_AR_SPACER_THREADSHOLD CSR_GENMASK(15, 0)
304+
#define FBNIC_CSR_END_FAB 0x0C020 /* CSR section delimiter */
305+
306+
/* Master Registers */
307+
#define FBNIC_CSR_START_MASTER 0x0C400 /* CSR section delimiter */
308+
#define FBNIC_MASTER_SPARE_0 0x0C41B /* 0x3106c */
309+
#define FBNIC_CSR_END_MASTER 0x0C452 /* CSR section delimiter */
310+
311+
/* PUL User Registers */
312+
#define FBNIC_CSR_START_PUL_USER 0x31000 /* CSR section delimiter */
313+
#define FBNIC_PUL_OB_TLP_HDR_AW_CFG 0x3103d /* 0xc40f4 */
314+
#define FBNIC_PUL_OB_TLP_HDR_AW_CFG_BME CSR_BIT(18)
315+
#define FBNIC_PUL_OB_TLP_HDR_AR_CFG 0x3103e /* 0xc40f8 */
316+
#define FBNIC_PUL_OB_TLP_HDR_AR_CFG_BME CSR_BIT(18)
317+
#define FBNIC_CSR_END_PUL_USER 0x31080 /* CSR section delimiter */
318+
319+
#define FBNIC_MAX_QUEUES 128
320+
9321
#endif /* _FBNIC_CSR_H_ */

drivers/net/ethernet/meta/fbnic/fbnic_devlink.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ struct fbnic_dev *fbnic_devlink_alloc(struct pci_dev *pdev)
6565
fbd->uc_addr4 = iomap_table[4];
6666

6767
fbd->dsn = pci_get_dsn(pdev);
68+
fbd->mps = pcie_get_mps(pdev);
69+
fbd->readrq = pcie_get_readrq(pdev);
6870

6971
return fbd;
7072
}

0 commit comments

Comments
 (0)