drivers/net/ethernet/netronome/nfp/abm/ctrl.c
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/netronome/nfp/abm/ctrl.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/netronome/nfp/abm/ctrl.c- Extension
.c- Size
- 11159 bytes
- Lines
- 430
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitops.hlinux/kernel.hlinux/log2.h../nfpcore/nfp_cpp.h../nfpcore/nfp_nffw.h../nfp_app.h../nfp_abi.h../nfp_main.h../nfp_net.hmain.h
Detected Declarations
function nfp_abm_ctrl_statfunction __nfp_abm_ctrl_set_q_lvlfunction nfp_abm_ctrl_set_q_lvlfunction __nfp_abm_ctrl_set_q_actfunction nfp_abm_ctrl_set_q_actfunction nfp_abm_ctrl_stat_non_stofunction nfp_abm_ctrl_stat_stofunction nfp_abm_ctrl_stat_basicfunction nfp_abm_ctrl_read_q_statsfunction nfp_abm_ctrl_read_q_xstatsfunction nfp_abm_ctrl_qm_enablefunction nfp_abm_ctrl_qm_disablefunction nfp_abm_ctrl_prio_map_updatefunction nfp_abm_ctrl_prio_check_paramsfunction nfp_abm_ctrl_read_paramsfunction nfp_abm_ctrl_prio_map_sizefunction nfp_abm_ctrl_find_rtsymfunction nfp_abm_ctrl_find_q_rtsymfunction nfp_abm_ctrl_find_addrs
Annotated Snippet
if (!band) {
unsigned int id = alink->queue_base + queue;
*val = nn_readq(alink->vnic,
NFP_NET_CFG_RXR_STATS(id) + off);
} else {
*val = 0;
}
return 0;
} else {
return nfp_abm_ctrl_stat(alink, alink->abm->q_stats,
NFP_Q_STAT_STRIDE, off, band, queue,
true, val);
}
}
int nfp_abm_ctrl_read_q_stats(struct nfp_abm_link *alink, unsigned int band,
unsigned int queue, struct nfp_alink_stats *stats)
{
int err;
err = nfp_abm_ctrl_stat_basic(alink, band, queue, NFP_Q_STAT_PKTS,
&stats->tx_pkts);
if (err)
return err;
err = nfp_abm_ctrl_stat_basic(alink, band, queue, NFP_Q_STAT_BYTES,
&stats->tx_bytes);
if (err)
return err;
err = nfp_abm_ctrl_stat(alink, alink->abm->q_lvls, NFP_QLVL_STRIDE,
NFP_QLVL_BLOG_BYTES, band, queue, false,
&stats->backlog_bytes);
if (err)
return err;
err = nfp_abm_ctrl_stat(alink, alink->abm->q_lvls,
NFP_QLVL_STRIDE, NFP_QLVL_BLOG_PKTS,
band, queue, false, &stats->backlog_pkts);
if (err)
return err;
err = nfp_abm_ctrl_stat(alink, alink->abm->qm_stats,
NFP_QMSTAT_STRIDE, NFP_QMSTAT_DROP,
band, queue, true, &stats->drops);
if (err)
return err;
return nfp_abm_ctrl_stat(alink, alink->abm->qm_stats,
NFP_QMSTAT_STRIDE, NFP_QMSTAT_ECN,
band, queue, true, &stats->overlimits);
}
int nfp_abm_ctrl_read_q_xstats(struct nfp_abm_link *alink,
unsigned int band, unsigned int queue,
struct nfp_alink_xstats *xstats)
{
int err;
err = nfp_abm_ctrl_stat(alink, alink->abm->qm_stats,
NFP_QMSTAT_STRIDE, NFP_QMSTAT_DROP,
band, queue, true, &xstats->pdrop);
if (err)
return err;
return nfp_abm_ctrl_stat(alink, alink->abm->qm_stats,
NFP_QMSTAT_STRIDE, NFP_QMSTAT_ECN,
band, queue, true, &xstats->ecn_marked);
}
int nfp_abm_ctrl_qm_enable(struct nfp_abm *abm)
{
return nfp_mbox_cmd(abm->app->pf, NFP_MBOX_PCIE_ABM_ENABLE,
NULL, 0, NULL, 0);
}
int nfp_abm_ctrl_qm_disable(struct nfp_abm *abm)
{
return nfp_mbox_cmd(abm->app->pf, NFP_MBOX_PCIE_ABM_DISABLE,
NULL, 0, NULL, 0);
}
int nfp_abm_ctrl_prio_map_update(struct nfp_abm_link *alink, u32 *packed)
{
const u32 cmd = NFP_NET_CFG_MBOX_CMD_PCI_DSCP_PRIOMAP_SET;
struct nfp_net *nn = alink->vnic;
unsigned int i;
int err;
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/kernel.h`, `linux/log2.h`, `../nfpcore/nfp_cpp.h`, `../nfpcore/nfp_nffw.h`, `../nfp_app.h`, `../nfp_abi.h`, `../nfp_main.h`.
- Detected declarations: `function nfp_abm_ctrl_stat`, `function __nfp_abm_ctrl_set_q_lvl`, `function nfp_abm_ctrl_set_q_lvl`, `function __nfp_abm_ctrl_set_q_act`, `function nfp_abm_ctrl_set_q_act`, `function nfp_abm_ctrl_stat_non_sto`, `function nfp_abm_ctrl_stat_sto`, `function nfp_abm_ctrl_stat_basic`, `function nfp_abm_ctrl_read_q_stats`, `function nfp_abm_ctrl_read_q_xstats`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.