MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bnxt_process_default_vnic_change

Function bnxt_process_default_vnic_change

dpdk/drivers/net/bnxt/bnxt_cpr.c:49–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47}
48
49static void
50bnxt_process_default_vnic_change(struct bnxt *bp,
51 struct hwrm_async_event_cmpl *async_cmp)
52{
53 uint16_t vnic_state, vf_fid, vf_id;
54 struct bnxt_representor *vf_rep_bp;
55 struct rte_eth_dev *eth_dev;
56 bool vfr_found = false;
57 uint32_t event_data;
58
59 if (!BNXT_TRUFLOW_EN(bp))
60 return;
61
62 PMD_DRV_LOG(INFO, "Default vnic change async event received\n");
63 event_data = rte_le_to_cpu_32(async_cmp->event_data1);
64
65 vnic_state = (event_data & BNXT_DEFAULT_VNIC_STATE_MASK) >>
66 BNXT_DEFAULT_VNIC_STATE_SFT;
67 if (vnic_state != BNXT_DEFAULT_VNIC_ALLOC)
68 return;
69
70 if (!bp->rep_info)
71 return;
72
73 vf_fid = (event_data & BNXT_DEFAULT_VNIC_CHANGE_VF_ID_MASK) >>
74 BNXT_DEFAULT_VNIC_CHANGE_VF_ID_SFT;
75 PMD_DRV_LOG(INFO, "async event received vf_id 0x%x\n", vf_fid);
76
77 for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS(bp); vf_id++) {
78 eth_dev = bp->rep_info[vf_id].vfr_eth_dev;
79 if (!eth_dev)
80 continue;
81 vf_rep_bp = eth_dev->data->dev_private;
82 if (vf_rep_bp &&
83 vf_rep_bp->fw_fid == vf_fid) {
84 vfr_found = true;
85 break;
86 }
87 }
88 if (!vfr_found)
89 return;
90
91 bnxt_rep_dev_start_op(eth_dev);
92}
93
94static void bnxt_handle_event_error_report(struct bnxt *bp,
95 uint32_t data1,

Callers 1

bnxt_handle_async_eventFunction · 0.85

Calls 1

bnxt_rep_dev_start_opFunction · 0.85

Tested by

no test coverage detected