Messages in this thread Patch in this message | | | Date | Tue, 21 Nov 2023 15:55:11 +0000 | From | Simon Horman <> | Subject | Re: [EXT] Re: [net PATCH] octeontx2-pf: Fix ntuple rule creation to direct packet to VF with higher Rx queue than its PF |
| |
On Tue, Nov 21, 2023 at 09:54:00AM +0000, Suman Ghosh wrote: > >> Signed-off-by: Suman Ghosh <sumang@marvell.com> > >> --- > >> .../marvell/octeontx2/nic/otx2_flows.c | 21 > >+++++++++++++++++++ > >> 1 file changed, 21 insertions(+) > >> > >> diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c > >> b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c > >> index 4762dbea64a1..4200f2d387f6 100644 > >> --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c > >> +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c > >> @@ -1088,6 +1088,7 @@ int otx2_add_flow(struct otx2_nic *pfvf, struct > >ethtool_rxnfc *nfc) > >> struct ethhdr *eth_hdr; > >> bool new = false; > >> int err = 0; > >> + u64 vf_num; > >> u32 ring; > >> > >> if (!flow_cfg->max_flows) { > >> @@ -1100,9 +1101,26 @@ int otx2_add_flow(struct otx2_nic *pfvf, struct > >ethtool_rxnfc *nfc) > >> if (!(pfvf->flags & OTX2_FLAG_NTUPLE_SUPPORT)) > >> return -ENOMEM; > >> > >> + /* Number of queues on a VF can be greater or less than > >> + * the PF's queue. Hence no need to check for the > >> + * queue count. Hence no need to check queue count if PF > >> + * is installing for its VF. Below is the expected vf_num value > >> + * based on the ethtool commands. > >> + * > >> + * e.g. > >> + * 1. ethtool -U <netdev> ... action -1 ==> vf_num:255 > >> + * 2. ethtool -U <netdev> ... action <queue_num> ==> vf_num:0 > >> + * 3. ethtool -U <netdev> ... vf <vf_idx> queue <queue_num> ==> > >> + * vf_num:vf_idx+1 > >> + */ > >> + vf_num = ethtool_get_flow_spec_ring_vf(fsp->ring_cookie); > >> + if (!is_otx2_vf(pfvf->pcifunc) && vf_num) > >> + goto bypass_queue_check; > > > >Let's just add this condition to the next if, no need for goto. > [Suman] I kept it a separate check to make the code more readable. Otherwise the next if condition will be complicated.
Readability is subjective, but, FWIIW, I'd also prefer to avoid a goto here.
> >> + > >> if (ring >= pfvf->hw.rx_queues && fsp->ring_cookie != > >RX_CLS_FLOW_DISC) > >> return -EINVAL; > >> > >> +bypass_queue_check: > >> if (fsp->location >= otx2_get_maxflows(flow_cfg)) > >> return -EINVAL; > >> > >> @@ -1182,6 +1200,9 @@ int otx2_add_flow(struct otx2_nic *pfvf, struct > >ethtool_rxnfc *nfc) > >> flow_cfg->nr_flows++; > >> } > >> > >> + if (flow->is_vf) > >> + netdev_info(pfvf->netdev, > >> + "Make sure that VF's queue number is within its queue > >> +limit\n"); > >> return 0; > >> } > >>
| |