Intel-Wired-Lan Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Alice Michael <alice.michael@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [next PATCH S95 05/12] i40evf: Change a VF mac without reloading the VF driver
Date: Mon, 20 Aug 2018 08:12:26 -0700	[thread overview]
Message-ID: <20180820151233.14629-5-alice.michael@intel.com> (raw)
In-Reply-To: <20180820151233.14629-1-alice.michael@intel.com>

From: Pawe? Jab?o?ski <pawel.jablonski@intel.com> <pawel.jablonski@intel.com>

Add possibility to change a VF mac address from host side
without reloading the VF driver on the guest side. Without
this patch it is not possible to change the VF mac because
executing i40evf_virtchnl_completion function with
VIRTCHNL_OP_GET_VF_RESOURCES opcode resets the VF mac
address to previous value.

Signed-off-by: Pawe? Jab?o?ski <pawel.jablonski@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c  |  8 +++++---
 drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 11 +++++++++--
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index c6d24ea..f56c645 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -2458,7 +2458,7 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf,
 		    !is_multicast_ether_addr(addr) && vf->pf_set_mac &&
 		    !ether_addr_equal(addr, vf->default_lan_addr.addr)) {
 			dev_err(&pf->pdev->dev,
-				"VF attempting to override administratively set MAC address, reload the VF driver to resume normal operation\n");
+				"VF attempting to override administratively set MAC address, bring down and up the VF interface to resume normal operation\n");
 			return -EPERM;
 		}
 	}
@@ -3873,9 +3873,11 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
 			 mac, vf_id);
 	}
 
-	/* Force the VF driver stop so it has to reload with new MAC address */
+	/* Force the VF interface down so it has to bring up with new MAC
+	 * address
+	 */
 	i40e_vc_disable_vf(vf);
-	dev_info(&pf->pdev->dev, "Reload the VF driver to make this change effective.\n");
+	dev_info(&pf->pdev->dev, "Bring down and up the VF interface to make this change effective.\n");
 
 error_param:
 	return ret;
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
index 565677d..79b7be8 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
@@ -1330,8 +1330,15 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
 			  sizeof(struct virtchnl_vsi_resource);
 		memcpy(adapter->vf_res, msg, min(msglen, len));
 		i40e_vf_parse_hw_config(&adapter->hw, adapter->vf_res);
-		/* restore current mac address */
-		ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr);
+		if (is_zero_ether_addr(adapter->hw.mac.addr)) {
+			/* restore current mac address */
+			ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr);
+		} else {
+			/* refresh current mac address if changed */
+			ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr);
+			ether_addr_copy(netdev->perm_addr,
+					adapter->hw.mac.addr);
+		}
 		i40evf_process_config(adapter);
 		}
 		break;
-- 
2.9.5


  parent reply	other threads:[~2018-08-20 15:12 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-20 15:12 [Intel-wired-lan] [next PATCH S95 01/12] i40e: Fix VF's link state notification Alice Michael
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 02/12] i40e: convert queue stats to i40e_stats array Alice Michael
2018-08-21 19:16   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 03/12] i40e: move ethtool stats boiler plate code to i40e_ethtool_stats.h Alice Michael
2018-08-21 19:17   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 04/12] i40evf: update ethtool stats code and use helper functions Alice Michael
2018-08-21 19:19   ` Bowers, AndrewX
2018-08-20 15:12 ` Alice Michael [this message]
2018-08-21 19:29   ` [Intel-wired-lan] [next PATCH S95 05/12] i40evf: Change a VF mac without reloading the VF driver Bowers, AndrewX
2018-08-29 16:34     ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 06/12] i40e: fix condition of WARN_ONCE for stat strings Alice Michael
2018-08-21 19:36   ` Bowers, AndrewX
2018-08-24  1:50   ` Mauro Rodrigues
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 07/12] i40e: Unset promiscuous settings on VF reset Alice Michael
2018-08-21 16:28   ` Shannon Nelson
2018-08-29 20:53   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 08/12] i40evf: Validate the number of queues a PF sends Alice Michael
2018-08-29 20:54   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 09/12] i40e: use correct length for strncpy Alice Michael
2018-08-21 16:28   ` Shannon Nelson
2018-08-23 16:11   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 10/12] i40evf: set IFF_UNICAST_FLT flag for the vf Alice Michael
2018-08-21 19:41   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 11/12] virtchnl: use u8 type for a field in the virtchnl_filter struct Alice Michael
2018-08-21 19:41   ` Bowers, AndrewX
2018-08-20 15:12 ` [Intel-wired-lan] [next PATCH S95 12/12] i40e: static analysis report from community Alice Michael
2018-08-21 19:42   ` Bowers, AndrewX
2018-08-21 16:27 ` [Intel-wired-lan] [next PATCH S95 01/12] i40e: Fix VF's link state notification Shannon Nelson
2018-08-29 20:53 ` 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=20180820151233.14629-5-alice.michael@intel.com \
    --to=alice.michael@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