mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-06 05:44:20 +08:00
Merge branch 'octeontx2-debugfs-updates'
Rakesh Babu Saladi says: ==================== RVU Debugfs updates. Patch 1: Few minor changes such as spelling mistakes, deleting unwanted characters, etc. Patch 2: Add debugfs dump for lmtst map table Patch 3: Add channel and channel mask in debugfs. Changes made from v2 to v3: 1. In patch 1 moved few lines and submitted those changes as a different patch to net branch 2. Patch 2 is left unchanged. 3. Patch 3 is left unchanged. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b0e77fcc5d
@ -8,6 +8,8 @@
|
||||
#ifndef NPC_H
|
||||
#define NPC_H
|
||||
|
||||
#define NPC_KEX_CHAN_MASK 0xFFFULL
|
||||
|
||||
enum NPC_LID_E {
|
||||
NPC_LID_LA = 0,
|
||||
NPC_LID_LB,
|
||||
@ -591,6 +593,8 @@ struct rvu_npc_mcam_rule {
|
||||
u8 default_rule;
|
||||
bool enable;
|
||||
bool vfvlan_cfg;
|
||||
u16 chan;
|
||||
u16 chan_mask;
|
||||
};
|
||||
|
||||
#endif /* NPC_H */
|
||||
|
@ -95,7 +95,7 @@ static char *cgx_tx_stats_fields[] = {
|
||||
[CGX_STAT5] = "Total frames sent on the interface",
|
||||
[CGX_STAT6] = "Packets sent with an octet count < 64",
|
||||
[CGX_STAT7] = "Packets sent with an octet count == 64",
|
||||
[CGX_STAT8] = "Packets sent with an octet count of 65–127",
|
||||
[CGX_STAT8] = "Packets sent with an octet count of 65-127",
|
||||
[CGX_STAT9] = "Packets sent with an octet count of 128-255",
|
||||
[CGX_STAT10] = "Packets sent with an octet count of 256-511",
|
||||
[CGX_STAT11] = "Packets sent with an octet count of 512-1023",
|
||||
@ -125,7 +125,7 @@ static char *rpm_rx_stats_fields[] = {
|
||||
"Total frames received on interface",
|
||||
"Packets received with an octet count < 64",
|
||||
"Packets received with an octet count == 64",
|
||||
"Packets received with an octet count of 65â127",
|
||||
"Packets received with an octet count of 65-127",
|
||||
"Packets received with an octet count of 128-255",
|
||||
"Packets received with an octet count of 256-511",
|
||||
"Packets received with an octet count of 512-1023",
|
||||
@ -164,7 +164,7 @@ static char *rpm_tx_stats_fields[] = {
|
||||
"Packets sent to the multicast DMAC",
|
||||
"Packets sent to a broadcast DMAC",
|
||||
"Packets sent with an octet count == 64",
|
||||
"Packets sent with an octet count of 65â127",
|
||||
"Packets sent with an octet count of 65-127",
|
||||
"Packets sent with an octet count of 128-255",
|
||||
"Packets sent with an octet count of 256-511",
|
||||
"Packets sent with an octet count of 512-1023",
|
||||
@ -226,6 +226,96 @@ static const struct file_operations rvu_dbg_##name##_fops = { \
|
||||
|
||||
static void print_nix_qsize(struct seq_file *filp, struct rvu_pfvf *pfvf);
|
||||
|
||||
#define LMT_MAPTBL_ENTRY_SIZE 16
|
||||
/* Dump LMTST map table */
|
||||
static ssize_t rvu_dbg_lmtst_map_table_display(struct file *filp,
|
||||
char __user *buffer,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct rvu *rvu = filp->private_data;
|
||||
u64 lmt_addr, val, tbl_base;
|
||||
int pf, vf, num_vfs, hw_vfs;
|
||||
void __iomem *lmt_map_base;
|
||||
int index = 0, off = 0;
|
||||
int bytes_not_copied;
|
||||
int buf_size = 10240;
|
||||
char *buf;
|
||||
|
||||
/* don't allow partial reads */
|
||||
if (*ppos != 0)
|
||||
return 0;
|
||||
|
||||
buf = kzalloc(buf_size, GFP_KERNEL);
|
||||
if (!buf)
|
||||
return -ENOSPC;
|
||||
|
||||
tbl_base = rvu_read64(rvu, BLKADDR_APR, APR_AF_LMT_MAP_BASE);
|
||||
|
||||
lmt_map_base = ioremap_wc(tbl_base, 128 * 1024);
|
||||
if (!lmt_map_base) {
|
||||
dev_err(rvu->dev, "Failed to setup lmt map table mapping!!\n");
|
||||
kfree(buf);
|
||||
return false;
|
||||
}
|
||||
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
"\n\t\t\t\t\tLmtst Map Table Entries");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
"\n\t\t\t\t\t=======================");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, "\nPcifunc\t\t\t");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, "Table Index\t\t");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
"Lmtline Base (word 0)\t\t");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
"Lmt Map Entry (word 1)");
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, "\n");
|
||||
for (pf = 0; pf < rvu->hw->total_pfs; pf++) {
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, "PF%d \t\t\t",
|
||||
pf);
|
||||
|
||||
index = pf * rvu->hw->total_vfs * LMT_MAPTBL_ENTRY_SIZE;
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, " 0x%llx\t\t",
|
||||
(tbl_base + index));
|
||||
lmt_addr = readq(lmt_map_base + index);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
" 0x%016llx\t\t", lmt_addr);
|
||||
index += 8;
|
||||
val = readq(lmt_map_base + index);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, " 0x%016llx\n",
|
||||
val);
|
||||
/* Reading num of VFs per PF */
|
||||
rvu_get_pf_numvfs(rvu, pf, &num_vfs, &hw_vfs);
|
||||
for (vf = 0; vf < num_vfs; vf++) {
|
||||
index = (pf * rvu->hw->total_vfs * 16) +
|
||||
((vf + 1) * LMT_MAPTBL_ENTRY_SIZE);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
"PF%d:VF%d \t\t", pf, vf);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
" 0x%llx\t\t", (tbl_base + index));
|
||||
lmt_addr = readq(lmt_map_base + index);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
" 0x%016llx\t\t", lmt_addr);
|
||||
index += 8;
|
||||
val = readq(lmt_map_base + index);
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off,
|
||||
" 0x%016llx\n", val);
|
||||
}
|
||||
}
|
||||
off += scnprintf(&buf[off], buf_size - 1 - off, "\n");
|
||||
|
||||
bytes_not_copied = copy_to_user(buffer, buf, off);
|
||||
kfree(buf);
|
||||
|
||||
iounmap(lmt_map_base);
|
||||
if (bytes_not_copied)
|
||||
return -EFAULT;
|
||||
|
||||
*ppos = off;
|
||||
return off;
|
||||
}
|
||||
|
||||
RVU_DEBUG_FOPS(lmtst_map_table, lmtst_map_table_display, NULL);
|
||||
|
||||
/* Dumps current provisioning status of all RVU block LFs */
|
||||
static ssize_t rvu_dbg_rsrc_attach_status(struct file *filp,
|
||||
char __user *buffer,
|
||||
@ -1878,7 +1968,7 @@ static int cgx_print_stats(struct seq_file *s, int lmac_id)
|
||||
return -ENODEV;
|
||||
|
||||
mac_ops = get_mac_ops(cgxd);
|
||||
|
||||
/* There can be no CGX devices at all */
|
||||
if (!mac_ops)
|
||||
return 0;
|
||||
|
||||
@ -1956,13 +2046,13 @@ static int cgx_print_stats(struct seq_file *s, int lmac_id)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (is_rvu_otx2(rvu))
|
||||
seq_printf(s, "%s: %llu\n", cgx_tx_stats_fields[stat],
|
||||
tx_stat);
|
||||
else
|
||||
seq_printf(s, "%s: %llu\n", rpm_tx_stats_fields[stat],
|
||||
tx_stat);
|
||||
stat++;
|
||||
if (is_rvu_otx2(rvu))
|
||||
seq_printf(s, "%s: %llu\n", cgx_tx_stats_fields[stat],
|
||||
tx_stat);
|
||||
else
|
||||
seq_printf(s, "%s: %llu\n", rpm_tx_stats_fields[stat],
|
||||
tx_stat);
|
||||
stat++;
|
||||
}
|
||||
|
||||
return err;
|
||||
@ -2400,6 +2490,8 @@ static int rvu_dbg_npc_mcam_show_rules(struct seq_file *s, void *unused)
|
||||
seq_printf(s, "VF%d", vf);
|
||||
}
|
||||
seq_puts(s, "\n");
|
||||
seq_printf(s, "\tchannel: 0x%x\n", iter->chan);
|
||||
seq_printf(s, "\tchannel_mask: 0x%x\n", iter->chan_mask);
|
||||
}
|
||||
|
||||
rvu_dbg_npc_mcam_show_action(s, iter);
|
||||
@ -2672,6 +2764,10 @@ void rvu_dbg_init(struct rvu *rvu)
|
||||
debugfs_create_file("rsrc_alloc", 0444, rvu->rvu_dbg.root, rvu,
|
||||
&rvu_dbg_rsrc_status_fops);
|
||||
|
||||
if (!is_rvu_otx2(rvu))
|
||||
debugfs_create_file("lmtst_map_table", 0444, rvu->rvu_dbg.root,
|
||||
rvu, &rvu_dbg_lmtst_map_table_fops);
|
||||
|
||||
if (!cgx_get_cgxcnt_max())
|
||||
goto create;
|
||||
|
||||
|
@ -1119,6 +1119,9 @@ find_rule:
|
||||
rule->default_rule = req->default_rule;
|
||||
rule->owner = owner;
|
||||
rule->enable = enable;
|
||||
rule->chan_mask = write_req.entry_data.kw_mask[0] & NPC_KEX_CHAN_MASK;
|
||||
rule->chan = write_req.entry_data.kw[0] & NPC_KEX_CHAN_MASK;
|
||||
rule->chan &= rule->chan_mask;
|
||||
if (is_npc_intf_tx(req->intf))
|
||||
rule->intf = pfvf->nix_tx_intf;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user