* [PATCH V2 net 05/20] net/ena: fix RSS default hash configuration
From: Netanel Belgazal @ 2016-12-04 13:19 UTC (permalink / raw)
To: linux-kernel, davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, alex, saeed, msw, aliguori, nafea
In-Reply-To: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com>
ENA default hash configure IPv4_frag hash twice instead of
configure non ip packets.
Signed-off-by: Netanel Belgazal <netanel@annapurnalabs.com>
---
drivers/net/ethernet/amazon/ena/ena_com.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c
index 3066d9c..46aad3a 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_com.c
@@ -2184,7 +2184,7 @@ int ena_com_set_default_hash_ctrl(struct ena_com_dev *ena_dev)
hash_ctrl->selected_fields[ENA_ADMIN_RSS_IP4_FRAG].fields =
ENA_ADMIN_RSS_L3_SA | ENA_ADMIN_RSS_L3_DA;
- hash_ctrl->selected_fields[ENA_ADMIN_RSS_IP4_FRAG].fields =
+ hash_ctrl->selected_fields[ENA_ADMIN_RSS_NOT_IP].fields =
ENA_ADMIN_RSS_L2_DA | ENA_ADMIN_RSS_L2_SA;
for (i = 0; i < ENA_ADMIN_RSS_PROTO_NUM; i++) {
--
2.7.4
^ permalink raw reply related
* [PATCH V2 net 04/20] net/ena: fix ethtool RSS flow configuration
From: Netanel Belgazal @ 2016-12-04 13:19 UTC (permalink / raw)
To: linux-kernel, davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, alex, saeed, msw, aliguori, nafea
In-Reply-To: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com>
ena_flow_data_to_flow_hash and ena_flow_hash_to_flow_type
treat the ena_flow_hash_to_flow_type enum as power of two values.
Change the values of ena_admin_flow_hash_fields to be power of two values.
Signed-off-by: Netanel Belgazal <netanel@annapurnalabs.com>
---
drivers/net/ethernet/amazon/ena/ena_admin_defs.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_admin_defs.h b/drivers/net/ethernet/amazon/ena/ena_admin_defs.h
index a46e749..f48c886 100644
--- a/drivers/net/ethernet/amazon/ena/ena_admin_defs.h
+++ b/drivers/net/ethernet/amazon/ena/ena_admin_defs.h
@@ -631,22 +631,22 @@ enum ena_admin_flow_hash_proto {
/* RSS flow hash fields */
enum ena_admin_flow_hash_fields {
/* Ethernet Dest Addr */
- ENA_ADMIN_RSS_L2_DA = 0,
+ ENA_ADMIN_RSS_L2_DA = 0x1,
/* Ethernet Src Addr */
- ENA_ADMIN_RSS_L2_SA = 1,
+ ENA_ADMIN_RSS_L2_SA = 0x2,
/* ipv4/6 Dest Addr */
- ENA_ADMIN_RSS_L3_DA = 2,
+ ENA_ADMIN_RSS_L3_DA = 0x4,
/* ipv4/6 Src Addr */
- ENA_ADMIN_RSS_L3_SA = 5,
+ ENA_ADMIN_RSS_L3_SA = 0x8,
/* tcp/udp Dest Port */
- ENA_ADMIN_RSS_L4_DP = 6,
+ ENA_ADMIN_RSS_L4_DP = 0x10,
/* tcp/udp Src Port */
- ENA_ADMIN_RSS_L4_SP = 7,
+ ENA_ADMIN_RSS_L4_SP = 0x20,
};
struct ena_admin_proto_input {
--
2.7.4
^ permalink raw reply related
* [PATCH V2 net 02/20] net/ena: fix error handling when probe fails
From: Netanel Belgazal @ 2016-12-04 13:19 UTC (permalink / raw)
To: linux-kernel, davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, alex, saeed, msw, aliguori, nafea
In-Reply-To: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com>
When driver fails in probe, it will release all resources, including
adapter.
In case of probe failure, ena_remove should not try to free the adapter
resources.
Signed-off-by: Netanel Belgazal <netanel@annapurnalabs.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 33a760e..397c9bc 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -3054,6 +3054,7 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
err_free_region:
ena_release_bars(ena_dev, pdev);
err_free_ena_dev:
+ pci_set_drvdata(pdev, NULL);
vfree(ena_dev);
err_disable_device:
pci_disable_device(pdev);
--
2.7.4
^ permalink raw reply related
* [PATCH V2 net 01/20] net/ena: remove ntuple filter support from device feature list
From: Netanel Belgazal @ 2016-12-04 13:19 UTC (permalink / raw)
To: linux-kernel, davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, alex, saeed, msw, aliguori, nafea
In-Reply-To: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com>
Remove NETIF_F_NTUPLE from netdev->features.
The ENA device driver does not support ntuple filtering.
Signed-off-by: Netanel Belgazal <netanel@annapurnalabs.com>
---
drivers/net/ethernet/amazon/ena/ena_netdev.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index bfeaec5..33a760e 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -2729,7 +2729,6 @@ static void ena_set_dev_offloads(struct ena_com_dev_get_features_ctx *feat,
netdev->features =
dev_features |
NETIF_F_SG |
- NETIF_F_NTUPLE |
NETIF_F_RXHASH |
NETIF_F_HIGHDMA;
--
2.7.4
^ permalink raw reply related
* [PATCH V2 net 00/20] Increase ENA driver version to 1.1.2
From: Netanel Belgazal @ 2016-12-04 13:19 UTC (permalink / raw)
To: linux-kernel, davem, netdev
Cc: Netanel Belgazal, dwmw, zorik, alex, saeed, msw, aliguori, nafea
Changes between V1 and V2:
* reorder the patches so the bug fixes will appear first.
* fix the commit message of removing a tuple filter. The first patch
stated mistakenly that it removes RFS.
* add another bug fix (fix RSS default hash configuration).
* split the driver's version increase to a dedicated patch.
* add this patchset description.
This patchset contains mainly bug fixes.
Most of them are critical for the driver and system functionality.
In addition to the bug fixes, this patchset also introduces some minor
Improvements listed below.
Bug fixes:
net/ena: remove ntuple filter support from device feature list
net/ena: fix error handling when probe fails
net/ena: fix queues number calculation
net/ena: fix ethtool RSS flow configuration
net/ena: fix RSS default hash configuration
net/ena: fix NULL dereference when removing the driver after device
reset faild
net/ena: refactor ena_get_stats64 to be atomic context safe
net/ena: add hardware hints capability to the driver
net/ena: fix potential access to freed memory during device reset
net/ena: remove redundant logic in napi callback for busy poll mode
net/ena: use READ_ONCE to access completion descriptors
net/ena: reduce the severity of ena printouts
net/ena: change driver's default timeouts
net/ena: change condition for host attribute configuration
net/ena: change sizeof() argument to be the type pointer
Other improvments:
net/ena: change sizeof() argument to be the type pointer
net/ena: use napi_schedule_irqoff when possible
net/ena: add IPv6 extended protocols to ena_admin_flow_hash_proto
net/ena: remove affinity hint from the driver
net/ena: restructure skb allocation
net/ena: increase driver version to 1.1.2
Netanel Belgazal (20):
net/ena: remove ntuple filter support from device feature list
net/ena: fix error handling when probe fails
net/ena: fix queues number calculation
net/ena: fix ethtool RSS flow configuration
net/ena: fix RSS default hash configuration
net/ena: fix NULL dereference when removing the driver after device
reset faild
net/ena: refactor ena_get_stats64 to be atomic context safe
net/ena: add hardware hints capability to the driver
net/ena: fix potential access to freed memory during device reset
net/ena: remove redundant logic in napi callback for busy poll mode
net/ena: use READ_ONCE to access completion descriptors
net/ena: reduce the severity of ena printouts
net/ena: change driver's default timeouts
net/ena: change condition for host attribute configuration
net/ena: change sizeof() argument to be the type pointer
net/ena: use napi_schedule_irqoff when possible
net/ena: add IPv6 extended protocols to ena_admin_flow_hash_proto
net/ena: remove affinity hint from the driver
net/ena: restructure skb allocation
net/ena: increase driver version to 1.1.2
drivers/net/ethernet/amazon/ena/ena_admin_defs.h | 57 +++-
drivers/net/ethernet/amazon/ena/ena_com.c | 98 ++++---
drivers/net/ethernet/amazon/ena/ena_com.h | 6 +
drivers/net/ethernet/amazon/ena/ena_eth_com.c | 8 +-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 1 -
drivers/net/ethernet/amazon/ena/ena_netdev.c | 326 ++++++++++++++++-------
drivers/net/ethernet/amazon/ena/ena_netdev.h | 30 ++-
drivers/net/ethernet/amazon/ena/ena_regs_defs.h | 2 +
8 files changed, 385 insertions(+), 143 deletions(-)
--
2.7.4
^ permalink raw reply
* Re: [PATCN net-next] net_sched: gen_estimator: complete rewrite of rate estimators
From: kbuild test robot @ 2016-12-04 12:42 UTC (permalink / raw)
To: Eric Dumazet; +Cc: kbuild-all, David Miller, netdev, netfilter-devel
In-Reply-To: <1480835273.18162.457.camel@edumazet-glaptop3.roam.corp.google.com>
[-- Attachment #1: Type: text/plain, Size: 5617 bytes --]
Hi Eric,
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Eric-Dumazet/net_sched-gen_estimator-complete-rewrite-of-rate-estimators/20161204-185201
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/sock.h:467: warning: No description found for parameter '__sk_flags_offset[0]'
include/net/sock.h:467: warning: No description found for parameter 'sk_uid'
net/core/gen_stats.c:209: warning: No description found for parameter 'ptr'
net/core/gen_stats.c:209: warning: Excess function parameter 'b' description in 'gnet_stats_copy_rate_est'
net/core/gen_stats.c:209: warning: Excess function parameter 'r' description in 'gnet_stats_copy_rate_est'
>> net/core/gen_estimator.c:191: warning: No description found for parameter 'ptr'
>> net/core/gen_estimator.c:191: warning: Excess function parameter 'est' description in 'gen_kill_estimator'
net/core/gen_estimator.c:221: warning: No description found for parameter 'ptr'
>> net/core/gen_estimator.c:221: warning: Excess function parameter 'rate_est' description in 'gen_replace_estimator'
net/core/gen_estimator.c:233: warning: No description found for parameter 'ptr'
>> net/core/gen_estimator.c:233: warning: Excess function parameter 'rate_est' description in 'gen_estimator_active'
vim +/ptr +191 net/core/gen_estimator.c
2db8f09a Eric Dumazet 2016-12-03 185 * @est: rate estimator
^1da177e Linus Torvalds 2005-04-16 186 *
2db8f09a Eric Dumazet 2016-12-03 187 * Removes the rate estimator.
0929c2dd Ranko Zivojnovic 2007-07-16 188 *
^1da177e Linus Torvalds 2005-04-16 189 */
2db8f09a Eric Dumazet 2016-12-03 190 void gen_kill_estimator(struct net_rate_estimator __rcu **ptr)
^1da177e Linus Torvalds 2005-04-16 @191 {
2db8f09a Eric Dumazet 2016-12-03 192 struct net_rate_estimator *est;
^1da177e Linus Torvalds 2005-04-16 193
2db8f09a Eric Dumazet 2016-12-03 194 est = xchg((__force struct net_rate_estimator **)ptr, NULL);
2db8f09a Eric Dumazet 2016-12-03 195 if (est) {
2db8f09a Eric Dumazet 2016-12-03 196 del_timer_sync(&est->timer);
2db8f09a Eric Dumazet 2016-12-03 197 kfree_rcu(est, rcu);
^1da177e Linus Torvalds 2005-04-16 198 }
^1da177e Linus Torvalds 2005-04-16 199 }
c1b56878 Stephen Hemminger 2008-11-25 200 EXPORT_SYMBOL(gen_kill_estimator);
^1da177e Linus Torvalds 2005-04-16 201
^1da177e Linus Torvalds 2005-04-16 202 /**
96750162 Jarek Poplawski 2008-01-21 203 * gen_replace_estimator - replace rate estimator configuration
^1da177e Linus Torvalds 2005-04-16 204 * @bstats: basic statistics
e9fc2f05 Luis de Bethencourt 2016-03-19 205 * @cpu_bstats: bstats per cpu
^1da177e Linus Torvalds 2005-04-16 206 * @rate_est: rate estimator statistics
^1da177e Linus Torvalds 2005-04-16 207 * @stats_lock: statistics lock
edb09eb1 Eric Dumazet 2016-06-06 208 * @running: qdisc running seqcount (might be NULL)
^1da177e Linus Torvalds 2005-04-16 209 * @opt: rate estimator configuration TLV
^1da177e Linus Torvalds 2005-04-16 210 *
^1da177e Linus Torvalds 2005-04-16 211 * Replaces the configuration of a rate estimator by calling
^1da177e Linus Torvalds 2005-04-16 212 * gen_kill_estimator() and gen_new_estimator().
^1da177e Linus Torvalds 2005-04-16 213 *
^1da177e Linus Torvalds 2005-04-16 214 * Returns 0 on success or a negative error code.
^1da177e Linus Torvalds 2005-04-16 215 */
c1a8f1f1 Eric Dumazet 2009-08-16 216 int gen_replace_estimator(struct gnet_stats_basic_packed *bstats,
22e0f8b9 John Fastabend 2014-09-28 217 struct gnet_stats_basic_cpu __percpu *cpu_bstats,
2db8f09a Eric Dumazet 2016-12-03 218 struct net_rate_estimator __rcu **ptr,
edb09eb1 Eric Dumazet 2016-06-06 219 spinlock_t *stats_lock,
edb09eb1 Eric Dumazet 2016-06-06 220 seqcount_t *running, struct nlattr *opt)
^1da177e Linus Torvalds 2005-04-16 @221 {
2db8f09a Eric Dumazet 2016-12-03 222 return gen_new_estimator(bstats, cpu_bstats, ptr, stats_lock, running, opt);
^1da177e Linus Torvalds 2005-04-16 223 }
c1b56878 Stephen Hemminger 2008-11-25 224 EXPORT_SYMBOL(gen_replace_estimator);
^1da177e Linus Torvalds 2005-04-16 225
c1b56878 Stephen Hemminger 2008-11-25 226 /**
c1b56878 Stephen Hemminger 2008-11-25 227 * gen_estimator_active - test if estimator is currently in use
2db8f09a Eric Dumazet 2016-12-03 228 * @rate_est: rate estimator
c1b56878 Stephen Hemminger 2008-11-25 229 *
244e6c2d Jarek Poplawski 2008-11-26 230 * Returns true if estimator is active, and false if not.
c1b56878 Stephen Hemminger 2008-11-25 231 */
2db8f09a Eric Dumazet 2016-12-03 232 bool gen_estimator_active(struct net_rate_estimator __rcu **ptr)
c1b56878 Stephen Hemminger 2008-11-25 @233 {
2db8f09a Eric Dumazet 2016-12-03 234 return !!rcu_access_pointer(*ptr);
2db8f09a Eric Dumazet 2016-12-03 235 }
2db8f09a Eric Dumazet 2016-12-03 236 EXPORT_SYMBOL(gen_estimator_active);
:::::: The code at line 191 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6425 bytes --]
^ permalink raw reply
* Trigger EHOSTUNREACH
From: Marco Zunino @ 2016-12-04 12:04 UTC (permalink / raw)
To: netdev
Hallo everyone, hope you are having a good day
we are building a networking testing tool to simulate network error
condition, and we are having difficulties triggering the EHOSTUNREACH
socket error.
We are trying to trigger this error by sending an ICMP packet type=3
code=3 on an open STREAM socket, but it has no effect.
Based on RFC1122 and the code here
https://github.com/torvalds/linux/blob/e76d21c40bd6c67fd4e2c1540d77e113df962b4d/net/ipv4/tcp_ipv4.c#L353
I would expect the this ICMP packet to abort the socket connection
with a EHOSTUNREACH error on the client side, but this does not
happen.
In RFC5927 we also see basically all hard_error should not be
considered so, and TCP connection never being aborted as a result of
ICMP error, for security and robustness reason.
If we send the same ICMP on a STREAM socket in SYN_SENT state (while
still waiting for the SYN_ACK to be received) the socket fails but
with an error ECONNREFUSED.
Could you give us a direction to better understand how ICMP errors
interact with TCP sockets? What about DGRAM sockets?
Thank you!
- Z
^ permalink raw reply
* Auditor General Office
From: Mr.Malaki Ahmed @ 2016-12-04 11:25 UTC (permalink / raw)
Mr.Malaki Ahmed
Auditor General Office
Attn,
I feel quite safe dealing with you in this important business. Though
this medium (Internet) has been greatly abused, I choose to reach you
through it because it still remains the fastest medium of
communication. However, this correspondence is private, and it should
be treated in strict confidence.
Firstly I will like to assure you that this transaction is 100% risk
and trouble free to both parties, In order to transfer out fifteen
million two hundred thousand dollars, (US$15.200 000 00) from our bank
here, secondly the fund for transfers of clean origin.
The owner of the fund is a foreigner, a program leader who was
believed to have acquired the fund through his secret Crude Oil deal
with the Former IRAQ government.
The deceased died with all the members of his family in an auto
accident without a WILL. Again the amount involved isUS$15,200,000.00.
I want to transfer this money into your account as the foreign
beneficiary of the fund. I know that this letter will come to you as a
surprise as we don't know ourselves before, but be sure that it is
real and a genuine business. I contact you believing that you will not
let me down once the fund goes into your account.
Let me hear from you through my private Email: ahmedmalaki46@gmail.com
Regards
Ahmed
^ permalink raw reply
* Re: [PATCN v2 net-next] net_sched: gen_estimator: complete rewrite of rate estimators
From: kbuild test robot @ 2016-12-04 11:22 UTC (permalink / raw)
To: Eric Dumazet; +Cc: kbuild-all, David Miller, netdev, netfilter-devel
In-Reply-To: <1480835882.18162.462.camel@edumazet-glaptop3.roam.corp.google.com>
[-- Attachment #1: Type: text/plain, Size: 2924 bytes --]
Hi Eric,
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Eric-Dumazet/net_sched-gen_estimator-complete-rewrite-of-rate-estimators/20161204-182009
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/sock.h:467: warning: No description found for parameter '__sk_flags_offset[0]'
include/net/sock.h:467: warning: No description found for parameter 'sk_uid'
>> net/core/gen_stats.c:209: warning: No description found for parameter 'ptr'
>> net/core/gen_stats.c:209: warning: Excess function parameter 'b' description in 'gnet_stats_copy_rate_est'
>> net/core/gen_stats.c:209: warning: Excess function parameter 'r' description in 'gnet_stats_copy_rate_est'
vim +/ptr +209 net/core/gen_stats.c
^1da177e Linus Torvalds 2005-04-16 193
^1da177e Linus Torvalds 2005-04-16 194 /**
^1da177e Linus Torvalds 2005-04-16 195 * gnet_stats_copy_rate_est - copy rate estimator statistics into statistics TLV
^1da177e Linus Torvalds 2005-04-16 196 * @d: dumping handle
d250a5f9 Eric Dumazet 2009-10-02 197 * @b: basic statistics
^1da177e Linus Torvalds 2005-04-16 198 * @r: rate estimator statistics
^1da177e Linus Torvalds 2005-04-16 199 *
^1da177e Linus Torvalds 2005-04-16 200 * Appends the rate estimator statistics to the top level TLV created by
^1da177e Linus Torvalds 2005-04-16 201 * gnet_stats_start_copy().
^1da177e Linus Torvalds 2005-04-16 202 *
^1da177e Linus Torvalds 2005-04-16 203 * Returns 0 on success or -1 with the statistic lock released
^1da177e Linus Torvalds 2005-04-16 204 * if the room in the socket buffer was not sufficient.
^1da177e Linus Torvalds 2005-04-16 205 */
^1da177e Linus Torvalds 2005-04-16 206 int
d250a5f9 Eric Dumazet 2009-10-02 207 gnet_stats_copy_rate_est(struct gnet_dump *d,
f96b940b Eric Dumazet 2016-12-03 208 struct net_rate_estimator __rcu **ptr)
^1da177e Linus Torvalds 2005-04-16 @209 {
f96b940b Eric Dumazet 2016-12-03 210 struct gnet_stats_rate_est64 sample;
45203a3b Eric Dumazet 2013-06-06 211 struct gnet_stats_rate_est est;
45203a3b Eric Dumazet 2013-06-06 212 int res;
45203a3b Eric Dumazet 2013-06-06 213
f96b940b Eric Dumazet 2016-12-03 214 if (!gen_estimator_read(ptr, &sample))
d250a5f9 Eric Dumazet 2009-10-02 215 return 0;
f96b940b Eric Dumazet 2016-12-03 216 est.bps = min_t(u64, UINT_MAX, sample.bps);
45203a3b Eric Dumazet 2013-06-06 217 /* we have some time before reaching 2^32 packets per second */
:::::: The code at line 209 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6425 bytes --]
^ permalink raw reply
* [PATCH 1/1] net: qed: set error code on failure
From: Pan Bian @ 2016-12-04 10:59 UTC (permalink / raw)
To: Yuval Mintz, Ariel Elior, everest-linux-l2, netdev; +Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
When calling dma_mapping_error(), the value of return variable rc is 0.
And when the call returns an unexpected value, rc is not set to a
negative errno. Thus, it will return 0 on the error path, and its
callers cannot detect the bug. This patch fixes the bug, assigning
"-ENOMEM" to err.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189041
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/net/ethernet/qlogic/qed/qed_ll2.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
index f95385c..62ae55b 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
@@ -1730,6 +1730,7 @@ static int qed_ll2_start_xmit(struct qed_dev *cdev, struct sk_buff *skb)
mapping))) {
DP_NOTICE(cdev,
"Unable to map frag - dropping packet\n");
+ rc = -ENOMEM;
goto err;
}
} else {
--
1.9.1
^ permalink raw reply related
* [PATCH net 1/6] net/mlx5: Verify module parameters
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Kamal Heib, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
From: Kamal Heib <kamalh@mellanox.com>
Verify the mlx5_core module parameters by making sure that they are in
the expected range and if they aren't restore them to their default
values.
Fixes: 9603b61de1ee ('mlx5: Move pci device handling from mlx5_ib to mlx5_core')
Signed-off-by: Kamal Heib <kamalh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/main.c | 27 +++++++++++++---------
.../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 +-
2 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 3b7c6a9f..ab8f2b4 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -62,13 +62,13 @@ MODULE_DESCRIPTION("Mellanox Connect-IB, ConnectX-4 core driver");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_VERSION(DRIVER_VERSION);
-int mlx5_core_debug_mask;
-module_param_named(debug_mask, mlx5_core_debug_mask, int, 0644);
+uint mlx5_core_debug_mask;
+module_param_named(debug_mask, mlx5_core_debug_mask, uint, 0644);
MODULE_PARM_DESC(debug_mask, "debug mask: 1 = dump cmd data, 2 = dump cmd exec time, 3 = both. Default=0");
#define MLX5_DEFAULT_PROF 2
-static int prof_sel = MLX5_DEFAULT_PROF;
-module_param_named(prof_sel, prof_sel, int, 0444);
+static uint prof_sel = MLX5_DEFAULT_PROF;
+module_param_named(prof_sel, prof_sel, uint, 0444);
MODULE_PARM_DESC(prof_sel, "profile selector. Valid range 0 - 2");
enum {
@@ -1227,13 +1227,6 @@ static int init_one(struct pci_dev *pdev,
dev->pdev = pdev;
dev->event = mlx5_core_event;
-
- if (prof_sel < 0 || prof_sel >= ARRAY_SIZE(profile)) {
- mlx5_core_warn(dev,
- "selected profile out of range, selecting default (%d)\n",
- MLX5_DEFAULT_PROF);
- prof_sel = MLX5_DEFAULT_PROF;
- }
dev->profile = &profile[prof_sel];
INIT_LIST_HEAD(&priv->ctx_list);
@@ -1450,10 +1443,22 @@ static struct pci_driver mlx5_core_driver = {
.sriov_configure = mlx5_core_sriov_configure,
};
+static void mlx5_core_verify_params(void)
+{
+ if (prof_sel >= ARRAY_SIZE(profile)) {
+ pr_warn("mlx5_core: WARNING: Invalid module parameter prof_sel %d, valid range 0-%zu, changing back to default(%d)\n",
+ prof_sel,
+ ARRAY_SIZE(profile) - 1,
+ MLX5_DEFAULT_PROF);
+ prof_sel = MLX5_DEFAULT_PROF;
+ }
+}
+
static int __init init(void)
{
int err;
+ mlx5_core_verify_params();
mlx5_register_debugfs();
err = pci_register_driver(&mlx5_core_driver);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index 187662c..20d16b1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -44,7 +44,7 @@
#define MLX5_TOTAL_VPORTS(mdev) (1 + pci_sriov_get_totalvfs(mdev->pdev))
-extern int mlx5_core_debug_mask;
+extern uint mlx5_core_debug_mask;
#define mlx5_core_dbg(__dev, format, ...) \
dev_dbg(&(__dev)->pdev->dev, "%s:%s:%d:(pid %d): " format, \
--
2.7.4
^ permalink raw reply related
* [PATCH net 2/6] net/mlx5: Remove duplicate pci dev name print
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Kamal Heib, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
From: Kamal Heib <kamalh@mellanox.com>
Remove duplicate pci dev name printing from mlx5_core_warn/dbg.
Fixes: 5a7883989b1c ('net/mlx5_core: Improve mlx5 messages')
Signed-off-by: Kamal Heib <kamalh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index 20d16b1..2ce0346 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -47,8 +47,8 @@
extern uint mlx5_core_debug_mask;
#define mlx5_core_dbg(__dev, format, ...) \
- dev_dbg(&(__dev)->pdev->dev, "%s:%s:%d:(pid %d): " format, \
- (__dev)->priv.name, __func__, __LINE__, current->pid, \
+ dev_dbg(&(__dev)->pdev->dev, "%s:%d:(pid %d): " format, \
+ __func__, __LINE__, current->pid, \
##__VA_ARGS__)
#define mlx5_core_dbg_mask(__dev, mask, format, ...) \
@@ -63,8 +63,8 @@ do { \
##__VA_ARGS__)
#define mlx5_core_warn(__dev, format, ...) \
- dev_warn(&(__dev)->pdev->dev, "%s:%s:%d:(pid %d): " format, \
- (__dev)->priv.name, __func__, __LINE__, current->pid, \
+ dev_warn(&(__dev)->pdev->dev, "%s:%d:(pid %d): " format, \
+ __func__, __LINE__, current->pid, \
##__VA_ARGS__)
#define mlx5_core_info(__dev, format, ...) \
--
2.7.4
^ permalink raw reply related
* [PATCH net 0/6] Mellanox 100G mlx5 fixes 2016-12-04
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Saeed Mahameed
Hi Dave,
Some bug fixes for mlx5 core and mlx5e driver.
Thanks,
Saeed.
Kamal Heib (3):
net/mlx5: Verify module parameters
net/mlx5: Remove duplicate pci dev name print
net/mlx5: Fix query ISSI flow
Mohamad Haj Yahia (1):
net/mlx5e: Change the SQ/RQ operational state to positive logic
Saeed Mahameed (2):
net/mlx5e: Don't notify HW when filling the edge of ICO SQ
net/mlx5e: Don't flush SQ on error
drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 5 ---
drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 +--
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 15 ++++----
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 8 ++---
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 4 +--
drivers/net/ethernet/mellanox/mlx5/core/main.c | 42 +++++++++++++---------
.../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 15 +++++---
8 files changed, 53 insertions(+), 42 deletions(-)
--
2.7.4
^ permalink raw reply
* [PATCH net 5/6] net/mlx5e: Don't flush SQ on error
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
We are doing SQ descriptors cleanup in driver.
Fixes: 6e8dd6d6f4bd ("net/mlx5e: Don't wait for SQ completions on close")
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 84e8b25..5bf7f86 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -1006,7 +1006,6 @@ static int mlx5e_enable_sq(struct mlx5e_sq *sq, struct mlx5e_sq_param *param)
MLX5_SET(sqc, sqc, min_wqe_inline_mode, sq->min_inline_mode);
MLX5_SET(sqc, sqc, state, MLX5_SQC_STATE_RST);
MLX5_SET(sqc, sqc, tis_lst_sz, param->type == MLX5E_SQ_ICO ? 0 : 1);
- MLX5_SET(sqc, sqc, flush_in_error_en, 1);
MLX5_SET(wq, wq, wq_type, MLX5_WQ_TYPE_CYCLIC);
MLX5_SET(wq, wq, uar_page, sq->uar.index);
--
2.7.4
^ permalink raw reply related
* [PATCH net 4/6] net/mlx5e: Don't notify HW when filling the edge of ICO SQ
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
We are going to do this a couple of steps ahead anyway.
Fixes: d3c9bc2743dc ("net/mlx5e: Added ICO SQs")
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
index c6de6fb..e9abb6d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
@@ -340,7 +340,7 @@ static inline void mlx5e_post_umr_wqe(struct mlx5e_rq *rq, u16 ix)
while ((pi = (sq->pc & wq->sz_m1)) > sq->edge) {
sq->db.ico_wqe[pi].opcode = MLX5_OPCODE_NOP;
sq->db.ico_wqe[pi].num_wqebbs = 1;
- mlx5e_send_nop(sq, true);
+ mlx5e_send_nop(sq, false);
}
wqe = mlx5_wq_cyc_get_wqe(wq, pi);
--
2.7.4
^ permalink raw reply related
* [PATCH net 3/6] net/mlx5: Fix query ISSI flow
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Kamal Heib, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
From: Kamal Heib <kamalh@mellanox.com>
In old FWs query ISSI command is not supported and for some of those FWs
it might fail with status other than "MLX5_CMD_STAT_BAD_OP_ERR".
In such case instead of failing the driver load, we will treat any FW
status other than 0 for Query ISSI FW command as ISSI not supported and
assume ISSI=0 (most basic driver/FW interface).
In case of driver syndrom (query ISSI failure by driver) we will fail
driver load.
Fixes: f62b8bb8f2d3 ('net/mlx5: Extend mlx5_core to support ConnectX-4
Ethernet functionality')
Signed-off-by: Kamal Heib <kamalh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 5 -----
drivers/net/ethernet/mellanox/mlx5/core/main.c | 15 +++++++++------
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 5 +++++
3 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
index 1e639f8..bfe410e 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
@@ -268,11 +268,6 @@ static void dump_buf(void *buf, int size, int data_only, int offset)
pr_debug("\n");
}
-enum {
- MLX5_DRIVER_STATUS_ABORTED = 0xfe,
- MLX5_DRIVER_SYND = 0xbadd00de,
-};
-
static int mlx5_internal_err_ret_value(struct mlx5_core_dev *dev, u16 op,
u32 *synd, u8 *status)
{
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index ab8f2b4..296e45b 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -732,13 +732,15 @@ static int mlx5_core_set_issi(struct mlx5_core_dev *dev)
u8 status;
mlx5_cmd_mbox_status(query_out, &status, &syndrome);
- if (status == MLX5_CMD_STAT_BAD_OP_ERR) {
- pr_debug("Only ISSI 0 is supported\n");
- return 0;
+ if (!status || syndrome == MLX5_DRIVER_SYND) {
+ mlx5_core_err(dev, "Failed to query ISSI err(%d) status(%d) synd(%d)\n",
+ err, status, syndrome);
+ return err;
}
- pr_err("failed to query ISSI err(%d)\n", err);
- return err;
+ mlx5_core_warn(dev, "Query ISSI is not supported by FW, ISSI is 0\n");
+ dev->issi = 0;
+ return 0;
}
sup_issi = MLX5_GET(query_issi_out, query_out, supported_issi_dw0);
@@ -752,7 +754,8 @@ static int mlx5_core_set_issi(struct mlx5_core_dev *dev)
err = mlx5_cmd_exec(dev, set_in, sizeof(set_in),
set_out, sizeof(set_out));
if (err) {
- pr_err("failed to set ISSI=1 err(%d)\n", err);
+ mlx5_core_err(dev, "Failed to set ISSI to 1 err(%d)\n",
+ err);
return err;
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index 2ce0346..63b9a0d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -75,6 +75,11 @@ enum {
MLX5_CMD_TIME, /* print command execution time */
};
+enum {
+ MLX5_DRIVER_STATUS_ABORTED = 0xfe,
+ MLX5_DRIVER_SYND = 0xbadd00de,
+};
+
int mlx5_query_hca_caps(struct mlx5_core_dev *dev);
int mlx5_query_board_id(struct mlx5_core_dev *dev);
int mlx5_cmd_init_hca(struct mlx5_core_dev *dev);
--
2.7.4
^ permalink raw reply related
* [PATCH net 6/6] net/mlx5e: Change the SQ/RQ operational state to positive logic
From: Saeed Mahameed @ 2016-12-04 10:56 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Mohamad Haj Yahia, Saeed Mahameed
In-Reply-To: <1480848976-6797-1-git-send-email-saeedm@mellanox.com>
From: Mohamad Haj Yahia <mohamad@mellanox.com>
When using the negative logic (i.e. FLUSH state), after the RQ/SQ reopen
we will have a time interval that the RQ/SQ is not really ready and the
state indicates that its not in FLUSH state because the initial SQ/RQ struct
memory starts as zeros.
Now we changed the state to indicate if the SQ/RQ is opened and we will
set the READY state after finishing preparing all the SQ/RQ resources.
Fixes: 6e8dd6d6f4bd ("net/mlx5e: Don't wait for SQ completions on close")
Fixes: f2fde18c52a7 ("net/mlx5e: Don't wait for RQ completions on close")
Signed-off-by: Mohamad Haj Yahia <mohamad@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 ++--
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 14 +++++++++-----
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 6 +++---
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 4 ++--
5 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index 7a43502..71382df 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -241,7 +241,7 @@ struct mlx5e_tstamp {
};
enum {
- MLX5E_RQ_STATE_FLUSH,
+ MLX5E_RQ_STATE_ENABLED,
MLX5E_RQ_STATE_UMR_WQE_IN_PROGRESS,
MLX5E_RQ_STATE_AM,
};
@@ -394,7 +394,7 @@ struct mlx5e_sq_dma {
};
enum {
- MLX5E_SQ_STATE_FLUSH,
+ MLX5E_SQ_STATE_ENABLED,
MLX5E_SQ_STATE_BF_ENABLE,
};
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 5bf7f86..246d98e 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -759,6 +759,7 @@ static int mlx5e_open_rq(struct mlx5e_channel *c,
if (err)
goto err_destroy_rq;
+ set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
err = mlx5e_modify_rq_state(rq, MLX5_RQC_STATE_RST, MLX5_RQC_STATE_RDY);
if (err)
goto err_disable_rq;
@@ -773,6 +774,7 @@ static int mlx5e_open_rq(struct mlx5e_channel *c,
return 0;
err_disable_rq:
+ clear_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
mlx5e_disable_rq(rq);
err_destroy_rq:
mlx5e_destroy_rq(rq);
@@ -782,7 +784,7 @@ static int mlx5e_open_rq(struct mlx5e_channel *c,
static void mlx5e_close_rq(struct mlx5e_rq *rq)
{
- set_bit(MLX5E_RQ_STATE_FLUSH, &rq->state);
+ clear_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
napi_synchronize(&rq->channel->napi); /* prevent mlx5e_post_rx_wqes */
cancel_work_sync(&rq->am.work);
@@ -1082,6 +1084,7 @@ static int mlx5e_open_sq(struct mlx5e_channel *c,
if (err)
goto err_destroy_sq;
+ set_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
err = mlx5e_modify_sq(sq, MLX5_SQC_STATE_RST, MLX5_SQC_STATE_RDY,
false, 0);
if (err)
@@ -1095,6 +1098,7 @@ static int mlx5e_open_sq(struct mlx5e_channel *c,
return 0;
err_disable_sq:
+ clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
mlx5e_disable_sq(sq);
err_destroy_sq:
mlx5e_destroy_sq(sq);
@@ -1111,7 +1115,7 @@ static inline void netif_tx_disable_queue(struct netdev_queue *txq)
static void mlx5e_close_sq(struct mlx5e_sq *sq)
{
- set_bit(MLX5E_SQ_STATE_FLUSH, &sq->state);
+ clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
/* prevent netif_tx_wake_queue */
napi_synchronize(&sq->channel->napi);
@@ -3091,7 +3095,7 @@ static void mlx5e_tx_timeout(struct net_device *dev)
if (!netif_xmit_stopped(netdev_get_tx_queue(dev, i)))
continue;
sched_work = true;
- set_bit(MLX5E_SQ_STATE_FLUSH, &sq->state);
+ clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
netdev_err(dev, "TX timeout on queue: %d, SQ: 0x%x, CQ: 0x%x, SQ Cons: 0x%x SQ Prod: 0x%x\n",
i, sq->sqn, sq->cq.mcq.cqn, sq->cc, sq->pc);
}
@@ -3146,13 +3150,13 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
for (i = 0; i < priv->params.num_channels; i++) {
struct mlx5e_channel *c = priv->channel[i];
- set_bit(MLX5E_RQ_STATE_FLUSH, &c->rq.state);
+ clear_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state);
napi_synchronize(&c->napi);
/* prevent mlx5e_poll_rx_cq from accessing rq->xdp_prog */
old_prog = xchg(&c->rq.xdp_prog, prog);
- clear_bit(MLX5E_RQ_STATE_FLUSH, &c->rq.state);
+ set_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state);
/* napi_schedule in case we have missed anything */
set_bit(MLX5E_CHANNEL_NAPI_SCHED, &c->flags);
napi_schedule(&c->napi);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
index e9abb6d..33495d8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
@@ -412,7 +412,7 @@ void mlx5e_post_rx_mpwqe(struct mlx5e_rq *rq)
clear_bit(MLX5E_RQ_STATE_UMR_WQE_IN_PROGRESS, &rq->state);
- if (unlikely(test_bit(MLX5E_RQ_STATE_FLUSH, &rq->state))) {
+ if (unlikely(!test_bit(MLX5E_RQ_STATE_ENABLED, &rq->state))) {
mlx5e_free_rx_mpwqe(rq, &rq->mpwqe.info[wq->head]);
return;
}
@@ -445,7 +445,7 @@ void mlx5e_dealloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix)
}
#define RQ_CANNOT_POST(rq) \
- (test_bit(MLX5E_RQ_STATE_FLUSH, &rq->state) || \
+ (!test_bit(MLX5E_RQ_STATE_ENABLED, &rq->state) || \
test_bit(MLX5E_RQ_STATE_UMR_WQE_IN_PROGRESS, &rq->state))
bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq)
@@ -924,7 +924,7 @@ int mlx5e_poll_rx_cq(struct mlx5e_cq *cq, int budget)
struct mlx5e_sq *xdp_sq = &rq->channel->xdp_sq;
int work_done = 0;
- if (unlikely(test_bit(MLX5E_RQ_STATE_FLUSH, &rq->state)))
+ if (unlikely(!test_bit(MLX5E_RQ_STATE_ENABLED, &rq->state)))
return 0;
if (cq->decmprs_left)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
index 70a7173..cfb6837 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
@@ -409,7 +409,7 @@ bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget)
sq = container_of(cq, struct mlx5e_sq, cq);
- if (unlikely(test_bit(MLX5E_SQ_STATE_FLUSH, &sq->state)))
+ if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &sq->state)))
return false;
npkts = 0;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c
index 5703f19..e5c12a7 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c
@@ -56,7 +56,7 @@ static void mlx5e_poll_ico_cq(struct mlx5e_cq *cq)
struct mlx5_cqe64 *cqe;
u16 sqcc;
- if (unlikely(test_bit(MLX5E_SQ_STATE_FLUSH, &sq->state)))
+ if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &sq->state)))
return;
cqe = mlx5e_get_cqe(cq);
@@ -113,7 +113,7 @@ static inline bool mlx5e_poll_xdp_tx_cq(struct mlx5e_cq *cq)
sq = container_of(cq, struct mlx5e_sq, cq);
- if (unlikely(test_bit(MLX5E_SQ_STATE_FLUSH, &sq->state)))
+ if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &sq->state)))
return false;
/* sq->cc must be updated only after mlx5_cqwq_update_db_record(),
--
2.7.4
^ permalink raw reply related
* [PATCH 1/1 v2] net: bnx2x: fix improper return value
From: Pan Bian @ 2016-12-04 10:46 UTC (permalink / raw)
To: Sergei Shtylyov, Michal Kalderon, Yuval Mintz, Ariel Elior,
everest-linux-l2, netdev
Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
Macro BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
first cleans memory and then returns variable rc. Before calling the
macro, the value of variable rc is 0. Because 0 means no error, the
callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 0cee4c0..6f9fc20 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -13505,6 +13505,7 @@ static int bnx2x_init_firmware(struct bnx2x *bp)
/* Initialize the pointers to the init arrays */
/* Blob */
+ rc = -ENOMEM;
BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
/* Opcodes */
--
1.9.1
^ permalink raw reply related
* [PATCH 1/1 v2] isdn: hisax: set error code on failure
From: Pan Bian @ 2016-12-04 10:43 UTC (permalink / raw)
To: Sergei Shtylyov, Karsten Keil, netdev; +Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
In function hfc4s8s_probe(), the value of return variable err should be
negative on failures. However, when the call to request_region() returns
NULL, the value of err is 0. This patch fixes the bug, assigning
"-EBUSY" to err on the path that request_region() fails.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188931
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/isdn/hisax/hfc4s8s_l1.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
index 9600cd7..3172cee 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.c
+++ b/drivers/isdn/hisax/hfc4s8s_l1.c
@@ -1499,6 +1499,7 @@ struct hfc4s8s_l1 {
printk(KERN_INFO
"HFC-4S/8S: failed to request address space at 0x%04x\n",
hw->iobase);
+ err = -EBUSY;
goto out;
}
--
1.9.1
^ permalink raw reply related
* [PATCH 1/1] net: bnx2x: fix improper return value
From: Pan Bian @ 2016-12-04 10:40 UTC (permalink / raw)
To: Sergei Shtylyov, Michal Kalderon, Yuval Mintz, Ariel Elior,
everest-linux-l2, netdev
Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
Macro BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
first cleans memory and then returns variable rc. Before calling the
macro, the value of variable rc is 0. Because 0 means no error, the
callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 0cee4c0..6f9fc20 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -13505,6 +13505,7 @@ static int bnx2x_init_firmware(struct bnx2x *bp)
/* Initialize the pointers to the init arrays */
/* Blob */
+ rc = -ENOMEM;
BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
/* Opcodes */
--
1.9.1
^ permalink raw reply related
* Re: [PATCH 1/1] isdn: hisax: set error code on failure
From: Sergei Shtylyov @ 2016-12-04 10:40 UTC (permalink / raw)
To: Pan Bian, Karsten Keil, netdev; +Cc: linux-kernel, Pan Bian
In-Reply-To: <1480847603-15520-1-git-send-email-bianpan201603@163.com>
On 12/4/2016 1:33 PM, Pan Bian wrote:
You now need to indicate the patch version in hte subject, like this:
[PATCH 1/1 v2] isdn:...
> From: Pan Bian <bianpan2016@163.com>
>
> In function hfc4s8s_probe(), the value of return variable err should be
> negative on failures. However, when the call to request_region() returns
> NULL, the value of err is 0. This patch fixes the bug, assiging
Assigning.
> "-EBUSY" to err on the path that request_region() fails.
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188931
>
> Signed-off-by: Pan Bian <bianpan2016@163.com>
> ---
And here you're supposed to describe changes in the different patch
versions...
[...]
MBR, Sergei
^ permalink raw reply
* [PATCH 1/1] isdn: hisax: set error code on failure
From: Pan Bian @ 2016-12-04 10:33 UTC (permalink / raw)
To: Sergei Shtylyov, Karsten Keil, netdev; +Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
In function hfc4s8s_probe(), the value of return variable err should be
negative on failures. However, when the call to request_region() returns
NULL, the value of err is 0. This patch fixes the bug, assiging
"-EBUSY" to err on the path that request_region() fails.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188931
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/isdn/hisax/hfc4s8s_l1.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
index 9600cd7..3172cee 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.c
+++ b/drivers/isdn/hisax/hfc4s8s_l1.c
@@ -1499,6 +1499,7 @@ struct hfc4s8s_l1 {
printk(KERN_INFO
"HFC-4S/8S: failed to request address space at 0x%04x\n",
hw->iobase);
+ err = -EBUSY;
goto out;
}
--
1.9.1
^ permalink raw reply related
* Re: [PATCH 1/1] net: bnx2x: fix improper return value
From: Sergei Shtylyov @ 2016-12-04 10:24 UTC (permalink / raw)
To: Pan Bian, Michal Kalderon, Yuval Mintz, Ariel Elior,
everest-linux-l2, netdev
Cc: linux-kernel, Pan Bian
In-Reply-To: <1480840746-7498-1-git-send-email-bianpan201604@163.com>
On 12/4/2016 11:39 AM, Pan Bian wrote:
> From: Pan Bian <bianpan2016@163.com>
>
> Marco BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
Macro.
> memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
> first cleans memory and then returns variable rc. Before calling the
> macro, the value of variable rc is 0. Because 0 means no error, the
> callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
> assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
>
> Signed-off-by: Pan Bian <bianpan2016@163.com>
[...]
MBR, Sergei
^ permalink raw reply
* Re: [PATCH 1/1] isdn: hisax: set error code on failure
From: Sergei Shtylyov @ 2016-12-04 10:14 UTC (permalink / raw)
To: Pan Bian, Karsten Keil, netdev; +Cc: linux-kernel, Pan Bian
In-Reply-To: <1480828511-4251-1-git-send-email-bianpan201603@163.com>
Hello.
On 12/4/2016 8:15 AM, Pan Bian wrote:
> From: Pan Bian <bianpan2016@163.com>
>
> In function hfc4s8s_probe(), the value of return variable err should be
> negative on failures. However, when the call to request_region() returns
> NULL, the value of err is 0. This patch fixes the bug, assiging
> "-ENOMEM" to err on the path that request_region() fails.
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188931
>
> Signed-off-by: Pan Bian <bianpan2016@163.com>
> ---
> drivers/isdn/hisax/hfc4s8s_l1.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
> index 9600cd7..3172cee 100644
> --- a/drivers/isdn/hisax/hfc4s8s_l1.c
> +++ b/drivers/isdn/hisax/hfc4s8s_l1.c
> @@ -1499,6 +1499,7 @@ struct hfc4s8s_l1 {
> printk(KERN_INFO
> "HFC-4S/8S: failed to request address space at 0x%04x\n",
> hw->iobase);
> + err = -ENOMEM;
-EBUSY fits request_region() better.
[..]
MBR, Sergei
^ permalink raw reply
* [PATCH 1/1] net: bnx2x: fix improper return value
From: Pan Bian @ 2016-12-04 8:39 UTC (permalink / raw)
To: Michal Kalderon, Yuval Mintz, Ariel Elior, everest-linux-l2,
netdev
Cc: linux-kernel, Pan Bian
From: Pan Bian <bianpan2016@163.com>
Marco BNX2X_ALLOC_AND_SET(arr, lbl, func) calls kmalloc() to allocate
memory, and jumps to label "lbl" if the allocation fails. Label "lbl"
first cleans memory and then returns variable rc. Before calling the
macro, the value of variable rc is 0. Because 0 means no error, the
callers of bnx2x_init_firmware() may be misled. This patch fixes the bug,
assigning "-ENOMEM" to rc before calling macro NX2X_ALLOC_AND_SET().
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189141
Signed-off-by: Pan Bian <bianpan2016@163.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 0cee4c0..6f9fc20 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -13505,6 +13505,7 @@ static int bnx2x_init_firmware(struct bnx2x *bp)
/* Initialize the pointers to the init arrays */
/* Blob */
+ rc = -ENOMEM;
BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
/* Opcodes */
--
1.9.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox