func_info
hr_dev->func_num = le32_to_cpu(desc.func_info.own_func_num);
hr_dev->cong_algo_tmpl_id = le32_to_cpu(desc.func_info.own_mac_id);
} func_info;
if (p_hwfn->mcp_info->func_info.protocol == QED_PCI_ETH_RDMA) {
if (p_hwfn->mcp_info->func_info.bandwidth_max)
if (p_hwfn->mcp_info->func_info.bandwidth_min)
p_info = &p_hwfn->mcp_info->func_info;
p_hwfn->mcp_info->func_info.mac);
if (p_hwfn->mcp_info->func_info.ovlan != QED_MCP_VLAN_UNSET)
p_hwfn->mcp_info->func_info.ovlan;
protocol = p_hwfn->mcp_info->func_info.protocol;
p_hwfn->hw_info.mtu = p_hwfn->mcp_info->func_info.mtu;
p_hwfn->mcp_info->func_info.bandwidth_max = max_bw;
p_hwfn->mcp_info->func_info.bandwidth_min = min_bw;
info->wwpn = hwfn->mcp_info->func_info.wwn_port;
info->wwnn = hwfn->mcp_info->func_info.wwn_node;
p_info = &p_hwfn->mcp_info->func_info;
max_bw = p_hwfn->mcp_info->func_info.bandwidth_max;
min_bw = p_hwfn->mcp_info->func_info.bandwidth_min;
p_info = &p_hwfn->mcp_info->func_info;
p_hwfn->mcp_info->func_info.ovlan = (u16)shmem_info.ovlan_stag &
p_hwfn->hw_info.ovlan = p_hwfn->mcp_info->func_info.ovlan;
p_hwfn->mcp_info->func_info.ovlan, p_hwfn->hw_info.hw_mode);
info = &p_hwfn->mcp_info->func_info;
struct qed_mcp_function_info func_info;
struct bpf_func_info *func_info;
__aligned_u64 func_info; /* func info */
__aligned_u64 func_info;
if (!prog->aux->func_info) {
btf_id = prog->aux->func_info[0].type_id;
if (!prog->aux->func_info) {
btf_id = prog->aux->func_info[subprog].type_id;
prog->aux->func_info[prog->aux->func_idx].type_id);
get_name(aux->btf, aux->func_info[0].type_id, aux->name),
struct bpf_func_info *func_info;
kvfree(aux->func_info);
user_finfo = u64_to_user_ptr(info.func_info);
if (copy_to_user(user_finfo, prog->aux->func_info,
if (!prog->aux->func_info)
btf_id = prog->aux->func_info[subprog].type_id;
if (!aux->func_info) {
urecord = make_bpfptr(attr->func_info, uattr.is_kernel);
prog->aux->func_info = krecord;
urecord = make_bpfptr(attr->func_info, uattr.is_kernel);
krecord = prog->aux->func_info;
if (!aux->func_info)
aux->func_info[i].insn_off = env->subprog_info[i].start;
if (aux->func_info) {
memmove(aux->func_info + i,
aux->func_info + j,
sizeof(*aux->func_info) * move);
func[i]->aux->func_info = prog->aux->func_info;
if (!aux->func_info)
if (aux->func_info[i].type_id == btf_id) {
main_btf_id = aux->func_info[0].type_id;
if (aux->func_info[i].type_id != id)
ret = aux->func_info[i].insn_off;
if (!env->prog->aux->func_info)
info = &env->prog->aux->func_info[subprog];
static struct func_info *function_list;
struct func_info *fi;
fi = realloc(function_list, fsize * sizeof(struct func_info));
const struct func_info *a = A;
sizeof(struct func_info), cmp_func_addr) != NULL;
const struct func_info *a = A;
const struct func_info *b = B;
qsort(function_list, function_list_size, sizeof(struct func_info), cmp_funcs);
info.func_info = ptr_to_u64(&finfo);
info.func_info = ptr_to_u64(&finfo);
holder.func_info = ptr_to_u64(ptr);
struct bpf_func_info func_info = {};
info.func_info = ptr_to_u64(&func_info);
t = btf__type_by_id(btf, func_info.type_id);
info.btf_id, func_info.type_id);
void *func_info = NULL;
func_info = u64_to_ptr(info->func_info);
if (func_info) {
record = func_info + i * info->func_info_rec_size;
if (func_info && func_sig[0] != '\0') {
if (func_info && func_sig[0] != '\0')
dd.func_info = func_info;
record = dd->func_info;
record = dd->func_info;
struct bpf_func_info *record = dd->func_info;
void *func_info;
__aligned_u64 func_info; /* func info */
__aligned_u64 func_info;
const char *func_info, *line_info;
func_info = OPTS_GET(opts, func_info, NULL);
attr.func_info = ptr_to_u64(func_info);
finfo = alloc_zero_tailing_info(func_info,
attr.func_info = ptr_to_u64(finfo);
const void *func_info;
struct btf_ext_sec_info_param func_info = {
.ext_info = &btf_ext->func_info,
err = btf_ext_parse_sec_info(btf_ext, &func_info, is_native);
free(btf_ext->func_info.sec_idxs);
seg = &btf_ext->func_info;
seg = &btf_ext->func_info;
opts.func_info = &func_infos;
static void info_blob_bswap(struct bpf_gen *gen, int func_info, int line_info,
struct bpf_func_info *fi = gen->data_start + func_info;
int prog_load_attr, license_off, insns_off, func_info, line_info, core_relos;
func_info = add_data(gen, load_attr->func_info, func_info_tot_sz);
func_info, load_attr->func_info_cnt,
info_blob_bswap(gen, func_info, line_info, core_relos, load_attr);
emit_rel_store(gen, attr_field(prog_load_attr, func_info), func_info);
ext_segs[0] = &obj->btf_ext->func_info;
void *func_info;
if (main_prog != prog && !main_prog->func_info)
err = adjust_prog_btf_ext_info(obj, prog, &obj->btf_ext->func_info,
&main_prog->func_info,
if (main_prog->func_info) {
if (!obj->btf_ext || !prog->func_info)
func_rec = prog->func_info + prog->func_info_rec_size * i;
func_rec = prog->func_info + prog->func_info_rec_size * rec_idx;
load_attr.func_info = prog->func_info;
zfree(&prog->func_info);
return prog->func_info;
struct btf_ext_info func_info;
struct btf_ext_sec_data func_info;
free(sec->func_info.recs);
rec_sz = obj->btf_ext->func_info.rec_size;
for_each_btf_ext_sec(&obj->btf_ext->func_info, ext_sec) {
if (dst_sec->func_info.rec_sz == 0)
dst_sec->func_info.rec_sz = rec_sz;
if (dst_sec->func_info.rec_sz != rec_sz) {
for_each_btf_ext_rec(&obj->btf_ext->func_info, ext_sec, i, src_rec) {
dst_rec = add_btf_ext_rec(&dst_sec->func_info, src_rec);
if (sec->func_info.rec_cnt) {
func_rec_sz = sec->func_info.rec_sz;
if (func_rec_sz != sec->func_info.rec_sz) {
func_rec_sz, sec->func_info.rec_sz);
funcs_sz += sizeof(struct btf_ext_info_sec) + func_rec_sz * sec->func_info.rec_cnt;
sz = emit_btf_ext_data(linker, cur, sec->sec_name, &sec->func_info);
void *func_infos = (void *)(uintptr_t)(info->func_info);
offsetof(struct bpf_prog_info, func_info),
struct bpf_func_info *func_info;
func_info = u64_to_ptr(info_linear->info.func_info);
t = btf__type_by_id(btf, func_info[0].type_id);
info_linear->info.btf_id, func_info[0].type_id);
void *func_info = NULL;
func_info = malloc(info.nr_func_info * rec_size);
if (CHECK(!func_info, "out of memory")) {
info.func_info = ptr_to_u64(func_info);
finfo = func_info;
free(func_info);
__u32 func_info[MAX_SUBPROGS][2];
.func_info = { {0, 5}, {3, 6} },
.func_info = { {0, 5}, {3, 6} },
.func_info = { {0, 5}, {3, 6} },
.func_info = { {0, 5}, {2, 6} },
.func_info = { {0, 4}, {5, 3} },
.func_info = { {0, 4}, {14, 3} },
.func_info = { {0, 4}, {6, 3}, {9, 5} },
.func_info = { {0, 4}, {5, 3} },
.func_info = { {0, 4}, {7, 3}, {10, 5} },
.func_info = { {0, 4}, {6, 3}, {9, 5} },
.func_info = { {0, 3}, {6, 4}, },
void *func_info = NULL;
func_info = malloc(info.nr_func_info * rec_size);
if (CHECK(!func_info, "out of memory"))
info.func_info = ptr_to_u64(func_info);
finfo = func_info;
if (CHECK(finfo->type_id != test->func_info[i][1],
finfo->type_id, test->func_info[i][1])) {
free(func_info);
attr.func_info = ptr_to_u64(test->func_info);
attr.func_info = (__u64)funcs;
struct bpf_func_info func_info[128], *libbpf_func_info;
info.func_info = ptr_to_u64(&func_info);
info.nr_func_info = sizeof(func_info);
info.func_info_rec_size = sizeof(*func_info);
ASSERT_MEMEQ(libbpf_func_info, func_info, libbbpf_func_info_cnt * sizeof(*func_info),
info.func_info = ptr_to_u64(&func_info_buf);
opts.func_info = test->func_info;
opts.func_info_rec_size = sizeof(test->func_info[0]);
struct bpf_func_info func_info[MAX_FUNC_INFOS];
self->func_info[1].insn_off = callback_idx;
.func_info = {
.func_info = {
.func_info = {
.func_info = { { 0, MAIN_TYPE }, { 16, CALLBACK_TYPE } },
.func_info = { { 0, MAIN_TYPE }, { 12, CALLBACK_TYPE } },
.func_info = { { 0, MAIN_TYPE }, { 16, CALLBACK_TYPE } },