From: Tony Nguyen <anthony.l.nguyen@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH S35 04/15] ice: Add ice_for_each_vf() macro
Date: Thu, 12 Dec 2019 03:12:56 -0800 [thread overview]
Message-ID: <20191212111307.33566-4-anthony.l.nguyen@intel.com> (raw)
In-Reply-To: <20191212111307.33566-1-anthony.l.nguyen@intel.com>
From: Brett Creeley <brett.creeley@intel.com>
Currently we do "for (i = 0; i < pf->num_alloc_vfs; i++)" all over the
place. Many other places use macros to contain this repeated for loop,
So create the macro ice_for_each_vf(pf, i) that does the same thing.
There were a couple places we were using one loop variable and a VF
iterator, which were changed to using a local variable within the
ice_for_each_vf() macro.
Also in ice_alloc_vfs() we were setting pf->num_alloc_vfs after doing
"for (i = 0; i < num_alloc_vfs; i++)". Instead assign pf->num_alloc_vfs
right after allocating memory for the pf->vf array.
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
---
drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 ++++--
drivers/net/ethernet/intel/ice/ice_main.c | 4 ++--
.../net/ethernet/intel/ice/ice_virtchnl_pf.c | 23 ++++++++++---------
.../net/ethernet/intel/ice/ice_virtchnl_pf.h | 3 +++
4 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index aec3c6c379df..a421c616604c 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -283,12 +283,15 @@ ice_get_eeprom(struct net_device *netdev, struct ethtool_eeprom *eeprom,
*/
static bool ice_active_vfs(struct ice_pf *pf)
{
- struct ice_vf *vf = pf->vf;
int i;
- for (i = 0; i < pf->num_alloc_vfs; i++, vf++)
+ ice_for_each_vf(pf, i) {
+ struct ice_vf *vf = &pf->vf[i];
+
if (test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
return true;
+ }
+
return false;
}
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index ca6a0880e7aa..9378a278206d 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -476,7 +476,7 @@ ice_prepare_for_reset(struct ice_pf *pf)
ice_vc_notify_reset(pf);
/* Disable VFs until reset is completed */
- for (i = 0; i < pf->num_alloc_vfs; i++)
+ ice_for_each_vf(pf, i)
ice_set_vf_state_qs_dis(&pf->vf[i]);
/* clear SW filtering DB */
@@ -1298,7 +1298,7 @@ static void ice_handle_mdd_event(struct ice_pf *pf)
}
/* check to see if one of the VFs caused the MDD */
- for (i = 0; i < pf->num_alloc_vfs; i++) {
+ ice_for_each_vf(pf, i) {
struct ice_vf *vf = &pf->vf[i];
bool vf_mdd_detected = false;
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index cc663fea8627..54c576bb62ad 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -78,10 +78,11 @@ ice_vc_vf_broadcast(struct ice_pf *pf, enum virtchnl_ops v_opcode,
enum virtchnl_status_code v_retval, u8 *msg, u16 msglen)
{
struct ice_hw *hw = &pf->hw;
- struct ice_vf *vf = pf->vf;
int i;
- for (i = 0; i < pf->num_alloc_vfs; i++, vf++) {
+ ice_for_each_vf(pf, i) {
+ struct ice_vf *vf = &pf->vf[i];
+
/* Not all vfs are enabled so skip the ones that are not */
if (!test_bit(ICE_VF_STATE_INIT, vf->vf_states) &&
!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
@@ -331,7 +332,7 @@ void ice_free_vfs(struct ice_pf *pf)
usleep_range(1000, 2000);
/* Avoid wait time by stopping all VFs at the same time */
- for (i = 0; i < pf->num_alloc_vfs; i++)
+ ice_for_each_vf(pf, i)
if (test_bit(ICE_VF_STATE_QS_ENA, pf->vf[i].vf_states))
ice_dis_vf_qs(&pf->vf[i]);
@@ -1077,7 +1078,7 @@ static bool ice_config_res_vfs(struct ice_pf *pf)
ice_irq_dynamic_ena(hw, NULL, NULL);
/* Finish resetting each VF and allocate resources */
- for (v = 0; v < pf->num_alloc_vfs; v++) {
+ ice_for_each_vf(pf, v) {
struct ice_vf *vf = &pf->vf[v];
vf->num_vf_qs = pf->num_vf_qps;
@@ -1120,10 +1121,10 @@ bool ice_reset_all_vfs(struct ice_pf *pf, bool is_vflr)
return false;
/* Begin reset on all VFs at once */
- for (v = 0; v < pf->num_alloc_vfs; v++)
+ ice_for_each_vf(pf, v)
ice_trigger_vf_reset(&pf->vf[v], is_vflr, true);
- for (v = 0; v < pf->num_alloc_vfs; v++) {
+ ice_for_each_vf(pf, v) {
struct ice_vsi *vsi;
vf = &pf->vf[v];
@@ -1168,7 +1169,7 @@ bool ice_reset_all_vfs(struct ice_pf *pf, bool is_vflr)
dev_warn(dev, "VF reset check timeout\n");
/* free VF resources to begin resetting the VSI state */
- for (v = 0; v < pf->num_alloc_vfs; v++) {
+ ice_for_each_vf(pf, v) {
vf = &pf->vf[v];
ice_free_vf_res(vf);
@@ -1308,7 +1309,7 @@ void ice_vc_notify_link_state(struct ice_pf *pf)
{
int i;
- for (i = 0; i < pf->num_alloc_vfs; i++)
+ ice_for_each_vf(pf, i)
ice_vc_notify_vf_link_state(&pf->vf[i]);
}
@@ -1392,9 +1393,10 @@ static int ice_alloc_vfs(struct ice_pf *pf, u16 num_alloc_vfs)
goto err_pci_disable_sriov;
}
pf->vf = vfs;
+ pf->num_alloc_vfs = num_alloc_vfs;
/* apply default profile */
- for (i = 0; i < num_alloc_vfs; i++) {
+ ice_for_each_vf(pf, i) {
vfs[i].pf = pf;
vfs[i].vf_sw_id = pf->first_sw;
vfs[i].vf_id = i;
@@ -1403,7 +1405,6 @@ static int ice_alloc_vfs(struct ice_pf *pf, u16 num_alloc_vfs)
set_bit(ICE_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps);
vfs[i].spoofchk = true;
}
- pf->num_alloc_vfs = num_alloc_vfs;
/* VF resources get allocated with initialization */
if (!ice_config_res_vfs(pf)) {
@@ -1517,7 +1518,7 @@ void ice_process_vflr_event(struct ice_pf *pf)
!pf->num_alloc_vfs)
return;
- for (vf_id = 0; vf_id < pf->num_alloc_vfs; vf_id++) {
+ ice_for_each_vf(pf, vf_id) {
struct ice_vf *vf = &pf->vf[vf_id];
u32 reg_idx, bit_idx;
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
index 611f45100438..4647d636ed36 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
@@ -40,6 +40,9 @@
#define ICE_DFLT_INTR_PER_VF (ICE_DFLT_QS_PER_VF + 1)
#define ICE_MAX_VF_RESET_WAIT 15
+#define ice_for_each_vf(pf, i) \
+ for ((i) = 0; (i) < (pf)->num_alloc_vfs; (i)++)
+
/* Specific VF states */
enum ice_vf_states {
ICE_VF_STATE_INIT = 0, /* PF is initializing VF */
--
2.20.1
next prev parent reply other threads:[~2019-12-12 11:12 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-12 11:12 [Intel-wired-lan] [PATCH S35 01/15] ice: Support UDP segmentation offload Tony Nguyen
2019-12-12 11:12 ` [Intel-wired-lan] [PATCH S35 02/15] ice: Fix VF spoofchk Tony Nguyen
2019-12-18 22:15 ` Bowers, AndrewX
2019-12-12 11:12 ` [Intel-wired-lan] [PATCH S35 03/15] ice: Add code to keep track of current dflt_vsi Tony Nguyen
2019-12-18 22:16 ` Bowers, AndrewX
2019-12-12 11:12 ` Tony Nguyen [this message]
2019-12-18 22:18 ` [Intel-wired-lan] [PATCH S35 04/15] ice: Add ice_for_each_vf() macro Bowers, AndrewX
2019-12-12 11:12 ` [Intel-wired-lan] [PATCH S35 05/15] ice: Set default value for ITR in alloc function Tony Nguyen
2019-12-18 22:20 ` Bowers, AndrewX
2019-12-12 11:12 ` [Intel-wired-lan] [PATCH S35 06/15] ice: Restore interrupt throttle settings after VSI rebuild Tony Nguyen
2019-12-18 22:20 ` Bowers, AndrewX
2019-12-12 11:12 ` [Intel-wired-lan] [PATCH S35 07/15] ice: Return error on not supported ethtool -C parameters Tony Nguyen
2019-12-18 22:23 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 08/15] ice: Remove Rx flex descriptor programming Tony Nguyen
2019-12-18 22:25 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 09/15] ice: Fix VF link state when it's IFLA_VF_LINK_STATE_AUTO Tony Nguyen
2019-12-18 22:26 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 10/15] ice: Enable ip link show on the PF to display VF unicast MAC(s) Tony Nguyen
2019-12-18 22:29 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 11/15] ice: Demote MTU change print to debug Tony Nguyen
2019-12-18 22:31 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 12/15] ice: suppress checked_return error Tony Nguyen
2019-12-18 22:32 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 13/15] ice: add extra check for null rx descriptor Tony Nguyen
2019-12-18 22:32 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 14/15] ice: Add a boundary check in ice_xsk_umem() Tony Nguyen
2019-12-18 22:34 ` Bowers, AndrewX
2019-12-12 11:13 ` [Intel-wired-lan] [PATCH S35 15/15] ice: Suppress Coverity warnings for xdp_rxq_info_reg Tony Nguyen
2019-12-18 22:34 ` Bowers, AndrewX
2019-12-18 22:11 ` [Intel-wired-lan] [PATCH S35 01/15] ice: Support UDP segmentation offload Bowers, AndrewX
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191212111307.33566-4-anthony.l.nguyen@intel.com \
--to=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@osuosl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox