Skip to content

Commit db8cd7c

Browse files
chelsiocudbgdavem330
authored andcommitted
cxgb4: collect PBT tables dump
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com> Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent b289593 commit db8cd7c

File tree

5 files changed

+91
-0
lines changed

5 files changed

+91
-0
lines changed

drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,21 @@ struct cudbg_ulptx_la {
145145
u32 rd_data[CUDBG_NUM_ULPTX][CUDBG_NUM_ULPTX_READ];
146146
};
147147

148+
#define CUDBG_CHAC_PBT_ADDR 0x2800
149+
#define CUDBG_CHAC_PBT_LRF 0x3000
150+
#define CUDBG_CHAC_PBT_DATA 0x3800
151+
#define CUDBG_PBT_DYNAMIC_ENTRIES 8
152+
#define CUDBG_PBT_STATIC_ENTRIES 16
153+
#define CUDBG_LRF_ENTRIES 8
154+
#define CUDBG_PBT_DATA_ENTRIES 512
155+
156+
struct cudbg_pbt_tables {
157+
u32 pbt_dynamic[CUDBG_PBT_DYNAMIC_ENTRIES];
158+
u32 pbt_static[CUDBG_PBT_STATIC_ENTRIES];
159+
u32 lrf_table[CUDBG_LRF_ENTRIES];
160+
u32 pbt_data[CUDBG_PBT_DATA_ENTRIES];
161+
};
162+
148163
#define IREG_NUM_ELEM 4
149164

150165
static const u32 t6_tp_pio_array[][IREG_NUM_ELEM] = {

drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ enum cudbg_dbg_entity_type {
6262
CUDBG_MA_INDIRECT = 61,
6363
CUDBG_ULPTX_LA = 62,
6464
CUDBG_UP_CIM_INDIRECT = 64,
65+
CUDBG_PBT_TABLE = 65,
6566
CUDBG_MBOX_LOG = 66,
6667
CUDBG_HMA_INDIRECT = 67,
6768
CUDBG_MAX_ENTITY = 70,

drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,74 @@ int cudbg_collect_up_cim_indirect(struct cudbg_init *pdbg_init,
13101310
return rc;
13111311
}
13121312

1313+
int cudbg_collect_pbt_tables(struct cudbg_init *pdbg_init,
1314+
struct cudbg_buffer *dbg_buff,
1315+
struct cudbg_error *cudbg_err)
1316+
{
1317+
struct adapter *padap = pdbg_init->adap;
1318+
struct cudbg_buffer temp_buff = { 0 };
1319+
struct cudbg_pbt_tables *pbt;
1320+
int i, rc;
1321+
u32 addr;
1322+
1323+
rc = cudbg_get_buff(dbg_buff, sizeof(struct cudbg_pbt_tables),
1324+
&temp_buff);
1325+
if (rc)
1326+
return rc;
1327+
1328+
pbt = (struct cudbg_pbt_tables *)temp_buff.data;
1329+
/* PBT dynamic entries */
1330+
addr = CUDBG_CHAC_PBT_ADDR;
1331+
for (i = 0; i < CUDBG_PBT_DYNAMIC_ENTRIES; i++) {
1332+
rc = t4_cim_read(padap, addr + (i * 4), 1,
1333+
&pbt->pbt_dynamic[i]);
1334+
if (rc) {
1335+
cudbg_err->sys_err = rc;
1336+
cudbg_put_buff(&temp_buff, dbg_buff);
1337+
return rc;
1338+
}
1339+
}
1340+
1341+
/* PBT static entries */
1342+
/* static entries start when bit 6 is set */
1343+
addr = CUDBG_CHAC_PBT_ADDR + (1 << 6);
1344+
for (i = 0; i < CUDBG_PBT_STATIC_ENTRIES; i++) {
1345+
rc = t4_cim_read(padap, addr + (i * 4), 1,
1346+
&pbt->pbt_static[i]);
1347+
if (rc) {
1348+
cudbg_err->sys_err = rc;
1349+
cudbg_put_buff(&temp_buff, dbg_buff);
1350+
return rc;
1351+
}
1352+
}
1353+
1354+
/* LRF entries */
1355+
addr = CUDBG_CHAC_PBT_LRF;
1356+
for (i = 0; i < CUDBG_LRF_ENTRIES; i++) {
1357+
rc = t4_cim_read(padap, addr + (i * 4), 1,
1358+
&pbt->lrf_table[i]);
1359+
if (rc) {
1360+
cudbg_err->sys_err = rc;
1361+
cudbg_put_buff(&temp_buff, dbg_buff);
1362+
return rc;
1363+
}
1364+
}
1365+
1366+
/* PBT data entries */
1367+
addr = CUDBG_CHAC_PBT_DATA;
1368+
for (i = 0; i < CUDBG_PBT_DATA_ENTRIES; i++) {
1369+
rc = t4_cim_read(padap, addr + (i * 4), 1,
1370+
&pbt->pbt_data[i]);
1371+
if (rc) {
1372+
cudbg_err->sys_err = rc;
1373+
cudbg_put_buff(&temp_buff, dbg_buff);
1374+
return rc;
1375+
}
1376+
}
1377+
cudbg_write_and_release_buff(&temp_buff, dbg_buff);
1378+
return rc;
1379+
}
1380+
13131381
int cudbg_collect_mbox_log(struct cudbg_init *pdbg_init,
13141382
struct cudbg_buffer *dbg_buff,
13151383
struct cudbg_error *cudbg_err)

drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ int cudbg_collect_ulptx_la(struct cudbg_init *pdbg_init,
123123
int cudbg_collect_up_cim_indirect(struct cudbg_init *pdbg_init,
124124
struct cudbg_buffer *dbg_buff,
125125
struct cudbg_error *cudbg_err);
126+
int cudbg_collect_pbt_tables(struct cudbg_init *pdbg_init,
127+
struct cudbg_buffer *dbg_buff,
128+
struct cudbg_error *cudbg_err);
126129
int cudbg_collect_mbox_log(struct cudbg_init *pdbg_init,
127130
struct cudbg_buffer *dbg_buff,
128131
struct cudbg_error *cudbg_err);

drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ static const struct cxgb4_collect_entity cxgb4_collect_hw_dump[] = {
6060
{ CUDBG_MA_INDIRECT, cudbg_collect_ma_indirect },
6161
{ CUDBG_ULPTX_LA, cudbg_collect_ulptx_la },
6262
{ CUDBG_UP_CIM_INDIRECT, cudbg_collect_up_cim_indirect },
63+
{ CUDBG_PBT_TABLE, cudbg_collect_pbt_tables },
6364
{ CUDBG_HMA_INDIRECT, cudbg_collect_hma_indirect },
6465
};
6566

@@ -215,6 +216,9 @@ static u32 cxgb4_get_entity_length(struct adapter *adap, u32 entity)
215216
n = sizeof(t5_up_cim_reg_array) / (IREG_NUM_ELEM * sizeof(u32));
216217
len = sizeof(struct ireg_buf) * n;
217218
break;
219+
case CUDBG_PBT_TABLE:
220+
len = sizeof(struct cudbg_pbt_tables);
221+
break;
218222
case CUDBG_MBOX_LOG:
219223
len = sizeof(struct cudbg_mbox_log) * adap->mbox_log->size;
220224
break;

0 commit comments

Comments
 (0)