patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Jingjing Wu <jingjing.wu@intel.com>
Cc: Yuanhan Liu <yuanhan.liu@linux.intel.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/i40e/base: fix WoL failure on PF reset' has been queued to stable release 16.11.1
Date: Mon, 23 Jan 2017 15:47:00 +0800	[thread overview]
Message-ID: <1485157675-32114-25-git-send-email-yuanhan.liu@linux.intel.com> (raw)
In-Reply-To: <1485157675-32114-1-git-send-email-yuanhan.liu@linux.intel.com>

Hi,

FYI, your patch has been queued to stable release 16.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable
yet. It will be pushed if I get no objections before 01/28/17.
So please shout if anyone has objections.

---

Note 16.11 is a LTS release. v16.11.1 is planned to be released
shortly (about 2-3 weeks) after v17.02.

---

Thanks.

	--yliu

---
>From 21de86f68bf604b54ebfc84145d4509dd8a1d2f9 Mon Sep 17 00:00:00 2001
From: Jingjing Wu <jingjing.wu@intel.com>
Date: Sat, 10 Dec 2016 19:24:42 +0800
Subject: [PATCH] net/i40e/base: fix WoL failure on PF reset

[ upstream commit ec3bd63e870fa28174804973f232e0a67d3d8d24 ]

By default the device clears all MAC filter information on PF Reset.
However, this will cause Wake-On-LAN to fail because the wake filters
are deleted on transition to D3 power state. To get around this,
firmware is adding functionality to preserve certain MAC filters during
PFR. These bits allow the driver tell the FW which filters to preserve.

Set the datalen field and add I40E_AQ_FLAG_BUF/I40E_AQ_FLAG_RD flags in the
desc struct for the WoL/Proxy AQ descriptors. The WoL/Proxy AQ commands
were failing because these were missing.

Fixes: 3c89193a36fd ("i40e/base: support WOL config for X722")

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
 drivers/net/i40e/base/i40e_adminq_cmd.h |  5 ++++-
 drivers/net/i40e/base/i40e_common.c     | 16 +++++++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_adminq_cmd.h b/drivers/net/i40e/base/i40e_adminq_cmd.h
index 4f06772..d5cf61e 100644
--- a/drivers/net/i40e/base/i40e_adminq_cmd.h
+++ b/drivers/net/i40e/base/i40e_adminq_cmd.h
@@ -540,7 +540,8 @@ struct i40e_aqc_mac_address_read {
 #define I40E_AQC_PORT_ADDR_VALID	0x40
 #define I40E_AQC_WOL_ADDR_VALID		0x80
 #define I40E_AQC_MC_MAG_EN_VALID	0x100
-#define I40E_AQC_ADDR_VALID_MASK	0x1F0
+#define I40E_AQC_WOL_PRESERVE_STATUS	0x200
+#define I40E_AQC_ADDR_VALID_MASK	0x3F0
 	u8	reserved[6];
 	__le32	addr_high;
 	__le32	addr_low;
@@ -561,6 +562,7 @@ I40E_CHECK_STRUCT_LEN(24, i40e_aqc_mac_address_read_data);
 struct i40e_aqc_mac_address_write {
 	__le16	command_flags;
 #define I40E_AQC_MC_MAG_EN		0x0100
+#define I40E_AQC_WOL_PRESERVE_ON_PFR	0x0200
 #define I40E_AQC_WRITE_TYPE_LAA_ONLY	0x0000
 #define I40E_AQC_WRITE_TYPE_LAA_WOL	0x4000
 #define I40E_AQC_WRITE_TYPE_PORT	0x8000
@@ -600,6 +602,7 @@ struct i40e_aqc_set_wol_filter {
 	__le16 cmd_flags;
 #define I40E_AQC_SET_WOL_FILTER				0x8000
 #define I40E_AQC_SET_WOL_FILTER_NO_TCO_WOL		0x4000
+#define I40E_AQC_SET_WOL_FILTER_WOL_PRESERVE_ON_PFR	0x2000
 #define I40E_AQC_SET_WOL_FILTER_ACTION_CLEAR		0
 #define I40E_AQC_SET_WOL_FILTER_ACTION_SET		1
 	__le16 valid_flags;
diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index 3fb2992..02d9277 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -6596,10 +6596,13 @@ enum i40e_status_code i40e_aq_set_arp_proxy_config(struct i40e_hw *hw,
 
 	i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_set_proxy_config);
 
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF);
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_RD);
 	desc.params.external.addr_high =
 				  CPU_TO_LE32(I40E_HI_DWORD((u64)proxy_config));
 	desc.params.external.addr_low =
 				  CPU_TO_LE32(I40E_LO_DWORD((u64)proxy_config));
+	desc.datalen = sizeof(struct i40e_aqc_arp_proxy_data);
 
 	status = i40e_asq_send_command(hw, &desc, proxy_config,
 				       sizeof(struct i40e_aqc_arp_proxy_data),
@@ -6630,10 +6633,13 @@ enum i40e_status_code i40e_aq_set_ns_proxy_table_entry(struct i40e_hw *hw,
 	i40e_fill_default_direct_cmd_desc(&desc,
 				i40e_aqc_opc_set_ns_proxy_table_entry);
 
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF);
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_RD);
 	desc.params.external.addr_high =
 		CPU_TO_LE32(I40E_HI_DWORD((u64)ns_proxy_table_entry));
 	desc.params.external.addr_low =
 		CPU_TO_LE32(I40E_LO_DWORD((u64)ns_proxy_table_entry));
+	desc.datalen = sizeof(struct i40e_aqc_ns_proxy_data);
 
 	status = i40e_asq_send_command(hw, &desc, ns_proxy_table_entry,
 				       sizeof(struct i40e_aqc_ns_proxy_data),
@@ -6680,9 +6686,11 @@ enum i40e_status_code i40e_aq_set_clear_wol_filter(struct i40e_hw *hw,
 	if (set_filter) {
 		if (!filter)
 			return  I40E_ERR_PARAM;
+
 		cmd_flags |= I40E_AQC_SET_WOL_FILTER;
-		buff_len = sizeof(*filter);
+		cmd_flags |= I40E_AQC_SET_WOL_FILTER_WOL_PRESERVE_ON_PFR;
 	}
+
 	if (no_wol_tco)
 		cmd_flags |= I40E_AQC_SET_WOL_FILTER_NO_TCO_WOL;
 	cmd->cmd_flags = CPU_TO_LE16(cmd_flags);
@@ -6693,6 +6701,12 @@ enum i40e_status_code i40e_aq_set_clear_wol_filter(struct i40e_hw *hw,
 		valid_flags |= I40E_AQC_SET_WOL_FILTER_NO_TCO_ACTION_VALID;
 	cmd->valid_flags = CPU_TO_LE16(valid_flags);
 
+	buff_len = sizeof(*filter);
+	desc.datalen = buff_len;
+
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF);
+	desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_RD);
+
 	cmd->address_high = CPU_TO_LE32(I40E_HI_DWORD((u64)filter));
 	cmd->address_low = CPU_TO_LE32(I40E_LO_DWORD((u64)filter));
 
-- 
1.9.0

  parent reply	other threads:[~2017-01-23  7:46 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-23  7:46 [dpdk-stable] patch 'pmdinfogen: fix endianness with cross-compilation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'pci: fix check of mknod' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: check maximum number of queues for statistics' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'mempool: fix API documentation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: fix port lookup if none' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'vdev: fix detaching with alias' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ethtool: fix driver information' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: remove invalid function from version map' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'ethdev: fix extended statistics name index' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'pmdinfogen: fix null dereference' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'app/testpmd: fix static build link ordering' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'app/testpmd: fix check for invalid ports' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ip_pipeline: fix coremask limitation' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'examples/ip_pipeline: fix parsing of pass-through pipeline' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: fix xstats value mapping' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/mlx5: fix leak when starvation occurs' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/mlx5: fix endianness in Tx completion queue' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: fix logging for Tx free threshold check' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e: enable auto link update for 25G' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40evf: fix casting between structs' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix flow control set for 25G' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix bit test mask' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix long link down notification time' " Yuanhan Liu
2017-01-23  7:46 ` [dpdk-stable] patch 'net/i40e/base: fix unknown PHYs incorrect identification' " Yuanhan Liu
2017-01-23  7:47 ` Yuanhan Liu [this message]
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix NVM access interfering' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix division by zero' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e/base: fix byte order' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix resource leak' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/pcap: fix timestamps in output pcap file' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/vmxnet3: fix Rx deadlock' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/nfp: fix typo in Tx offload capabilities' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix PHY reset check for x550em-ext' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix clearing SAN MAC address' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix PHY identification for x550a' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix getting PHY type for some x550 devices' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix SGMII link setup for M88 PHYs' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix setting unsupported autoneg speeds' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/ixgbe/base: fix IXGBE LSWFW register' " Yuanhan Liu
     [not found]   ` <49759EB36A64CF4892C1AFEC9231E8D63A354E36@PGSMSX106.gar.corp.intel.com>
2017-01-23  9:44     ` Yuanhan Liu
2017-01-23 10:17       ` Thomas Monjalon
2017-01-23 10:29       ` Mcnamara, John
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix filtering code' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: add vendor/device id info' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix SRIOV printouts' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix multiple acquisition requests by VF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix error code in resc allocation' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix mutex in freeing context manager' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix Rx queue access by malicious VFs' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix to handle acquire request from VF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede/base: fix VF over legacy PF' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix RSS hash result for flows' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix wrong return value when handling PF message' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix missing inline attributes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx5: fix Tx doorbell' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix PF fastpath status block index' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix per queue statisitics' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/af_packet: fix fd use after free' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix segment number in reassemble process' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/enic: remove unnecessary function parameter attributes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/nfp: fix VLAN offload flags check' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/cxgbe: fix parenthesis on bitwise operation' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/qede: fix function declaration' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/mlx: fix IPv4 and IPv6 packet type' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/i40e: fix VF reset flow' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'cryptodev: fix crash on null dereference' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/openssl: fix extra bytes written at end of data' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_mb: fix incorrect crypto session' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix J0 padding bytes' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix IV size in capabilities' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/qat: " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'cryptodev: fix loop in device query' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'crypto/openssl: fix indentation in guide' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'app/test: fix symmetric session free in crypto perf tests' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'vhost: fix guest/host physical address mapping' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'vhost: fix memory leak' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/vhost: fix socket file deleted on stop' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/vhost: fix calculation of mbuf count' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/vhost: fix lcore initialization' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'examples/ethtool: fix querying non-PCI devices' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/virtio-user: fix wrongly get/set features' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/virtio-user: fix not properly reset device' " Yuanhan Liu
2017-01-23  7:47 ` [dpdk-stable] patch 'net/virtio: fix rewriting LSC flag' " Yuanhan Liu

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=1485157675-32114-25-git-send-email-yuanhan.liu@linux.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=stable@dpdk.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;
as well as URLs for NNTP newsgroup(s).