* [bug report] octeontx2-pf: Ntuple filters support for VF netdev
@ 2021-11-30 10:43 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2021-11-30 10:43 UTC (permalink / raw)
To: rsaladi2; +Cc: kernel-janitors
Hello Rakesh Babu,
The patch 3cffaed2136c: "octeontx2-pf: Ntuple filters support for VF
netdev" from Aug 17, 2021, leads to the following Smatch static
checker warning:
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c:1247 rvu_mbox_handler_npc_install_flow()
error: uninitialized symbol 'nixlf'.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c:392 npc_get_default_entry_action()
error: uninitialized symbol 'nixlf'.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1154 int rvu_mbox_handler_npc_install_flow(struct rvu *rvu,
1155 struct npc_install_flow_req *req,
1156 struct npc_install_flow_rsp *rsp)
1157 {
1158 bool from_vf = !!(req->hdr.pcifunc & RVU_PFVF_FUNC_MASK);
1159 struct rvu_switch *rswitch = &rvu->rswitch;
1160 int blkaddr, nixlf, err;
^^^^^
1161 struct rvu_pfvf *pfvf;
1162 bool pf_set_vfs_mac = false;
1163 bool enable = true;
1164 u16 target;
1165
1166 blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NPC, 0);
1167 if (blkaddr < 0) {
1168 dev_err(rvu->dev, "%s: NPC block not implemented\n", __func__);
1169 return NPC_MCAM_INVALID_REQ;
1170 }
1171
1172 if (!is_npc_interface_valid(rvu, req->intf))
1173 return NPC_FLOW_INTF_INVALID;
1174
1175 if (from_vf && req->default_rule)
1176 return NPC_FLOW_VF_PERM_DENIED;
1177
1178 /* Each PF/VF info is maintained in struct rvu_pfvf.
1179 * rvu_pfvf for the target PF/VF needs to be retrieved
1180 * hence modify pcifunc accordingly.
1181 */
1182
1183 /* AF installing for a PF/VF */
1184 if (!req->hdr.pcifunc)
1185 target = req->vf;
1186 /* PF installing for its VF */
1187 else if (!from_vf && req->vf) {
1188 target = (req->hdr.pcifunc & ~RVU_PFVF_FUNC_MASK) | req->vf;
1189 pf_set_vfs_mac = req->default_rule &&
1190 (req->features & BIT_ULL(NPC_DMAC));
1191 }
1192 /* msg received from PF/VF */
1193 else
1194 target = req->hdr.pcifunc;
1195
1196 /* ignore chan_mask in case pf func is not AF, revisit later */
1197 if (!is_pffunc_af(req->hdr.pcifunc))
1198 req->chan_mask = 0xFFF;
1199
1200 err = npc_check_unsupported_flows(rvu, req->features, req->intf);
1201 if (err)
1202 return NPC_FLOW_NOT_SUPPORTED;
1203
1204 pfvf = rvu_get_pfvf(rvu, target);
1205
1206 /* PF installing for its VF */
1207 if (req->hdr.pcifunc && !from_vf && req->vf)
1208 set_bit(PF_SET_VF_CFG, &pfvf->flags);
1209
1210 /* update req destination mac addr */
1211 if ((req->features & BIT_ULL(NPC_DMAC)) && is_npc_intf_rx(req->intf) &&
1212 is_zero_ether_addr(req->packet.dmac)) {
1213 ether_addr_copy(req->packet.dmac, pfvf->mac_addr);
1214 eth_broadcast_addr((u8 *)&req->mask.dmac);
1215 }
1216
1217 /* Proceed if NIXLF is attached or not for TX rules */
1218 err = nix_get_nixlf(rvu, target, &nixlf, NULL);
1219 if (err && is_npc_intf_rx(req->intf) && !pf_set_vfs_mac)
1220 return NPC_FLOW_NO_NIXLF;
If nix_get_nixlf() fails then "nixlf" is not necessarily initialized and
then if is_npc_intf_rx() is true or pf_set_vfs_mac is false then this
will not return.
1221
1222 /* don't enable rule when nixlf not attached or initialized */
1223 if (!(is_nixlf_attached(rvu, target) &&
1224 test_bit(NIXLF_INITIALIZED, &pfvf->flags)))
1225 enable = false;
1226
1227 /* Packets reaching NPC in Tx path implies that a
1228 * NIXLF is properly setup and transmitting.
1229 * Hence rules can be enabled for Tx.
1230 */
1231 if (is_npc_intf_tx(req->intf))
1232 enable = true;
1233
1234 /* Do not allow requests from uninitialized VFs */
1235 if (from_vf && !enable)
1236 return NPC_FLOW_VF_NOT_INIT;
1237
1238 /* PF sets VF mac & VF NIXLF is not attached, update the mac addr */
1239 if (pf_set_vfs_mac && !enable) {
1240 ether_addr_copy(pfvf->default_mac, req->packet.dmac);
1241 ether_addr_copy(pfvf->mac_addr, req->packet.dmac);
1242 set_bit(PF_SET_VF_MAC, &pfvf->flags);
1243 return 0;
1244 }
1245
1246 mutex_lock(&rswitch->switch_lock);
--> 1247 err = npc_install_flow(rvu, blkaddr, target, nixlf, pfvf,
^^^^^
Potentially passing an uninitialized value.
1248 req, rsp, enable, pf_set_vfs_mac);
1249 mutex_unlock(&rswitch->switch_lock);
1250
1251 return err;
1252 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-11-30 10:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-30 10:43 [bug report] octeontx2-pf: Ntuple filters support for VF netdev Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.