* Targeted Global B2B Companies emails list
From: catherine.white @ 2018-10-03 19:38 UTC (permalink / raw)
To: netdev
Hi,
I just wanted to check if you would be interested in a list of Managed
Service Providers (MSPs) and Managed Security Service Providers (MSSPs)?
We also have the data intelligence of:
• Managed Service Providers (MSP’s) – 25,000 unique companies
• Managed Security Service Providers (MSSP’s) – 7,520 unique
companies
• IT Decision Makers – 6million across all industry
• Business Decision Makers – 10 million across all industry
• Value Added Resellers- VARs
• Independent Software Vendors- ISVs
• System Integrators- SIs
• VoIP Service Providers.
• Telecommunications Service Providers (TSPs)
• Application Service Providers (ASPs)
• IT Managed Services Providers (ITMSP)
• Storage Service Providers (SSPs)
Kindly review and let me know if I can share more information on this.
I look forward to hearing from you.
Regards,
Catherine
Marketing Executive
If you don't want to include yourself in our mailing list, please reply
back “Leave Out" in a subject line"
^ permalink raw reply
* [PATCHi v2] rtw88: Add firmware file for new driver
From: Larry Finger @ 2018-10-03 19:09 UTC (permalink / raw)
To: linux-firmware; +Cc: linux-wireless, Larry Finger, netdev, Yan-Hsuan Chuang
This file contains the firmware for the new driver rtw88 for Realtek
RTL8822BE and RTL8822CE devices. It was provided by the Realtek
developer.
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---
v2 - removed redundant information from subject
---
WHENCE | 9 +++++++++
rtw88/rtw8822b_fw.bin | Bin 0 -> 150984 bytes
2 files changed, 9 insertions(+)
create mode 100644 rtw88/rtw8822b_fw.bin
diff --git a/WHENCE b/WHENCE
index 3e18e48..a441e75 100644
--- a/WHENCE
+++ b/WHENCE
@@ -2671,6 +2671,15 @@ Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
--------------------------------------------------------------------------
+Driver: rtw88 - Realtek 802.11n WLAN driver for RTL8822BE and RTL8822CE
+
+Info: Sent to Larry Finger by Realtek engineer Yan-Hsuan Chuang <yhchuang@realtek.com>
+File: rtw88/rtw8822b_fw.bin
+
+Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
+
+--------------------------------------------------------------------------
+
Driver: rtl8192ee - Realtek 802.11n WLAN driver for RTL8192EE
Info: Initial version taken from Realtek version
diff --git a/rtw88/rtw8822b_fw.bin b/rtw88/rtw8822b_fw.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0934ffcc77a327285569d135f55b58e8902511b1
GIT binary patch
literal 150984
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
literal 0
HcmV?d00001
--
2.19.0
^ permalink raw reply related
* [PATCH] rtw88: Add firmware file for driver rtw88
From: Larry Finger @ 2018-10-03 19:04 UTC (permalink / raw)
To: linux-firmware; +Cc: linux-wireless, Larry Finger, netdev, Yan-Hsuan Chuang
This file contains the firmware for the new driver rtw88 for Realtek
RTL8822BE and RTL8822CE devices. It was provided by the Realtek
developer.
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---
WHENCE | 9 +++++++++
rtw88/rtw8822b_fw.bin | Bin 0 -> 150984 bytes
2 files changed, 9 insertions(+)
create mode 100644 rtw88/rtw8822b_fw.bin
diff --git a/WHENCE b/WHENCE
index 3e18e48..a441e75 100644
--- a/WHENCE
+++ b/WHENCE
@@ -2671,6 +2671,15 @@ Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
--------------------------------------------------------------------------
+Driver: rtw88 - Realtek 802.11n WLAN driver for RTL8822BE and RTL8822CE
+
+Info: Sent to Larry Finger by Realtek engineer Yan-Hsuan Chuang <yhchuang@realtek.com>
+File: rtw88/rtw8822b_fw.bin
+
+Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
+
+--------------------------------------------------------------------------
+
Driver: rtl8192ee - Realtek 802.11n WLAN driver for RTL8192EE
Info: Initial version taken from Realtek version
diff --git a/rtw88/rtw8822b_fw.bin b/rtw88/rtw8822b_fw.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0934ffcc77a327285569d135f55b58e8902511b1
GIT binary patch
literal 150984
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
literal 0
HcmV?d00001
--
2.19.0
^ permalink raw reply related
* Re: [net-next 08/15] ice: Notify VF of link status change
From: Or Gerlitz @ 2018-10-03 17:23 UTC (permalink / raw)
To: Jeff Kirsher
Cc: David Miller, anirudh.venkataramanan, Linux Netdev List, nhorman,
sassmann
In-Reply-To: <20181003154825.5440-9-jeffrey.t.kirsher@intel.com>
On Wed, Oct 3, 2018 at 6:46 PM Jeff Kirsher <jeffrey.t.kirsher@intel.com> wrote:
> From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
>
> When PF gets a link status change event, notify the VFs of the same.
so you always want to block east/west traffic when the uplink is down? why?
The correct approach is to have vf/vport e-switch representor on the
host, and if
the host admin puts down the administrative link of the rep -- the vf
operational link (carrier)
goes down.
^ permalink raw reply
* [PATCH] qed: Remove unneeded enumerated type core_tx_dest
From: Nathan Chancellor @ 2018-10-04 0:09 UTC (permalink / raw)
To: Ariel Elior, everest-linux-l2, David S. Miller
Cc: netdev, linux-kernel, Nick Desaulniers, Nathan Chancellor
Clang warns when one enumerated type is implicitly converted to another.
drivers/net/ethernet/qlogic/qed/qed_ll2.c:799:32: warning: implicit
conversion from enumeration type 'enum core_tx_dest' to different
enumeration type 'enum qed_ll2_tx_dest' [-Wenum-conversion]
tx_pkt.tx_dest = p_ll2_conn->tx_dest;
~ ~~~~~~~~~~~~^~~~~~~
1 warning generated.
These enumerated types are not 1 to 1:
/* Light L2 TX Destination */
enum core_tx_dest {
CORE_TX_DEST_NW,
CORE_TX_DEST_LB,
CORE_TX_DEST_RESERVED,
CORE_TX_DEST_DROP,
MAX_CORE_TX_DEST
};
enum qed_ll2_tx_dest {
QED_LL2_TX_DEST_NW, /* Light L2 TX Destination to the Network */
QED_LL2_TX_DEST_LB, /* Light L2 TX Destination to the Loopback */
QED_LL2_TX_DEST_DROP, /* Light L2 Drop the TX packet */
QED_LL2_TX_DEST_MAX
};
Fix this conversion warning by adding CORE_TX_DEST_DROP to
qed_ll2_tx_dest and converting all values of core_tx_dest to
the equivalent value in qed_ll2_tx_dest so that there is no
conversion warning or functional change.
Link: https://github.com/ClangBuiltLinux/linux/issues/125
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
---
I'm by no means married to the name of the new enum value, it could even
be CORE_TX_DEST_DROP (didn't know if that was going to set anyone off or
not) but this is the cleanest solution to the warning in my opinion but
I'm open to other opinions.
drivers/net/ethernet/qlogic/qed/qed_hsi.h | 9 ---------
drivers/net/ethernet/qlogic/qed/qed_ll2.c | 16 ++++++++--------
drivers/net/ethernet/qlogic/qed/qed_ll2.h | 2 +-
include/linux/qed/qed_ll2_if.h | 1 +
4 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_hsi.h b/drivers/net/ethernet/qlogic/qed/qed_hsi.h
index 15b4cd317f14..c2ce8428c413 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_hsi.h
+++ b/drivers/net/ethernet/qlogic/qed/qed_hsi.h
@@ -331,15 +331,6 @@ struct core_tx_bd {
#define CORE_TX_BD_TX_DST_SHIFT 14
};
-/* Light L2 TX Destination */
-enum core_tx_dest {
- CORE_TX_DEST_NW,
- CORE_TX_DEST_LB,
- CORE_TX_DEST_RESERVED,
- CORE_TX_DEST_DROP,
- MAX_CORE_TX_DEST
-};
-
/* Ramrod data for tx queue start ramrod */
struct core_tx_start_ramrod_data {
struct regpair pbl_base_addr;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
index da13117a604a..741185a62e84 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
@@ -1345,13 +1345,13 @@ int qed_ll2_acquire_connection(void *cxt, struct qed_ll2_acquire_data *data)
switch (data->input.tx_dest) {
case QED_LL2_TX_DEST_NW:
- p_ll2_info->tx_dest = CORE_TX_DEST_NW;
+ p_ll2_info->tx_dest = QED_LL2_TX_DEST_NW;
break;
case QED_LL2_TX_DEST_LB:
- p_ll2_info->tx_dest = CORE_TX_DEST_LB;
+ p_ll2_info->tx_dest = QED_LL2_TX_DEST_LB;
break;
case QED_LL2_TX_DEST_DROP:
- p_ll2_info->tx_dest = CORE_TX_DEST_DROP;
+ p_ll2_info->tx_dest = QED_LL2_TX_DEST_DROP_CORE;
break;
default:
return -EINVAL;
@@ -1684,7 +1684,7 @@ qed_ll2_prepare_tx_packet_set_bd(struct qed_hwfn *p_hwfn,
u16 prod_idx = qed_chain_get_prod_idx(p_tx_chain);
struct core_tx_bd *start_bd = NULL;
enum core_roce_flavor_type roce_flavor;
- enum core_tx_dest tx_dest;
+ enum qed_ll2_tx_dest tx_dest;
u16 bd_data = 0, frag_idx;
roce_flavor = (pkt->qed_roce_flavor == QED_LL2_ROCE) ? CORE_ROCE
@@ -1692,16 +1692,16 @@ qed_ll2_prepare_tx_packet_set_bd(struct qed_hwfn *p_hwfn,
switch (pkt->tx_dest) {
case QED_LL2_TX_DEST_NW:
- tx_dest = CORE_TX_DEST_NW;
+ tx_dest = QED_LL2_TX_DEST_NW;
break;
case QED_LL2_TX_DEST_LB:
- tx_dest = CORE_TX_DEST_LB;
+ tx_dest = QED_LL2_TX_DEST_LB;
break;
case QED_LL2_TX_DEST_DROP:
- tx_dest = CORE_TX_DEST_DROP;
+ tx_dest = QED_LL2_TX_DEST_DROP_CORE;
break;
default:
- tx_dest = CORE_TX_DEST_LB;
+ tx_dest = QED_LL2_TX_DEST_LB;
break;
}
diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.h b/drivers/net/ethernet/qlogic/qed/qed_ll2.h
index 1a5c1ae01474..e676bbaf55c9 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_ll2.h
+++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.h
@@ -119,7 +119,7 @@ struct qed_ll2_info {
u8 queue_id;
u8 tx_stats_id;
bool b_active;
- enum core_tx_dest tx_dest;
+ enum qed_ll2_tx_dest tx_dest;
u8 tx_stats_en;
bool main_func_queue;
struct qed_ll2_rx_queue rx_queue;
diff --git a/include/linux/qed/qed_ll2_if.h b/include/linux/qed/qed_ll2_if.h
index 5eb022953aca..1b260e73943c 100644
--- a/include/linux/qed/qed_ll2_if.h
+++ b/include/linux/qed/qed_ll2_if.h
@@ -65,6 +65,7 @@ enum qed_ll2_tx_dest {
QED_LL2_TX_DEST_NW, /* Light L2 TX Destination to the Network */
QED_LL2_TX_DEST_LB, /* Light L2 TX Destination to the Loopback */
QED_LL2_TX_DEST_DROP, /* Light L2 Drop the TX packet */
+ QED_LL2_TX_DEST_DROP_CORE, /* CORE_TX_DEST_DROP value */
QED_LL2_TX_DEST_MAX
};
--
2.19.0
^ permalink raw reply related
* Re: [PATCH iproute2 net-next v1 5/6] tc: Add support for configuring the taprio scheduler
From: Vinicius Costa Gomes @ 2018-10-03 17:13 UTC (permalink / raw)
To: David Ahern, netdev
Cc: jhs, xiyou.wangcong, jiri, jesus.sanchez-palencia,
ilias.apalodimas, simon.fok
In-Reply-To: <eff804f8-a415-637a-94bd-e4ce8d7e7b9f@gmail.com>
Hi David,
David Ahern <dsahern@gmail.com> writes:
> On 9/28/18 7:10 PM, Vinicius Costa Gomes wrote:
>> This traffic scheduler allows traffic classes states (transmission
>> allowed/not allowed, in the simplest case) to be scheduled, according
>> to a pre-generated time sequence. This is the basis of the IEEE
>> 802.1Qbv specification.
>>
>> Example configuration:
>>
>> tc qdisc replace dev enp3s0 parent root handle 100 taprio \
>> num_tc 3 \
>> map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
>> queues 1@0 1@1 2@2 \
>> base-time 1528743495910289987 \
>> sched-entry S 01 300000 \
>> sched-entry S 02 300000 \
>> sched-entry S 04 300000 \
>> clockid CLOCK_TAI
>>
>> The configuration format is similar to mqprio. The main difference is
>> the presence of a schedule, built by multiple "sched-entry"
>> definitions, each entry has the following format:
>>
>> sched-entry <CMD> <GATE MASK> <INTERVAL>
>>
>> The only supported <CMD> is "S", which means "SetGateStates",
>
> ...
>
>> +static int str_to_entry_cmd(const char *str)
>> +{
>> + if (strcmp(str, "S") == 0)
>> + return TC_TAPRIO_CMD_SET_GATES;
>> +
>> + if (strcmp(str, "H") == 0)
>> + return TC_TAPRIO_CMD_SET_AND_HOLD;
>> +
>> + if (strcmp(str, "R") == 0)
>> + return TC_TAPRIO_CMD_SET_AND_RELEASE;
>
> If 'S' is the only supported command, what are 'H' and 'R'?
It is the only command that works (for now): taprio is a software only
implementation now.
Just to give some background, 'H' (Set-And-Hold-MAC) and 'R'
(Set-And-Release-MAC) will be used when Frame Preemption is added, 'H'
means that any preemtible frame should have finished being transmitted
before this "entry" starts and frame preemption is disabled, 'R' means
preemptible frames may be transmitted during this entry's interval and
frame preemption is re-enabled.
Will remove these references for now.
>
>> +
>> + return -1;
>> +}
>> +
>
>> +
>> +static const char *command_to_str(__u8 cmd)
>> +{
>> + switch (cmd) {
>> + case TC_TAPRIO_CMD_SET_GATES:
>> + return "S";
>> + case TC_TAPRIO_CMD_SET_AND_HOLD:
>> + return "H";
>> + case TC_TAPRIO_CMD_SET_AND_RELEASE:
>> + return "R";
>> + default:
>> + return "Invalid";
>> + }
>> +}
>
> And can you keep str-to-command and command-to-str helpers close
> together in the code.
Sure. WIll fix it for v2.
Cheers,
^ permalink raw reply
* Re: [GIT] Networking
From: Greg KH @ 2018-10-03 23:52 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-kernel
In-Reply-To: <20181003.145756.2159165162231604122.davem@davemloft.net>
On Wed, Oct 03, 2018 at 02:57:56PM -0700, David Miller wrote:
>
> Sorry, a bunch of stuff got queued up while I was moving last week, so
> this is larger than I would like this late in the game.
>
> Nothing super dangerous or scary though, just lots of simpler fixes:
>
> 1) Prefix length validation in xfrm layer, from Steffen Klassert.
>
> 2) TX status reporting fix in mac80211, from Andrei Otcheretianski.
>
> 3) Fix hangs due to TX_DROP in mac80211, from Bob Copeland.
>
> 4) Fix DMA error regression in b43, from Larry Finger.
>
> 5) Add input validation to xenvif_set_hash_mapping(), from Jan Beulich.
>
> 6) SMMU unmapping fix in hns driver, from Yunsheng Lin.
>
> 7) Bluetooh crash in unpairing on SMP, from Matias Karhumaa.
>
> 8) WoL handling fixes in the phy layer, from Heiner Kallweit.
>
> 9) Fix deadlock in bonding, from Mahesh Bandewar.
>
> 10) Fill ttl inherit infor in vxlan driver, from Hangbin Liu.
>
> 11) Fix TX timeouts during netpoll, from Michael Chan.
>
> 12) RXRPC layer fixes from David Howells.
>
> 13) Another batch of ndo_poll_controller() removals to deal with
> excessive resource consumption during load. From Eric Dumazet.
>
> 14) Fix a specific TIPC failure secnario, from LUU Duc Canh.
>
> 15) Really disable clocks in r8169 during suspend so that low
> power states can actually be reached.
>
> 16) Fix SYN backlog lockdep issue in tcp and dccp, from Eric Dumazet.
>
> 17) Fix RCU locking in netpoll SKB send, which shows up in bonding,
> from Dave Jones.
>
> 18) Fix TX stalls in r8169, from Heiner Kallweit.
>
> 19) Fix locksup in nfp due to control message storms, from Jakub
> Kicinski.
>
> 20) Various rmnet bug fixes from Subash Abhinov Kasiviswanathan and
> Sean Tranchetti.
>
> 21) Fix use after free in ip_cmsg_recv_dstaddr(), from Eric Dumazet.
>
> Please pull, thanks a lot!
>
> The following changes since commit 846e8dd47c264e0b359afed28ea88e0acdee6818:
>
> Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi (2018-09-25 18:14:14 +0200)
>
> are available in the Git repository at:
>
> gitolite@ra.kernel.org:/pub/scm/linux/kernel/git/davem/net.git
Now merged, thanks.
greg k-h
^ permalink raw reply
* Re: [RFC PATCH bpf-next v3 4/7] bpf: add bpf queue and stack maps
From: Mauricio Vasquez @ 2018-10-03 17:01 UTC (permalink / raw)
To: Alexei Starovoitov; +Cc: daniel, netdev
In-Reply-To: <20181002002640.ug7manxi2livgrlo@ast-mbp.dhcp.thefacebook.com>
On 10/01/2018 07:26 PM, Alexei Starovoitov wrote:
> On Mon, Oct 01, 2018 at 08:11:43AM -0500, Mauricio Vasquez wrote:
>>>>> +BPF_CALL_3(bpf_map_pop_elem, struct bpf_map *, map, void *,
>>>>> value, u32, size)
>>>>> +{
>>>>> + void *ptr;
>>>>> +
>>>>> + if (map->value_size != size)
>>>>> + return -EINVAL;
>>>>> +
>>>>> + ptr = map->ops->map_lookup_and_delete_elem(map, NULL);
>>>>> + if (!ptr)
>>>>> + return -ENOENT;
>>>>> +
>>>>> + switch (size) {
>>>>> + case 1:
>>>>> + *(u8 *) value = *(u8 *) ptr;
>>>>> + break;
>>>>> + case 2:
>>>>> + *(u16 *) value = *(u16 *) ptr;
>>>>> + break;
>>>>> + case 4:
>>>>> + *(u32 *) value = *(u32 *) ptr;
>>>>> + break;
>>>>> + case 8:
>>>>> + *(u64 *) value = *(u64 *) ptr;
>>>>> + break;
>>>> this is inefficient. can we pass value ptr into ops and let it
>>>> populate it?
>>> I don't think so, doing that implies that look_and_delete will be a
>>> per-value op, while other ops in maps are per-reference.
>>> For instance, how to change it in the case of peek helper that is using
>>> the lookup operation?, we cannot change the signature of the lookup
>>> operation.
>>>
>>> This is something that worries me a little bit, we are creating new
>>> per-value helpers based on already existing per-reference operations,
>>> this is not probably the cleanest way. Here we are at the beginning of
>>> the discussion once again, how should we map helpers and syscalls to
>>> ops.
>>>
>>> What about creating pop/peek/push ops, mapping helpers one to one and
>>> adding some logic into syscall.c to call the correct operation in case
>>> the map is stack/queue?
>>> Syscall mapping would be:
>>> bpf_map_lookup_elem() -> peek
>>> bpf_map_lookup_and_delete_elem() -> pop
>>> bpf_map_update_elem() -> push
>>>
>>> Does it make sense?
>> Hello Alexei,
>>
>> Do you have any feedback on this specific part?
> Indeed. It seems push/pop ops will be cleaner.
> I still think that peek() is useless due to races.
> So BPF_MAP_UPDATE_ELEM syscall cmd will map to 'push' ops
> and new BPF_MAP_LOOKUP_AND_DELETE_ELEM will map to 'pop' ops.
> right?
>
>
That's right.
While updating the push api some came to me, do we have any specific
reason to support only 1, 2, 4, 8 bytes? I think we could do it general
enough to support any number of bytes, if the user is worried about the
cost of memcpys he could use a map of 8 bytes pointers as you mentioned
some time ago.
From an API point of view, pop/peek helpers already expect a void
*value (int bpf_map_[pop, peek]_elem(map, void *value)), the only change
would also to use a pointer in the push instead of a u64.
^ permalink raw reply
* Re: [RFC PATCH v2 bpf-next 0/2] verifier liveness simplification
From: Jiong Wang @ 2018-10-03 16:53 UTC (permalink / raw)
To: Alexei Starovoitov; +Cc: Edward Cree, ast, daniel, netdev
In-Reply-To: <20181003155952.rsr4v5yvi44v62ld@ast-mbp.dhcp.thefacebook.com>
On 03/10/2018 16:59, Alexei Starovoitov wrote:
> On Wed, Oct 03, 2018 at 04:36:31PM +0100, Jiong Wang wrote:
<snip...>
>> Now this hasn't happened. I am still debugging the root cause, but kind of
>> feel
>> "64-bit" attribute propagation is the issue, it seems to me it can't be
>> nicely
>> integrated into the existing register read/write propagation infrastructure.
>
> may be share your patches that modify the liveness propagation?
OK, I will share it after some clean up.
>> For
>> example, for a slightly more complex sequence which is composed of three
>> states:
>>
>> State A
>> ...
>> 10: r6 = *(u32 *)(r10 - 4)
>> 11: r7 = *(u32 *)(r10 - 8)
>> 12: *(u64 *)(r10 - 16) = r6
>> 13: *(u64 *)(r10 - 24) = r7
>>
>> State B
>> 14: r6 += 1
>> 15: r7 += r6
>> 16: *(u32 *)(r10 - 28) = r7
>>
>> State C
>> ...
>> 17: r3 += r7
>> 18: r4 = 1
>> 19: *(u64 *)(r10 - 32) = r3
>> 20: *(u64 *)(r10 - 40) = r4
>>
>> State A is parent of state B which is parent of state C.
>>
>> Inside state C, at insn 20, r4 is a 64-bit read/use, so its define at 18 is
>> marked as "64-bit". There is no register source at 18, so "64-bit" attribute
>> propagation is stopped.
>>
>> Then at insn 19, r3 is a 64-bit read/use, so its define at 17 is marked as
>> "64-bit" read/use. Insn 17 has two register sources, r3 and r7, they become
>> "64-bit" now, and their definition should be marked as "64-bit".
>>
>> Now if the definition of r3 or r7 comes from parent state, then the parent
>
> ... the definition of r3 _and_ r7 ...
> both need to propagate up with your algo, right?
Yes, all sources of insn 17, both r3 and r7.
>> state
>> should receive a "REG_LIVE_READ64", this is necessary if later another path
>> reaches state C and triggers prune path, for which case that path should
>> know
>> there is "64-bit" use inside state C on some registers, and should use this
>> information to mark "64-bit" insn.
>>
>> If the definition of r3 or r7 is still inside state C, we need to keep
>> walking
>> up the instruction sequences, and propagate "64-bit" attribute upward until
>> it
>> goes beyond the state C.
>>
>> The above propagation logic is quite different from existing register
>> read/write propagation.
>> For the latter, a write just screen up all following read, and a
>> read would propagate directly to its parent is there is not previous write,
>> no instruction analysis is required.
>
> correct.
> with such algo REG_LIVE_WRITTEN shouldn't be screening the propagation.
>
> I think the patches will discuss the algo.
> Also I think the initial state of 'everything is 32-bit safe'
> and make marks to enforce 64-bit-ness is a dangerous algorithmic choice.
Indeed, and I am actually thinking the same thing ...
> Why not to start at a safer state where everything is 64-bit
> and work backward to find out which ones can be 32-bit?
> That will be safer algo in case there are issues with bit like
> you described in above.
... but I failed to find a algo works on making initial state of
"everything is 64-bit". I haven't figured out a way to check that all use of one
definition are 32-bit on all possible code paths, which looks to me is a must for
one insn marked as 32-bit safe.
^ permalink raw reply
* Re: [net-next 00/15][pull request] 100GbE Intel Wired LAN Driver Updates 2018-10-03
From: David Miller @ 2018-10-03 16:41 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, nhorman, sassmann
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Wed, 3 Oct 2018 08:48:10 -0700
> This series contains updates to ice and virtchnl.
Pulled, thanks Jeff.
^ permalink raw reply
* Re: [PATCH net-next] cxgb4: remove the unneeded locks
From: David Miller @ 2018-10-03 16:36 UTC (permalink / raw)
To: ganeshgr; +Cc: netdev, nirranjan, indranil, dt
In-Reply-To: <1538571392-6915-1-git-send-email-ganeshgr@chelsio.com>
From: Ganesh Goudar <ganeshgr@chelsio.com>
Date: Wed, 3 Oct 2018 18:26:32 +0530
> cxgb_set_tx_maxrate will be called holding rtnl lock,
> hence remove all unneeded locks.
>
> Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Applied.
^ permalink raw reply
* Re: [PATCH iproute2 net-next v1 5/6] tc: Add support for configuring the taprio scheduler
From: David Ahern @ 2018-10-03 16:36 UTC (permalink / raw)
To: Vinicius Costa Gomes, netdev
Cc: jhs, xiyou.wangcong, jiri, jesus.sanchez-palencia,
ilias.apalodimas, simon.fok
In-Reply-To: <20180929011050.14056-6-vinicius.gomes@intel.com>
On 9/28/18 7:10 PM, Vinicius Costa Gomes wrote:
> This traffic scheduler allows traffic classes states (transmission
> allowed/not allowed, in the simplest case) to be scheduled, according
> to a pre-generated time sequence. This is the basis of the IEEE
> 802.1Qbv specification.
>
> Example configuration:
>
> tc qdisc replace dev enp3s0 parent root handle 100 taprio \
> num_tc 3 \
> map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
> queues 1@0 1@1 2@2 \
> base-time 1528743495910289987 \
> sched-entry S 01 300000 \
> sched-entry S 02 300000 \
> sched-entry S 04 300000 \
> clockid CLOCK_TAI
>
> The configuration format is similar to mqprio. The main difference is
> the presence of a schedule, built by multiple "sched-entry"
> definitions, each entry has the following format:
>
> sched-entry <CMD> <GATE MASK> <INTERVAL>
>
> The only supported <CMD> is "S", which means "SetGateStates",
...
> +static int str_to_entry_cmd(const char *str)
> +{
> + if (strcmp(str, "S") == 0)
> + return TC_TAPRIO_CMD_SET_GATES;
> +
> + if (strcmp(str, "H") == 0)
> + return TC_TAPRIO_CMD_SET_AND_HOLD;
> +
> + if (strcmp(str, "R") == 0)
> + return TC_TAPRIO_CMD_SET_AND_RELEASE;
If 'S' is the only supported command, what are 'H' and 'R'?
> +
> + return -1;
> +}
> +
> +
> +static const char *command_to_str(__u8 cmd)
> +{
> + switch (cmd) {
> + case TC_TAPRIO_CMD_SET_GATES:
> + return "S";
> + case TC_TAPRIO_CMD_SET_AND_HOLD:
> + return "H";
> + case TC_TAPRIO_CMD_SET_AND_RELEASE:
> + return "R";
> + default:
> + return "Invalid";
> + }
> +}
And can you keep str-to-command and command-to-str helpers close
together in the code.
^ permalink raw reply
* Re: r8169 tx batching(?) causing performance problems
From: David Miller @ 2018-10-03 16:31 UTC (permalink / raw)
To: dhowells; +Cc: nic_swsd, netdev
In-Reply-To: <23097.1538562476@warthog.procyon.org.uk>
Probably you are seeing some interrupt mitigation.
It seems there is a difference in how the interrupt mitigation is
programmed on for 8168 chips vs. others by default. Most get
all zeros in the IntrMitigate register, whilst for 8168 chips
a value of 0x5151 is programmed.
You can play with ethtool to mess with the coalescing settings
to see if this is part of the problem.
I bet this might explain the behavior you see after including
even Heiner's TXCFG_AUTO_FIFO patch.
^ permalink raw reply
* Re: [PATCH iproute2-next] tc: flower: expose hardware offload count
From: Vlad Buslov @ 2018-10-03 16:25 UTC (permalink / raw)
To: Davide Caratti; +Cc: netdev@vger.kernel.org
In-Reply-To: <9e205b2676a409c7f586f28ce1a26aa26ae119d0.camel@redhat.com>
On Wed 03 Oct 2018 at 16:08, Davide Caratti <dcaratti@redhat.com> wrote:
> On Wed, 2018-10-03 at 18:29 +0300, Vlad Buslov wrote:
>> Recently flower classifier was updated to expose count of devices that
>> filter is offloaded to. Add support to print this counter as 'in_hw_count'.
>>
>> Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
>> Acked-by: Jiri Pirko <jiri@mellanox.com>
>> ---
>> tc/f_flower.c | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/tc/f_flower.c b/tc/f_flower.c
>> index 59e5f572c542..cbacc664d397 100644
>
> hello Vlad!
>
>> --- a/tc/f_flower.c
>> +++ b/tc/f_flower.c
>> @@ -1585,8 +1585,16 @@ static int flower_print_opt(struct filter_util *qu, FILE *f,
>> if (flags & TCA_CLS_FLAGS_SKIP_SW)
>> print_bool(PRINT_ANY, "skip_sw", "\n skip_sw", true);
>>
>> - if (flags & TCA_CLS_FLAGS_IN_HW)
>> + if (flags & TCA_CLS_FLAGS_IN_HW) {
>> print_bool(PRINT_ANY, "in_hw", "\n in_hw", true);
>> +
>> + if (tb[TCA_FLOWER_IN_HW_COUNT]) {
>> + __u32 count = rta_getattr_u32(tb[TCA_FLOWER_IN_HW_COUNT]);
>> +
>> + print_uint(PRINT_ANY, "in_hw_count",
>> + " in_hw_count %d", count);
> ^^ maybe using %u in the format is better?
>
> thanks!
Hello Davide!
Sure. I'll send V2 with "%u".
Thanks,
Vlad
^ permalink raw reply
* BPF: RCU use-after-reallocation of hash table elements?
From: Jann Horn @ 2018-10-03 16:15 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann
Cc: Network Development, kernel list, Michael Kerrisk-manpages,
linux-man
Hi!
Note: I haven't tested any of this; feel free to tell me that I've
completely misunderstood how all this works.
The BPF manpage, at the moment, states about BPF hash tables:
BPF_MAP_TYPE_HASH
Hash-table maps have the following characteristics:
* Maps are created and destroyed by user-space programs.
Both user-space and eBPF programs can perform lookup,
update, and delete operations.
* The kernel takes care of allocating and freeing key/value
pairs.
* The map_update_elem() helper will fail to insert new ele‐
ment when the max_entries limit is reached. (This ensures
that eBPF programs cannot exhaust memory.)
* map_update_elem() replaces existing elements atomically.
Hash-table maps are optimized for speed of lookup.
This documentation claims that elements are replaced "atomically", and
that the kernel "takes care of allocating and freeing key/value
pairs". But as far as I can tell, that's not quite the whole story
least since commit 6c90598174322b8888029e40dd84a4eb01f56afe (first in
4.6).
Unless a BPF hash table is created with the (undocumented) flag
BPF_F_NO_PREALLOC, the kernel now actually pre-allocates the hash
table elements. Hash table elements can be freed and reused for new
allocations (!) without waiting for an RCU grace period: Freed
elements are immediately pushed on the percpu freelist, and can be
immediately reused from there. The most obvious consequence of this is
that if a BPF program looks up a hash table entry and then reads the
value, the value can be replaced with a new value in between. A more
subtle consequence is that BPF map lookups can return false-positive
results: If the first half of the lookup key matches the old key, and
the second half of the lookup key matches the new key, then a BPF map
lookup can return a false-positive result, as far as I can tell.
If what I'm saying is correct, I'm not sure what the best fix is.
Add a grace period when freeing hash map entries, and add a new -EBUSY
return value for attempts to create hash map entries when all free
entries are waiting for the end of an RCU grace period?
Add a grace period when freeing hash map entries, and use
rcu_synchronize() when inserting BPF hashmap entries from userspace
and all free entries are waiting for RCU? But that still leaves the
bpf_map_update_elem_proto helper that can be called from BPF.
Deprecate that helper for access to hash maps?
Document the race, and advise people who use BPF for
non-performance-tracing purposes (where occasional false positives
actually matter) to use BPF_F_NO_PREALLOC?
Add some sort of sequence lock to BPF (yuck)?
^ permalink raw reply
* Re: [PATCH v2 iproute2-next 1/3] tc: support conversions to or from 64 bit nanosecond-based time
From: Dave Taht @ 2018-10-03 16:09 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Yousuk Seung, Linux Kernel Network Developers, David Ahern,
Michael McLennan, Priyaranjan Jha, Neal Cardwell
In-Reply-To: <CAA93jw5iUqvF8Qj5JwKJEX=41cZA26oo9BTc0Gp8SYNAn0zU6A@mail.gmail.com>
On Mon, Aug 27, 2018 at 9:39 AM Dave Taht <dave.taht@gmail.com> wrote:
>
> On Mon, Aug 27, 2018 at 9:11 AM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > On Sun, 26 Aug 2018 19:42:28 -0700
> > Yousuk Seung <ysseung@google.com> wrote:
> >
> > > +int get_time(unsigned int *time, const char *str)
> > > +{
> > > + double t;
> > > + char *p;
> > > +
> > > + t = strtod(str, &p);
> > > + if (p == str)
> > > + return -1;
> > > +
> > > + if (*p) {
> > > + if (strcasecmp(p, "s") == 0 || strcasecmp(p, "sec") == 0 ||
> > > + strcasecmp(p, "secs") == 0)
> > > + t *= TIME_UNITS_PER_SEC;
> > > + else if (strcasecmp(p, "ms") == 0 || strcasecmp(p, "msec") == 0 ||
> > > + strcasecmp(p, "msecs") == 0)
> > > + t *= TIME_UNITS_PER_SEC/1000;
> > > + else if (strcasecmp(p, "us") == 0 || strcasecmp(p, "usec") == 0 ||
> > > + strcasecmp(p, "usecs") == 0)
> > > + t *= TIME_UNITS_PER_SEC/1000000;
> > > + else
> > > + return -1;
> >
> > Do we need to really support UPPER case.
>
> But that's ALWAYS been the case in the 32 bit version of code above.
> Imagine how many former VMS and MVS hackers you'd upset if they had to
> turn caps-lock off!
I was trying to be funny, of course. If you want us to rework the
patch to also downgrade to
being lowercase for both, ok... I'd rather like to finish getting this
upstream, there's
a change to netem enabling nsec time long stuck behind it.
>
> > Isn't existing matches semantics good enough?
>
> But that's the existing case for the 32 bit api, now replicated in the
> 64 bit api. ? I think the case-insensitive ship has sailed here. Can't
> break userspace.
>
> Well.. adding UTF-8 would be cool. We could start using the actual
> greek symbols for delta (δ) and beta (β) in particular. It would
> replace a lot of typing, with a whole bunch more shift keys on a
> single letter, fit better into
> 80 column lines, and so on, and tc inputs and outputs are already
> pretty greek to many.
> --
>
> Dave Täht
> CEO, TekLibre, LLC
> http://www.teklibre.com
> Tel: 1-669-226-2619
--
Dave Täht
CEO, TekLibre, LLC
http://www.teklibre.com
Tel: 1-669-226-2619
^ permalink raw reply
* Re: [PATCH iproute2-next] tc: flower: expose hardware offload count
From: Davide Caratti @ 2018-10-03 16:08 UTC (permalink / raw)
To: Vlad Buslov, netdev
In-Reply-To: <1538580590-4174-1-git-send-email-vladbu@mellanox.com>
On Wed, 2018-10-03 at 18:29 +0300, Vlad Buslov wrote:
> Recently flower classifier was updated to expose count of devices that
> filter is offloaded to. Add support to print this counter as 'in_hw_count'.
>
> Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
> Acked-by: Jiri Pirko <jiri@mellanox.com>
> ---
> tc/f_flower.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/tc/f_flower.c b/tc/f_flower.c
> index 59e5f572c542..cbacc664d397 100644
hello Vlad!
> --- a/tc/f_flower.c
> +++ b/tc/f_flower.c
> @@ -1585,8 +1585,16 @@ static int flower_print_opt(struct filter_util *qu, FILE *f,
> if (flags & TCA_CLS_FLAGS_SKIP_SW)
> print_bool(PRINT_ANY, "skip_sw", "\n skip_sw", true);
>
> - if (flags & TCA_CLS_FLAGS_IN_HW)
> + if (flags & TCA_CLS_FLAGS_IN_HW) {
> print_bool(PRINT_ANY, "in_hw", "\n in_hw", true);
> +
> + if (tb[TCA_FLOWER_IN_HW_COUNT]) {
> + __u32 count = rta_getattr_u32(tb[TCA_FLOWER_IN_HW_COUNT]);
> +
> + print_uint(PRINT_ANY, "in_hw_count",
> + " in_hw_count %d", count);
^^ maybe using %u in the format is better?
thanks!
--
davide
^ permalink raw reply
* Re: [PATCH v2 net] mpls: allow routes on ip6gre devices
From: Simon Horman @ 2018-10-03 16:07 UTC (permalink / raw)
To: Saif Hasan; +Cc: netdev, David S . Miller, Calvin Owens, Saif Hasan
In-Reply-To: <20180921213005.3595560-1-has@fb.com>
On Fri, Sep 21, 2018 at 02:30:05PM -0700, Saif Hasan wrote:
> Summary:
>
> This appears to be necessary and sufficient change to enable `MPLS` on
> `ip6gre` tunnels (RFC4023).
>
> This diff allows IP6GRE devices to be recognized by MPLS kernel module
> and hence user can configure interface to accept packets with mpls
> headers as well setup mpls routes on them.
>
> Test Plan:
>
> Test plan consists of multiple containers connected via GRE-V6 tunnel.
> Then carrying out testing steps as below.
>
> - Carry out necessary sysctl settings on all containers
>
> ```
> sysctl -w net.mpls.platform_labels=65536
> sysctl -w net.mpls.ip_ttl_propagate=1
> sysctl -w net.mpls.conf.lo.input=1
> ```
>
> - Establish IP6GRE tunnels
>
> ```
> ip -6 tunnel add name if_1_2_1 mode ip6gre \
> local 2401:db00:21:6048:feed:0::1 \
> remote 2401:db00:21:6048:feed:0::2 key 1
> ip link set dev if_1_2_1 up
> sysctl -w net.mpls.conf.if_1_2_1.input=1
> ip -4 addr add 169.254.0.2/31 dev if_1_2_1 scope link
>
> ip -6 tunnel add name if_1_3_1 mode ip6gre \
> local 2401:db00:21:6048:feed:0::1 \
> remote 2401:db00:21:6048:feed:0::3 key 1
> ip link set dev if_1_3_1 up
> sysctl -w net.mpls.conf.if_1_3_1.input=1
> ip -4 addr add 169.254.0.4/31 dev if_1_3_1 scope link
> ```
>
> - Install MPLS encap rules on node-1 towards node-2
>
> ```
> ip route add 192.168.0.11/32 nexthop encap mpls 32/64 \
> via inet 169.254.0.3 dev if_1_2_1
> ```
>
> - Install MPLS forwarding rules on node-2 and node-3
> ```
> // node2
> ip -f mpls route add 32 via inet 169.254.0.7 dev if_2_4_1
>
> // node3
> ip -f mpls route add 64 via inet 169.254.0.12 dev if_4_3_1
> ```
>
> - Ping 192.168.0.11 (node4) from 192.168.0.1 (node1) (where routing
> towards 192.168.0.1 is via IP route directly towards node1 from node4)
> ```
> ping 192.168.0.11
> ```
>
> - tcpdump on interface to capture ping packets wrapped within MPLS
> header which inturn wrapped within IP6GRE header
>
> ```
> 16:43:41.121073 IP6
> 2401:db00:21:6048:feed::1 > 2401:db00:21:6048:feed::2:
> DSTOPT GREv0, key=0x1, length 100:
> MPLS (label 32, exp 0, ttl 255) (label 64, exp 0, [S], ttl 255)
> IP 192.168.0.1 > 192.168.0.11:
> ICMP echo request, id 1208, seq 45, length 64
>
> 0x0000: 6000 2cdb 006c 3c3f 2401 db00 0021 6048 `.,..l<?$....!`H
> 0x0010: feed 0000 0000 0001 2401 db00 0021 6048 ........$....!`H
> 0x0020: feed 0000 0000 0002 2f00 0401 0401 0100 ......../.......
> 0x0030: 2000 8847 0000 0001 0002 00ff 0004 01ff ...G............
> 0x0040: 4500 0054 3280 4000 ff01 c7cb c0a8 0001 E..T2.@.........
> 0x0050: c0a8 000b 0800 a8d7 04b8 002d 2d3c a05b ...........--<.[
> 0x0060: 0000 0000 bcd8 0100 0000 0000 1011 1213 ................
> 0x0070: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
> 0x0080: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
> 0x0090: 3435 3637 4567
> ```
>
> Signed-off-by: Saif Hasan <has@fb.com>
This appears to be consistent with work I did to enable
MPLS over SIT, IPIP and (IPv4) IPGRE.
I do not recall why I did not enable IP6GRE at the time,
it may well have been a oversight.
Reviewed-by: Simon Horman <simon.horman@netronome.com>
> ---
> net/mpls/af_mpls.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
> index 7a4de6d618b1..8fbe6cdbe255 100644
> --- a/net/mpls/af_mpls.c
> +++ b/net/mpls/af_mpls.c
> @@ -1533,10 +1533,14 @@ static int mpls_dev_notify(struct notifier_block *this, unsigned long event,
> unsigned int flags;
>
> if (event == NETDEV_REGISTER) {
> - /* For now just support Ethernet, IPGRE, SIT and IPIP devices */
> +
> + /* For now just support Ethernet, IPGRE, IP6GRE, SIT and
> + * IPIP devices
> + */
> if (dev->type == ARPHRD_ETHER ||
> dev->type == ARPHRD_LOOPBACK ||
> dev->type == ARPHRD_IPGRE ||
> + dev->type == ARPHRD_IP6GRE ||
> dev->type == ARPHRD_SIT ||
> dev->type == ARPHRD_TUNNEL) {
> mdev = mpls_add_dev(dev);
> --
> 2.13.5
>
^ permalink raw reply
* [PATCH v2] net: phy: phylink: fix SFP interface autodetection
From: Baruch Siach @ 2018-10-03 16:04 UTC (permalink / raw)
To: Andrew Lunn, Florian Fainelli
Cc: netdev, Russell King, Antoine Tenart, Gregory CLEMENT,
Ori Shem-Tov, Baruch Siach
When connecting SFP PHY to phylink use the detected interface.
Otherwise, the link fails to come up when the configured 'phy-mode'
differs from the SFP detected mode.
Move most of phylink_connect_phy() into __phylink_connect_phy(), and
leave phylink_connect_phy() as a wrapper. phylink_sfp_connect_phy() can
now pass the SFP detected PHY interface to __phylink_connect_phy().
This fixes 1GB SFP module link up on eth3 of the Macchiatobin board that
is configured in the DT to "2500base-x" phy-mode.
Fixes: 9525ae83959b6 ("phylink: add phylink infrastructure")
Suggested-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v2: Leave the phylink_connect_phy() functionality unchanged. Only
phylink_sfp_connect_phy() calls __phylink_connect_phy() with the
detected interface (Russell King)
---
drivers/net/phy/phylink.c | 48 +++++++++++++++++++++++----------------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 3ba5cf2a8a5f..7abca86c3aa9 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -717,6 +717,30 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy)
return 0;
}
+static int __phylink_connect_phy(struct phylink *pl, struct phy_device *phy,
+ phy_interface_t interface)
+{
+ int ret;
+
+ if (WARN_ON(pl->link_an_mode == MLO_AN_FIXED ||
+ (pl->link_an_mode == MLO_AN_INBAND &&
+ phy_interface_mode_is_8023z(interface))))
+ return -EINVAL;
+
+ if (pl->phydev)
+ return -EBUSY;
+
+ ret = phy_attach_direct(pl->netdev, phy, 0, interface);
+ if (ret)
+ return ret;
+
+ ret = phylink_bringup_phy(pl, phy);
+ if (ret)
+ phy_detach(phy);
+
+ return ret;
+}
+
/**
* phylink_connect_phy() - connect a PHY to the phylink instance
* @pl: a pointer to a &struct phylink returned from phylink_create()
@@ -734,31 +758,13 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy)
*/
int phylink_connect_phy(struct phylink *pl, struct phy_device *phy)
{
- int ret;
-
- if (WARN_ON(pl->link_an_mode == MLO_AN_FIXED ||
- (pl->link_an_mode == MLO_AN_INBAND &&
- phy_interface_mode_is_8023z(pl->link_interface))))
- return -EINVAL;
-
- if (pl->phydev)
- return -EBUSY;
-
/* Use PHY device/driver interface */
if (pl->link_interface == PHY_INTERFACE_MODE_NA) {
pl->link_interface = phy->interface;
pl->link_config.interface = pl->link_interface;
}
- ret = phy_attach_direct(pl->netdev, phy, 0, pl->link_interface);
- if (ret)
- return ret;
-
- ret = phylink_bringup_phy(pl, phy);
- if (ret)
- phy_detach(phy);
-
- return ret;
+ return __phylink_connect_phy(pl, phy, pl->link_interface);
}
EXPORT_SYMBOL_GPL(phylink_connect_phy);
@@ -1672,7 +1678,9 @@ static void phylink_sfp_link_up(void *upstream)
static int phylink_sfp_connect_phy(void *upstream, struct phy_device *phy)
{
- return phylink_connect_phy(upstream, phy);
+ struct phylink *pl = upstream;
+
+ return __phylink_connect_phy(upstream, phy, pl->link_config.interface);
}
static void phylink_sfp_disconnect_phy(void *upstream)
--
2.19.0
^ permalink raw reply related
* Re: [RFC PATCH v2 bpf-next 0/2] verifier liveness simplification
From: Alexei Starovoitov @ 2018-10-03 15:59 UTC (permalink / raw)
To: Jiong Wang; +Cc: Edward Cree, ast, daniel, netdev
In-Reply-To: <858638d7-dad4-cb70-478c-29a54a131e68@netronome.com>
On Wed, Oct 03, 2018 at 04:36:31PM +0100, Jiong Wang wrote:
> On 28/09/2018 14:36, Edward Cree wrote:
> > On 26/09/18 23:16, Jiong Wang wrote:
> >> On 22/08/2018 20:00, Edward Cree wrote:
> >>> In the future this idea may be extended to form use-def chains.
> >>
> >> 1. instruction level use->def chain
> >>
> >> - new use->def chains for each instruction. one eBPF insn could have
> two
> >> uses at maximum.
> > I was thinking of something a lot weaker/simpler, just making
> > ld rX, rY
> > copy rY.parent into rX.parent and not read-mark rY (whereas actual
> > arithmetic, pointer deref etc. would still create read marks).
>
> Thanks for the feedback Edward.
>
> > But what you've described sounds interesting; perhaps it would also
> > help later with loop-variable handling?
>
> Haven't considered how to use this for loop-variable handling, guess you
> mean
> applying what I have described to your previous loop detection RFC? I will
> look
> into your RFC later.
>
> At the moment the design of the use->def chain is mainly to optimize 32-bit
> code-gen. I was about to satisfied with a local implementation and to share
> it
> to ML for further discussion. However, when manually check the optimization
> result on testcase with medium size (~1000 eBPF insns) and proper complexity
> (make sure path prunes etc are triggered inside verifier), I found the
> code-gen
> doesn't meet my expectation.
>
> For example, for the following sequence, insn at 25 should operate on
> full-64
> bit but I found it is marked as 32-bit safe.
>
> 25: r7 = 1
> 26: if r4 > r8 goto +1200 <L>
> 27: r1 = *(u8 *)(r1 + 0)
> 28: r1 &= 15
> 29: r7 = 1
> ...
>
> L:
> 1227: r0 = r7
> 1228: exit
>
> As described at previous email, the algorithm assume all insns are 32-bit
> safe
> first, then start to insns back to "64-bit" if there is any 64-bit use found
> for a insn.
>
> Insn 25 is defining r7 which is used at the 1227 where its value propagated
> to
> r0 and then r0 is implicitly used at insn 1228 as it is a exit from main
> function to external.
>
> For above example, as we don't know the external use of r0 at 1228 (exit
> from
> main to external), so r0 is treated as 64-bit implicit use. The define is at
> 1227, so insn 1227 is marked as "64-bit". The "64-bit" attribute should
> propagate to source register operand through register move and arithmetic,
> so
> r7 at insn 1227 is a "64-bit" use and should make its definition
> instruction,
> insn 25, marked as "64-bit". This is my thinking of how insn 25 should be
> marked.
all makes sense to me.
> Now this hasn't happened. I am still debugging the root cause, but kind of
> feel
> "64-bit" attribute propagation is the issue, it seems to me it can't be
> nicely
> integrated into the existing register read/write propagation infrastructure.
may be share your patches that modify the liveness propagation?
> For
> example, for a slightly more complex sequence which is composed of three
> states:
>
> State A
> ...
> 10: r6 = *(u32 *)(r10 - 4)
> 11: r7 = *(u32 *)(r10 - 8)
> 12: *(u64 *)(r10 - 16) = r6
> 13: *(u64 *)(r10 - 24) = r7
>
> State B
> 14: r6 += 1
> 15: r7 += r6
> 16: *(u32 *)(r10 - 28) = r7
>
> State C
> ...
> 17: r3 += r7
> 18: r4 = 1
> 19: *(u64 *)(r10 - 32) = r3
> 20: *(u64 *)(r10 - 40) = r4
>
> State A is parent of state B which is parent of state C.
>
> Inside state C, at insn 20, r4 is a 64-bit read/use, so its define at 18 is
> marked as "64-bit". There is no register source at 18, so "64-bit" attribute
> propagation is stopped.
>
> Then at insn 19, r3 is a 64-bit read/use, so its define at 17 is marked as
> "64-bit" read/use. Insn 17 has two register sources, r3 and r7, they become
> "64-bit" now, and their definition should be marked as "64-bit".
>
> Now if the definition of r3 or r7 comes from parent state, then the parent
... the definition of r3 _and_ r7 ...
both need to propagate up with your algo, right?
> state
> should receive a "REG_LIVE_READ64", this is necessary if later another path
> reaches state C and triggers prune path, for which case that path should
> know
> there is "64-bit" use inside state C on some registers, and should use this
> information to mark "64-bit" insn.
>
> If the definition of r3 or r7 is still inside state C, we need to keep
> walking
> up the instruction sequences, and propagate "64-bit" attribute upward until
> it
> goes beyond the state C.
>
> The above propagation logic is quite different from existing register
> read/write
> propagation.
> For the latter, a write just screen up all following read, and
> a
> read would propagate directly to its parent is there is not previous write,
> no
> instruction analysis is required.
correct.
with such algo REG_LIVE_WRITTEN shouldn't be screening the propagation.
I think the patches will discuss the algo.
Also I think the initial state of 'everything is 32-bit safe'
and make marks to enforce 64-bit-ness is a dangerous algorithmic choice.
Why not to start at a safer state where everything is 64-bit
and work backward to find out which ones can be 32-bit?
That will be safer algo in case there are issues with bit like
you described in above.
^ permalink raw reply
* [net-next 14/15] ice: Use the right function to enable/disable VSI
From: Jeff Kirsher @ 2018-10-03 15:48 UTC (permalink / raw)
To: davem
Cc: Dave Ertman, netdev, nhorman, sassmann, Anirudh Venkataramanan,
Jeff Kirsher
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Dave Ertman <david.m.ertman@intel.com>
The ice_ena/dis_vsi should have a single differentiating
factor to determine if the netdev_ops call is used or a
direct call to ice_vsi_open/close. This is if the netif is
running or not. If netif is running, use ndo_open/ndo_close.
Else, use ice_vsi_open/ice_vsi_close.
Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ice/ice_main.c | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 948c97defeba..02cfd874f674 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3214,13 +3214,14 @@ static void ice_dis_vsi(struct ice_vsi *vsi)
set_bit(__ICE_NEEDS_RESTART, vsi->state);
- if (vsi->netdev && netif_running(vsi->netdev) &&
- vsi->type == ICE_VSI_PF) {
- rtnl_lock();
- vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
- rtnl_unlock();
- } else {
- ice_vsi_close(vsi);
+ if (vsi->type == ICE_VSI_PF && vsi->netdev) {
+ if (netif_running(vsi->netdev)) {
+ rtnl_lock();
+ vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
+ rtnl_unlock();
+ } else {
+ ice_vsi_close(vsi);
+ }
}
}
@@ -3232,12 +3233,16 @@ static int ice_ena_vsi(struct ice_vsi *vsi)
{
int err = 0;
- if (test_and_clear_bit(__ICE_NEEDS_RESTART, vsi->state))
- if (vsi->netdev && netif_running(vsi->netdev)) {
+ if (test_and_clear_bit(__ICE_NEEDS_RESTART, vsi->state) &&
+ vsi->netdev) {
+ if (netif_running(vsi->netdev)) {
rtnl_lock();
err = vsi->netdev->netdev_ops->ndo_open(vsi->netdev);
rtnl_unlock();
+ } else {
+ err = ice_vsi_open(vsi);
}
+ }
return err;
}
--
2.17.1
^ permalink raw reply related
* [net-next 07/15] ice: Implement virtchnl commands for AVF support
From: Jeff Kirsher @ 2018-10-03 15:48 UTC (permalink / raw)
To: davem; +Cc: Anirudh Venkataramanan, netdev, nhorman, sassmann, Jeff Kirsher
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
virtchnl is a protocol/interface specification that allows the Intel
"Adaptive Virtual Function (AVF)" driver (iavf.ko) to work with more than
one physical function driver. The AVF driver sends "virtchnl commands"
(control plane only) to the PF driver over mailbox queues and the PF driver
executes these commands and returns a result to the VF, again over mailbox.
This patch adds AVF support for the ice PF driver by implementing the
following virtchnl commands:
VIRTCHNL_OP_VERSION
VIRTCHNL_OP_GET_VF_RESOURCES
VIRTCHNL_OP_RESET_VF
VIRTCHNL_OP_ADD_ETH_ADDR
VIRTCHNL_OP_DEL_ETH_ADDR
VIRTCHNL_OP_CONFIG_VSI_QUEUES
VIRTCHNL_OP_ENABLE_QUEUES
VIRTCHNL_OP_DISABLE_QUEUES
VIRTCHNL_OP_ADD_ETH_ADDR
VIRTCHNL_OP_DEL_ETH_ADDR
VIRTCHNL_OP_CONFIG_VSI_QUEUES
VIRTCHNL_OP_ENABLE_QUEUES
VIRTCHNL_OP_DISABLE_QUEUES
VIRTCHNL_OP_REQUEST_QUEUES
VIRTCHNL_OP_CONFIG_IRQ_MAP
VIRTCHNL_OP_CONFIG_RSS_KEY
VIRTCHNL_OP_CONFIG_RSS_LUT
VIRTCHNL_OP_GET_STATS
VIRTCHNL_OP_ADD_VLAN
VIRTCHNL_OP_DEL_VLAN
VIRTCHNL_OP_ENABLE_VLAN_STRIPPING
VIRTCHNL_OP_DISABLE_VLAN_STRIPPING
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ice/ice.h | 1 +
.../net/ethernet/intel/ice/ice_adminq_cmd.h | 1 +
drivers/net/ethernet/intel/ice/ice_main.c | 3 +
drivers/net/ethernet/intel/ice/ice_switch.c | 1 +
.../net/ethernet/intel/ice/ice_virtchnl_pf.c | 1204 +++++++++++++++++
.../net/ethernet/intel/ice/ice_virtchnl_pf.h | 11 +
6 files changed, 1221 insertions(+)
diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index a9572f8ef6bf..4c4b5717a627 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -71,6 +71,7 @@ extern const char ice_drv_ver[];
#define ICE_MAX_QS_PER_VF 256
#define ICE_MIN_QS_PER_VF 1
#define ICE_DFLT_QS_PER_VF 4
+#define ICE_MAX_BASE_QS_PER_VF 16
#define ICE_MAX_INTR_PER_VF 65
#define ICE_MIN_INTR_PER_VF (ICE_MIN_QS_PER_VF + 1)
#define ICE_DFLT_INTR_PER_VF (ICE_DFLT_QS_PER_VF + 1)
diff --git a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
index 2c8f590316e9..6653555f55dd 100644
--- a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
@@ -1446,6 +1446,7 @@ enum ice_adminq_opc {
ice_aqc_opc_nvm_read = 0x0701,
/* PF/VF mailbox commands */
+ ice_mbx_opc_send_msg_to_pf = 0x0801,
ice_mbx_opc_send_msg_to_vf = 0x0802,
/* RSS commands */
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 01112ae7fdc3..4c8e7460e16b 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -800,6 +800,9 @@ static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type)
dev_err(&pf->pdev->dev,
"Could not handle link event\n");
break;
+ case ice_mbx_opc_send_msg_to_pf:
+ ice_vc_process_vf_msg(pf, &event);
+ break;
case ice_aqc_opc_fw_logging:
ice_output_fw_log(hw, &event.desc, event.msg_buf);
break;
diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index e949224b5282..9a2664fd87b8 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -187,6 +187,7 @@ ice_aq_add_vsi(struct ice_hw *hw, struct ice_vsi_ctx *vsi_ctx,
if (!vsi_ctx->alloc_from_pool)
cmd->vsi_num = cpu_to_le16(vsi_ctx->vsi_num |
ICE_AQ_VSI_IS_VALID);
+ cmd->vf_id = vsi_ctx->vf_num;
cmd->vsi_flags = cpu_to_le16(vsi_ctx->flags);
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index cf4517fd58e8..f44292b00807 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -79,6 +79,35 @@ ice_set_pfe_link_forced(struct ice_vf *vf, struct virtchnl_pf_event *pfe,
ice_set_pfe_link(vf, pfe, link_speed, link_up);
}
+/**
+ * ice_vc_notify_vf_link_state - Inform a VF of link status
+ * @vf: pointer to the VF structure
+ *
+ * send a link status message to a single VF
+ */
+static void ice_vc_notify_vf_link_state(struct ice_vf *vf)
+{
+ struct virtchnl_pf_event pfe = { 0 };
+ struct ice_link_status *ls;
+ struct ice_pf *pf = vf->pf;
+ struct ice_hw *hw;
+
+ hw = &pf->hw;
+ ls = &hw->port_info->phy.link_info;
+
+ pfe.event = VIRTCHNL_EVENT_LINK_CHANGE;
+ pfe.severity = PF_EVENT_SEVERITY_INFO;
+
+ if (vf->link_forced)
+ ice_set_pfe_link_forced(vf, &pfe, vf->link_up);
+ else
+ ice_set_pfe_link(vf, &pfe, ls->link_speed, ls->link_info &
+ ICE_AQ_LINK_UP);
+
+ ice_aq_send_msg_to_vf(hw, vf->vf_id, VIRTCHNL_OP_EVENT, 0, (u8 *)&pfe,
+ sizeof(pfe), NULL);
+}
+
/**
* ice_get_vf_vector - get VF interrupt vector register offset
* @vf_msix: number of MSIx vector per VF on a PF
@@ -1107,6 +1136,866 @@ static void ice_vc_dis_vf(struct ice_vf *vf)
ice_reset_vf(vf, false);
}
+/**
+ * ice_vc_send_msg_to_vf - Send message to VF
+ * @vf: pointer to the VF info
+ * @v_opcode: virtual channel opcode
+ * @v_retval: virtual channel return value
+ * @msg: pointer to the msg buffer
+ * @msglen: msg length
+ *
+ * send msg to VF
+ */
+static int ice_vc_send_msg_to_vf(struct ice_vf *vf, u32 v_opcode,
+ enum ice_status v_retval, u8 *msg, u16 msglen)
+{
+ enum ice_status aq_ret;
+ struct ice_pf *pf;
+
+ /* validate the request */
+ if (!vf || vf->vf_id >= vf->pf->num_alloc_vfs)
+ return -EINVAL;
+
+ pf = vf->pf;
+
+ /* single place to detect unsuccessful return values */
+ if (v_retval) {
+ vf->num_inval_msgs++;
+ dev_info(&pf->pdev->dev, "VF %d failed opcode %d, retval: %d\n",
+ vf->vf_id, v_opcode, v_retval);
+ if (vf->num_inval_msgs > ICE_DFLT_NUM_INVAL_MSGS_ALLOWED) {
+ dev_err(&pf->pdev->dev,
+ "Number of invalid messages exceeded for VF %d\n",
+ vf->vf_id);
+ dev_err(&pf->pdev->dev, "Use PF Control I/F to enable the VF\n");
+ set_bit(ICE_VF_STATE_DIS, vf->vf_states);
+ return -EIO;
+ }
+ } else {
+ vf->num_valid_msgs++;
+ /* reset the invalid counter, if a valid message is received. */
+ vf->num_inval_msgs = 0;
+ }
+
+ aq_ret = ice_aq_send_msg_to_vf(&pf->hw, vf->vf_id, v_opcode, v_retval,
+ msg, msglen, NULL);
+ if (aq_ret) {
+ dev_info(&pf->pdev->dev,
+ "Unable to send the message to VF %d aq_err %d\n",
+ vf->vf_id, pf->hw.mailboxq.sq_last_status);
+ return -EIO;
+ }
+
+ return 0;
+}
+
+/**
+ * ice_vc_get_ver_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to request the API version used by the PF
+ */
+static int ice_vc_get_ver_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_version_info info = {
+ VIRTCHNL_VERSION_MAJOR, VIRTCHNL_VERSION_MINOR
+ };
+
+ vf->vf_ver = *(struct virtchnl_version_info *)msg;
+ /* VFs running the 1.0 API expect to get 1.0 back or they will cry. */
+ if (VF_IS_V10(&vf->vf_ver))
+ info.minor = VIRTCHNL_VERSION_MINOR_NO_VF_CAPS;
+
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_VERSION, ICE_SUCCESS,
+ (u8 *)&info,
+ sizeof(struct virtchnl_version_info));
+}
+
+/**
+ * ice_vc_get_vf_res_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to request its resources
+ */
+static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_vf_resource *vfres = NULL;
+ enum ice_status aq_ret = 0;
+ struct ice_pf *pf = vf->pf;
+ struct ice_vsi *vsi;
+ int len = 0;
+ int ret;
+
+ if (!test_bit(ICE_VF_STATE_INIT, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto err;
+ }
+
+ len = sizeof(struct virtchnl_vf_resource);
+
+ vfres = devm_kzalloc(&pf->pdev->dev, len, GFP_KERNEL);
+ if (!vfres) {
+ aq_ret = ICE_ERR_NO_MEMORY;
+ len = 0;
+ goto err;
+ }
+ if (VF_IS_V11(&vf->vf_ver))
+ vf->driver_caps = *(u32 *)msg;
+ else
+ vf->driver_caps = VIRTCHNL_VF_OFFLOAD_L2 |
+ VIRTCHNL_VF_OFFLOAD_RSS_REG |
+ VIRTCHNL_VF_OFFLOAD_VLAN;
+
+ vfres->vf_cap_flags = VIRTCHNL_VF_OFFLOAD_L2;
+ vsi = pf->vsi[vf->lan_vsi_idx];
+ if (!vsi->info.pvid)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_VLAN;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PF) {
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RSS_PF;
+ } else {
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_AQ)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RSS_AQ;
+ else
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RSS_REG;
+ }
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ENCAP)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_ENCAP;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ENCAP_CSUM)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_ENCAP_CSUM;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RX_POLLING)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RX_POLLING;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_WB_ON_ITR;
+
+ if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_REQ_QUEUES)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_REQ_QUEUES;
+
+ if (vf->driver_caps & VIRTCHNL_VF_CAP_ADV_LINK_SPEED)
+ vfres->vf_cap_flags |= VIRTCHNL_VF_CAP_ADV_LINK_SPEED;
+
+ vfres->num_vsis = 1;
+ /* Tx and Rx queue are equal for VF */
+ vfres->num_queue_pairs = vsi->num_txq;
+ vfres->max_vectors = pf->num_vf_msix;
+ vfres->rss_key_size = ICE_VSIQF_HKEY_ARRAY_SIZE;
+ vfres->rss_lut_size = ICE_VSIQF_HLUT_ARRAY_SIZE;
+
+ vfres->vsi_res[0].vsi_id = vf->lan_vsi_num;
+ vfres->vsi_res[0].vsi_type = VIRTCHNL_VSI_SRIOV;
+ vfres->vsi_res[0].num_queue_pairs = vsi->num_txq;
+ ether_addr_copy(vfres->vsi_res[0].default_mac_addr,
+ vf->dflt_lan_addr.addr);
+
+ set_bit(ICE_VF_STATE_ACTIVE, vf->vf_states);
+
+err:
+ /* send the response back to the VF */
+ ret = ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_GET_VF_RESOURCES, aq_ret,
+ (u8 *)vfres, len);
+
+ devm_kfree(&pf->pdev->dev, vfres);
+ return ret;
+}
+
+/**
+ * ice_vc_reset_vf_msg
+ * @vf: pointer to the VF info
+ *
+ * called from the VF to reset itself,
+ * unlike other virtchnl messages, PF driver
+ * doesn't send the response back to the VF
+ */
+static void ice_vc_reset_vf_msg(struct ice_vf *vf)
+{
+ if (test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
+ ice_reset_vf(vf, false);
+}
+
+/**
+ * ice_find_vsi_from_id
+ * @pf: the pf structure to search for the VSI
+ * @id: id of the VSI it is searching for
+ *
+ * searches for the VSI with the given id
+ */
+static struct ice_vsi *ice_find_vsi_from_id(struct ice_pf *pf, u16 id)
+{
+ int i;
+
+ for (i = 0; i < pf->num_alloc_vsi; i++)
+ if (pf->vsi[i] && pf->vsi[i]->vsi_num == id)
+ return pf->vsi[i];
+
+ return NULL;
+}
+
+/**
+ * ice_vc_isvalid_vsi_id
+ * @vf: pointer to the VF info
+ * @vsi_id: VF relative VSI id
+ *
+ * check for the valid VSI id
+ */
+static bool ice_vc_isvalid_vsi_id(struct ice_vf *vf, u16 vsi_id)
+{
+ struct ice_pf *pf = vf->pf;
+ struct ice_vsi *vsi;
+
+ vsi = ice_find_vsi_from_id(pf, vsi_id);
+
+ return (vsi && (vsi->vf_id == vf->vf_id));
+}
+
+/**
+ * ice_vc_isvalid_q_id
+ * @vf: pointer to the VF info
+ * @vsi_id: VSI id
+ * @qid: VSI relative queue id
+ *
+ * check for the valid queue id
+ */
+static bool ice_vc_isvalid_q_id(struct ice_vf *vf, u16 vsi_id, u8 qid)
+{
+ struct ice_vsi *vsi = ice_find_vsi_from_id(vf->pf, vsi_id);
+ /* allocated Tx and Rx queues should be always equal for VF VSI */
+ return (vsi && (qid < vsi->alloc_txq));
+}
+
+/**
+ * ice_vc_config_rss_key
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * Configure the VF's RSS key
+ */
+static int ice_vc_config_rss_key(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_rss_key *vrk =
+ (struct virtchnl_rss_key *)msg;
+ struct ice_vsi *vsi = NULL;
+ enum ice_status aq_ret;
+ int ret;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vrk->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vrk->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (vrk->key_len != ICE_VSIQF_HKEY_ARRAY_SIZE) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!test_bit(ICE_FLAG_RSS_ENA, vf->pf->flags)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ ret = ice_set_rss(vsi, vrk->key, NULL, 0);
+ aq_ret = ret ? ICE_ERR_PARAM : ICE_SUCCESS;
+error_param:
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_KEY, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_config_rss_lut
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * Configure the VF's RSS LUT
+ */
+static int ice_vc_config_rss_lut(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_rss_lut *vrl = (struct virtchnl_rss_lut *)msg;
+ struct ice_vsi *vsi = NULL;
+ enum ice_status aq_ret;
+ int ret;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vrl->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vrl->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (vrl->lut_entries != ICE_VSIQF_HLUT_ARRAY_SIZE) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!test_bit(ICE_FLAG_RSS_ENA, vf->pf->flags)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ ret = ice_set_rss(vsi, NULL, vrl->lut, ICE_VSIQF_HLUT_ARRAY_SIZE);
+ aq_ret = ret ? ICE_ERR_PARAM : ICE_SUCCESS;
+error_param:
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_LUT, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_get_stats_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to get VSI stats
+ */
+static int ice_vc_get_stats_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_queue_select *vqs =
+ (struct virtchnl_queue_select *)msg;
+ enum ice_status aq_ret = 0;
+ struct ice_eth_stats stats;
+ struct ice_vsi *vsi;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vqs->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vqs->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ memset(&stats, 0, sizeof(struct ice_eth_stats));
+ ice_update_eth_stats(vsi);
+
+ stats = vsi->eth_stats;
+
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_GET_STATS, aq_ret,
+ (u8 *)&stats, sizeof(stats));
+}
+
+/**
+ * ice_vc_ena_qs_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to enable all or specific queue(s)
+ */
+static int ice_vc_ena_qs_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_queue_select *vqs =
+ (struct virtchnl_queue_select *)msg;
+ enum ice_status aq_ret = 0;
+ struct ice_vsi *vsi;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vqs->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!vqs->rx_queues && !vqs->tx_queues) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vqs->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ /* Enable only Rx rings, Tx rings were enabled by the FW when the
+ * Tx queue group list was configured and the context bits were
+ * programmed using ice_vsi_cfg_txqs
+ */
+ if (ice_vsi_start_rx_rings(vsi))
+ aq_ret = ICE_ERR_PARAM;
+
+ /* Set flag to indicate that queues are enabled */
+ if (!aq_ret)
+ set_bit(ICE_VF_STATE_ENA, vf->vf_states);
+
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_dis_qs_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to disable all or specific
+ * queue(s)
+ */
+static int ice_vc_dis_qs_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_queue_select *vqs =
+ (struct virtchnl_queue_select *)msg;
+ enum ice_status aq_ret = 0;
+ struct ice_vsi *vsi;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states) &&
+ !test_bit(ICE_VF_STATE_ENA, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vqs->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!vqs->rx_queues && !vqs->tx_queues) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vqs->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, vf->vf_id)) {
+ dev_err(&vsi->back->pdev->dev,
+ "Failed to stop tx rings on VSI %d\n",
+ vsi->vsi_num);
+ aq_ret = ICE_ERR_PARAM;
+ }
+
+ if (ice_vsi_stop_rx_rings(vsi)) {
+ dev_err(&vsi->back->pdev->dev,
+ "Failed to stop rx rings on VSI %d\n",
+ vsi->vsi_num);
+ aq_ret = ICE_ERR_PARAM;
+ }
+
+ /* Clear enabled queues flag */
+ if (!aq_ret)
+ clear_bit(ICE_VF_STATE_ENA, vf->vf_states);
+
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DISABLE_QUEUES, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_cfg_irq_map_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to configure the IRQ to queue map
+ */
+static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_irq_map_info *irqmap_info =
+ (struct virtchnl_irq_map_info *)msg;
+ u16 vsi_id, vsi_q_id, vector_id;
+ struct virtchnl_vector_map *map;
+ struct ice_vsi *vsi = NULL;
+ struct ice_pf *pf = vf->pf;
+ enum ice_status aq_ret = 0;
+ unsigned long qmap;
+ int i;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ for (i = 0; i < irqmap_info->num_vectors; i++) {
+ map = &irqmap_info->vecmap[i];
+
+ vector_id = map->vector_id;
+ vsi_id = map->vsi_id;
+ /* validate msg params */
+ if (!(vector_id < pf->hw.func_caps.common_cap
+ .num_msix_vectors) || !ice_vc_isvalid_vsi_id(vf, vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ /* lookout for the invalid queue index */
+ qmap = map->rxq_map;
+ for_each_set_bit(vsi_q_id, &qmap, ICE_MAX_BASE_QS_PER_VF) {
+ if (!ice_vc_isvalid_q_id(vf, vsi_id, vsi_q_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+ vsi->q_vectors[i]->num_ring_rx++;
+ vsi->rx_rings[vsi_q_id]->itr_setting =
+ map->rxitr_idx;
+ vsi->rx_rings[vsi_q_id]->q_vector = vsi->q_vectors[i];
+ }
+
+ qmap = map->txq_map;
+ for_each_set_bit(vsi_q_id, &qmap, ICE_MAX_BASE_QS_PER_VF) {
+ if (!ice_vc_isvalid_q_id(vf, vsi_id, vsi_q_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+ vsi->q_vectors[i]->num_ring_tx++;
+ vsi->tx_rings[vsi_q_id]->itr_setting =
+ map->txitr_idx;
+ vsi->tx_rings[vsi_q_id]->q_vector = vsi->q_vectors[i];
+ }
+ }
+
+ if (vsi)
+ ice_vsi_cfg_msix(vsi);
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_IRQ_MAP, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_cfg_qs_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * called from the VF to configure the Rx/Tx queues
+ */
+static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_vsi_queue_config_info *qci =
+ (struct virtchnl_vsi_queue_config_info *)msg;
+ struct virtchnl_queue_pair_info *qpi;
+ enum ice_status aq_ret = 0;
+ struct ice_vsi *vsi;
+ int i;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, qci->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ for (i = 0; i < qci->num_queue_pairs; i++) {
+ qpi = &qci->qpair[i];
+ if (qpi->txq.vsi_id != qci->vsi_id ||
+ qpi->rxq.vsi_id != qci->vsi_id ||
+ qpi->rxq.queue_id != qpi->txq.queue_id ||
+ !ice_vc_isvalid_q_id(vf, qci->vsi_id, qpi->txq.queue_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+ /* copy Tx queue info from VF into VSI */
+ vsi->tx_rings[i]->dma = qpi->txq.dma_ring_addr;
+ vsi->tx_rings[i]->count = qpi->txq.ring_len;
+ /* copy Rx queue info from VF into vsi */
+ vsi->rx_rings[i]->dma = qpi->rxq.dma_ring_addr;
+ vsi->rx_rings[i]->count = qpi->rxq.ring_len;
+ if (qpi->rxq.databuffer_size > ((16 * 1024) - 128)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+ vsi->rx_buf_len = qpi->rxq.databuffer_size;
+ if (qpi->rxq.max_pkt_size >= (16 * 1024) ||
+ qpi->rxq.max_pkt_size < 64) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+ vsi->max_frame = qpi->rxq.max_pkt_size;
+ }
+
+ /* VF can request to configure less than allocated queues
+ * or default allocated queues. So update the VSI with new number
+ */
+ vsi->num_txq = qci->num_queue_pairs;
+ vsi->num_rxq = qci->num_queue_pairs;
+
+ if (!ice_vsi_cfg_txqs(vsi) && !ice_vsi_cfg_rxqs(vsi))
+ aq_ret = 0;
+ else
+ aq_ret = ICE_ERR_PARAM;
+
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_is_vf_trusted
+ * @vf: pointer to the VF info
+ */
+static bool ice_is_vf_trusted(struct ice_vf *vf)
+{
+ return test_bit(ICE_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
+}
+
+/**
+ * ice_can_vf_change_mac
+ * @vf: pointer to the VF info
+ *
+ * Return true if the VF is allowed to change its MAC filters, false otherwise
+ */
+static bool ice_can_vf_change_mac(struct ice_vf *vf)
+{
+ /* If the VF MAC address has been set administratively (via the
+ * ndo_set_vf_mac command), then deny permission to the VF to
+ * add/delete unicast MAC addresses, unless the VF is trusted
+ */
+ if (vf->pf_set_mac && !ice_is_vf_trusted(vf))
+ return false;
+
+ return true;
+}
+
+/**
+ * ice_vc_handle_mac_addr_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ * @set: true if mac filters are being set, false otherwise
+ *
+ * add guest mac address filter
+ */
+static int
+ice_vc_handle_mac_addr_msg(struct ice_vf *vf, u8 *msg, bool set)
+{
+ struct virtchnl_ether_addr_list *al =
+ (struct virtchnl_ether_addr_list *)msg;
+ struct ice_pf *pf = vf->pf;
+ enum virtchnl_ops vc_op;
+ enum ice_status ret;
+ LIST_HEAD(mac_list);
+ struct ice_vsi *vsi;
+ int mac_count = 0;
+ int i;
+
+ if (set)
+ vc_op = VIRTCHNL_OP_ADD_ETH_ADDR;
+ else
+ vc_op = VIRTCHNL_OP_DEL_ETH_ADDR;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states) ||
+ !ice_vc_isvalid_vsi_id(vf, al->vsi_id)) {
+ ret = ICE_ERR_PARAM;
+ goto handle_mac_exit;
+ }
+
+ if (set && !ice_is_vf_trusted(vf) &&
+ (vf->num_mac + al->num_elements) > ICE_MAX_MACADDR_PER_VF) {
+ dev_err(&pf->pdev->dev,
+ "Can't add more MAC addresses, because VF is not trusted, switch the VF to trusted mode in order to add more functionalities\n");
+ ret = ICE_ERR_PARAM;
+ goto handle_mac_exit;
+ }
+
+ vsi = pf->vsi[vf->lan_vsi_idx];
+
+ for (i = 0; i < al->num_elements; i++) {
+ u8 *maddr = al->list[i].addr;
+
+ if (ether_addr_equal(maddr, vf->dflt_lan_addr.addr) ||
+ is_broadcast_ether_addr(maddr)) {
+ if (set) {
+ /* VF is trying to add filters that the PF
+ * already added. Just continue.
+ */
+ dev_info(&pf->pdev->dev,
+ "mac %pM already set for VF %d\n",
+ maddr, vf->vf_id);
+ continue;
+ } else {
+ /* VF can't remove dflt_lan_addr/bcast mac */
+ dev_err(&pf->pdev->dev,
+ "can't remove mac %pM for VF %d\n",
+ maddr, vf->vf_id);
+ ret = ICE_ERR_PARAM;
+ goto handle_mac_exit;
+ }
+ }
+
+ /* check for the invalid cases and bail if necessary */
+ if (is_zero_ether_addr(maddr)) {
+ dev_err(&pf->pdev->dev,
+ "invalid mac %pM provided for VF %d\n",
+ maddr, vf->vf_id);
+ ret = ICE_ERR_PARAM;
+ goto handle_mac_exit;
+ }
+
+ if (is_unicast_ether_addr(maddr) &&
+ !ice_can_vf_change_mac(vf)) {
+ dev_err(&pf->pdev->dev,
+ "can't change unicast mac for untrusted VF %d\n",
+ vf->vf_id);
+ ret = ICE_ERR_PARAM;
+ goto handle_mac_exit;
+ }
+
+ /* get here if maddr is multicast or if VF can change mac */
+ if (ice_add_mac_to_list(vsi, &mac_list, al->list[i].addr)) {
+ ret = ICE_ERR_NO_MEMORY;
+ goto handle_mac_exit;
+ }
+ mac_count++;
+ }
+
+ /* program the updated filter list */
+ if (set)
+ ret = ice_add_mac(&pf->hw, &mac_list);
+ else
+ ret = ice_remove_mac(&pf->hw, &mac_list);
+
+ if (ret) {
+ dev_err(&pf->pdev->dev,
+ "can't update mac filters for VF %d, error %d\n",
+ vf->vf_id, ret);
+ } else {
+ if (set)
+ vf->num_mac += mac_count;
+ else
+ vf->num_mac -= mac_count;
+ }
+
+handle_mac_exit:
+ ice_free_fltr_list(&pf->pdev->dev, &mac_list);
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, vc_op, ret, NULL, 0);
+}
+
+/**
+ * ice_vc_add_mac_addr_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * add guest MAC address filter
+ */
+static int ice_vc_add_mac_addr_msg(struct ice_vf *vf, u8 *msg)
+{
+ return ice_vc_handle_mac_addr_msg(vf, msg, true);
+}
+
+/**
+ * ice_vc_del_mac_addr_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * remove guest MAC address filter
+ */
+static int ice_vc_del_mac_addr_msg(struct ice_vf *vf, u8 *msg)
+{
+ return ice_vc_handle_mac_addr_msg(vf, msg, false);
+}
+
+/**
+ * ice_vc_request_qs_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * VFs get a default number of queues but can use this message to request a
+ * different number. If the request is successful, PF will reset the VF and
+ * return 0. If unsuccessful, PF will send message informing VF of number of
+ * available queue pairs via virtchnl message response to VF.
+ */
+static int ice_vc_request_qs_msg(struct ice_vf *vf, u8 *msg)
+{
+ struct virtchnl_vf_res_request *vfres =
+ (struct virtchnl_vf_res_request *)msg;
+ int req_queues = vfres->num_queue_pairs;
+ enum ice_status aq_ret = 0;
+ struct ice_pf *pf = vf->pf;
+ int tx_rx_queue_left;
+ int cur_queues;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ cur_queues = pf->num_vf_qps;
+ tx_rx_queue_left = min_t(int, pf->q_left_tx, pf->q_left_rx);
+ if (req_queues <= 0) {
+ dev_err(&pf->pdev->dev,
+ "VF %d tried to request %d queues. Ignoring.\n",
+ vf->vf_id, req_queues);
+ } else if (req_queues > ICE_MAX_QS_PER_VF) {
+ dev_err(&pf->pdev->dev,
+ "VF %d tried to request more than %d queues.\n",
+ vf->vf_id, ICE_MAX_QS_PER_VF);
+ vfres->num_queue_pairs = ICE_MAX_QS_PER_VF;
+ } else if (req_queues - cur_queues > tx_rx_queue_left) {
+ dev_warn(&pf->pdev->dev,
+ "VF %d requested %d more queues, but only %d left.\n",
+ vf->vf_id, req_queues - cur_queues, tx_rx_queue_left);
+ vfres->num_queue_pairs = tx_rx_queue_left + cur_queues;
+ } else {
+ /* request is successful, then reset VF */
+ vf->num_req_qs = req_queues;
+ ice_vc_dis_vf(vf);
+ dev_info(&pf->pdev->dev,
+ "VF %d granted request of %d queues.\n",
+ vf->vf_id, req_queues);
+ return 0;
+ }
+
+error_param:
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_REQUEST_QUEUES,
+ aq_ret, (u8 *)vfres, sizeof(*vfres));
+}
+
/**
* ice_set_vf_port_vlan
* @netdev: network interface device structure
@@ -1190,6 +2079,321 @@ ice_set_vf_port_vlan(struct net_device *netdev, int vf_id, u16 vlan_id, u8 qos,
return ret;
}
+/**
+ * ice_vc_process_vlan_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ * @add_v: Add VLAN if true, otherwise delete VLAN
+ *
+ * Process virtchnl op to add or remove programmed guest VLAN id
+ */
+static int ice_vc_process_vlan_msg(struct ice_vf *vf, u8 *msg, bool add_v)
+{
+ struct virtchnl_vlan_filter_list *vfl =
+ (struct virtchnl_vlan_filter_list *)msg;
+ enum ice_status aq_ret = 0;
+ struct ice_pf *pf = vf->pf;
+ struct ice_vsi *vsi;
+ int i;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (!ice_vc_isvalid_vsi_id(vf, vfl->vsi_id)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (add_v && !ice_is_vf_trusted(vf) &&
+ vf->num_vlan >= ICE_MAX_VLAN_PER_VF) {
+ dev_info(&pf->pdev->dev,
+ "VF is not trusted, switch the VF to trusted mode, in order to add more VLAN addresses\n");
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ for (i = 0; i < vfl->num_elements; i++) {
+ if (vfl->vlan_id[i] > ICE_MAX_VLANID) {
+ aq_ret = ICE_ERR_PARAM;
+ dev_err(&pf->pdev->dev,
+ "invalid VF VLAN id %d\n", vfl->vlan_id[i]);
+ goto error_param;
+ }
+ }
+
+ vsi = ice_find_vsi_from_id(vf->pf, vfl->vsi_id);
+ if (!vsi) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (vsi->info.pvid) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (ice_vsi_manage_vlan_stripping(vsi, add_v)) {
+ dev_err(&pf->pdev->dev,
+ "%sable VLAN stripping failed for VSI %i\n",
+ add_v ? "en" : "dis", vsi->vsi_num);
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ if (add_v) {
+ for (i = 0; i < vfl->num_elements; i++) {
+ u16 vid = vfl->vlan_id[i];
+
+ if (!ice_vsi_add_vlan(vsi, vid)) {
+ vf->num_vlan++;
+ set_bit(vid, vsi->active_vlans);
+
+ /* Enable VLAN pruning when VLAN 0 is added */
+ if (unlikely(!vid))
+ if (ice_cfg_vlan_pruning(vsi, true))
+ aq_ret = ICE_ERR_PARAM;
+ } else {
+ aq_ret = ICE_ERR_PARAM;
+ }
+ }
+ } else {
+ for (i = 0; i < vfl->num_elements; i++) {
+ u16 vid = vfl->vlan_id[i];
+
+ /* Make sure ice_vsi_kill_vlan is successful before
+ * updating VLAN information
+ */
+ if (!ice_vsi_kill_vlan(vsi, vid)) {
+ vf->num_vlan--;
+ clear_bit(vid, vsi->active_vlans);
+
+ /* Disable VLAN pruning when removing VLAN 0 */
+ if (unlikely(!vid))
+ ice_cfg_vlan_pruning(vsi, false);
+ }
+ }
+ }
+
+error_param:
+ /* send the response to the VF */
+ if (add_v)
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ADD_VLAN, aq_ret,
+ NULL, 0);
+ else
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DEL_VLAN, aq_ret,
+ NULL, 0);
+}
+
+/**
+ * ice_vc_add_vlan_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * Add and program guest VLAN id
+ */
+static int ice_vc_add_vlan_msg(struct ice_vf *vf, u8 *msg)
+{
+ return ice_vc_process_vlan_msg(vf, msg, true);
+}
+
+/**
+ * ice_vc_remove_vlan_msg
+ * @vf: pointer to the VF info
+ * @msg: pointer to the msg buffer
+ *
+ * remove programmed guest VLAN id
+ */
+static int ice_vc_remove_vlan_msg(struct ice_vf *vf, u8 *msg)
+{
+ return ice_vc_process_vlan_msg(vf, msg, false);
+}
+
+/**
+ * ice_vc_ena_vlan_stripping
+ * @vf: pointer to the VF info
+ *
+ * Enable VLAN header stripping for a given VF
+ */
+static int ice_vc_ena_vlan_stripping(struct ice_vf *vf)
+{
+ enum ice_status aq_ret = 0;
+ struct ice_pf *pf = vf->pf;
+ struct ice_vsi *vsi;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = pf->vsi[vf->lan_vsi_idx];
+ if (ice_vsi_manage_vlan_stripping(vsi, true))
+ aq_ret = ICE_ERR_AQ_ERROR;
+
+error_param:
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ENABLE_VLAN_STRIPPING,
+ aq_ret, NULL, 0);
+}
+
+/**
+ * ice_vc_dis_vlan_stripping
+ * @vf: pointer to the VF info
+ *
+ * Disable VLAN header stripping for a given VF
+ */
+static int ice_vc_dis_vlan_stripping(struct ice_vf *vf)
+{
+ enum ice_status aq_ret = 0;
+ struct ice_pf *pf = vf->pf;
+ struct ice_vsi *vsi;
+
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
+ aq_ret = ICE_ERR_PARAM;
+ goto error_param;
+ }
+
+ vsi = pf->vsi[vf->lan_vsi_idx];
+ if (ice_vsi_manage_vlan_stripping(vsi, false))
+ aq_ret = ICE_ERR_AQ_ERROR;
+
+error_param:
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DISABLE_VLAN_STRIPPING,
+ aq_ret, NULL, 0);
+}
+
+/**
+ * ice_vc_process_vf_msg - Process request from VF
+ * @pf: pointer to the PF structure
+ * @event: pointer to the AQ event
+ *
+ * called from the common asq/arq handler to
+ * process request from VF
+ */
+void ice_vc_process_vf_msg(struct ice_pf *pf, struct ice_rq_event_info *event)
+{
+ u32 v_opcode = le32_to_cpu(event->desc.cookie_high);
+ s16 vf_id = le16_to_cpu(event->desc.retval);
+ u16 msglen = event->msg_len;
+ u8 *msg = event->msg_buf;
+ struct ice_vf *vf = NULL;
+ int err = 0;
+
+ if (vf_id >= pf->num_alloc_vfs) {
+ err = -EINVAL;
+ goto error_handler;
+ }
+
+ vf = &pf->vf[vf_id];
+
+ /* Check if VF is disabled. */
+ if (test_bit(ICE_VF_STATE_DIS, vf->vf_states)) {
+ err = -EPERM;
+ goto error_handler;
+ }
+
+ /* Perform basic checks on the msg */
+ err = virtchnl_vc_validate_vf_msg(&vf->vf_ver, v_opcode, msg, msglen);
+ if (err) {
+ if (err == VIRTCHNL_ERR_PARAM)
+ err = -EPERM;
+ else
+ err = -EINVAL;
+ goto error_handler;
+ }
+
+ /* Perform additional checks specific to RSS and Virtchnl */
+ if (v_opcode == VIRTCHNL_OP_CONFIG_RSS_KEY) {
+ struct virtchnl_rss_key *vrk = (struct virtchnl_rss_key *)msg;
+
+ if (vrk->key_len != ICE_VSIQF_HKEY_ARRAY_SIZE)
+ err = -EINVAL;
+ } else if (v_opcode == VIRTCHNL_OP_CONFIG_RSS_LUT) {
+ struct virtchnl_rss_lut *vrl = (struct virtchnl_rss_lut *)msg;
+
+ if (vrl->lut_entries != ICE_VSIQF_HLUT_ARRAY_SIZE)
+ err = -EINVAL;
+ }
+
+error_handler:
+ if (err) {
+ ice_vc_send_msg_to_vf(vf, v_opcode, ICE_ERR_PARAM, NULL, 0);
+ dev_err(&pf->pdev->dev, "Invalid message from VF %d, opcode %d, len %d, error %d\n",
+ vf_id, v_opcode, msglen, err);
+ return;
+ }
+
+ switch (v_opcode) {
+ case VIRTCHNL_OP_VERSION:
+ err = ice_vc_get_ver_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_GET_VF_RESOURCES:
+ err = ice_vc_get_vf_res_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_RESET_VF:
+ ice_vc_reset_vf_msg(vf);
+ break;
+ case VIRTCHNL_OP_ADD_ETH_ADDR:
+ err = ice_vc_add_mac_addr_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_DEL_ETH_ADDR:
+ err = ice_vc_del_mac_addr_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_CONFIG_VSI_QUEUES:
+ err = ice_vc_cfg_qs_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_ENABLE_QUEUES:
+ err = ice_vc_ena_qs_msg(vf, msg);
+ ice_vc_notify_vf_link_state(vf);
+ break;
+ case VIRTCHNL_OP_DISABLE_QUEUES:
+ err = ice_vc_dis_qs_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_REQUEST_QUEUES:
+ err = ice_vc_request_qs_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_CONFIG_IRQ_MAP:
+ err = ice_vc_cfg_irq_map_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_CONFIG_RSS_KEY:
+ err = ice_vc_config_rss_key(vf, msg);
+ break;
+ case VIRTCHNL_OP_CONFIG_RSS_LUT:
+ err = ice_vc_config_rss_lut(vf, msg);
+ break;
+ case VIRTCHNL_OP_GET_STATS:
+ err = ice_vc_get_stats_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_ADD_VLAN:
+ err = ice_vc_add_vlan_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_DEL_VLAN:
+ err = ice_vc_remove_vlan_msg(vf, msg);
+ break;
+ case VIRTCHNL_OP_ENABLE_VLAN_STRIPPING:
+ err = ice_vc_ena_vlan_stripping(vf);
+ break;
+ case VIRTCHNL_OP_DISABLE_VLAN_STRIPPING:
+ err = ice_vc_dis_vlan_stripping(vf);
+ break;
+ case VIRTCHNL_OP_UNKNOWN:
+ default:
+ dev_err(&pf->pdev->dev, "Unsupported opcode %d from VF %d\n",
+ v_opcode, vf_id);
+ err = ice_vc_send_msg_to_vf(vf, v_opcode, ICE_ERR_NOT_IMPL,
+ NULL, 0);
+ break;
+ }
+ if (err) {
+ /* Helper function cares less about error return values here
+ * as it is busy with pending work.
+ */
+ dev_info(&pf->pdev->dev,
+ "PF failed to honor VF %d, opcode %d\n, error %d\n",
+ vf_id, v_opcode, err);
+ }
+}
+
/**
* ice_get_vf_cfg
* @netdev: network interface device structure
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
index c4597abed288..7561a678ebe6 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
@@ -9,6 +9,11 @@
#define ICE_VLAN_PRIORITY_S 12
#define ICE_VLAN_M 0xFFF
#define ICE_PRIORITY_M 0x7000
+#define ICE_MAX_VLAN_PER_VF 8 /* restriction for non-trusted VF */
+
+/* Restrict number of MACs a non-trusted VF can program */
+#define ICE_MAX_MACADDR_PER_VF 12
+#define ICE_DFLT_NUM_INVAL_MSGS_ALLOWED 10
/* Static VF transaction/status register def */
#define VF_DEVICE_STATUS 0xAA
@@ -44,12 +49,15 @@ struct ice_vf {
u32 driver_caps; /* reported by VF driver */
int first_vector_idx; /* first vector index of this VF */
struct ice_sw *vf_sw_id; /* switch id the VF VSIs connect to */
+ struct virtchnl_version_info vf_ver;
struct virtchnl_ether_addr dflt_lan_addr;
u16 port_vlan_id;
u8 pf_set_mac; /* VF MAC address set by VMM admin */
u8 trusted;
u16 lan_vsi_idx; /* index into PF struct */
u16 lan_vsi_num; /* ID as used by firmware */
+ u64 num_inval_msgs; /* number of continuous invalid msgs */
+ u64 num_valid_msgs; /* number of valid msgs detected */
unsigned long vf_caps; /* vf's adv. capabilities */
DECLARE_BITMAP(vf_states, ICE_VF_STATES_NBITS); /* VF runtime states */
unsigned int tx_rate; /* Tx bandwidth limit in Mbps */
@@ -58,6 +66,7 @@ struct ice_vf {
u8 spoofchk;
u16 num_mac;
u16 num_vlan;
+ u8 num_req_qs; /* num of queue pairs requested by VF */
};
#ifdef CONFIG_PCI_IOV
@@ -68,6 +77,7 @@ int ice_get_vf_cfg(struct net_device *netdev, int vf_id,
struct ifla_vf_info *ivi);
void ice_free_vfs(struct ice_pf *pf);
+void ice_vc_process_vf_msg(struct ice_pf *pf, struct ice_rq_event_info *event);
void ice_vc_notify_reset(struct ice_pf *pf);
bool ice_reset_all_vfs(struct ice_pf *pf, bool is_vflr);
@@ -85,6 +95,7 @@ int ice_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool ena);
#else /* CONFIG_PCI_IOV */
#define ice_process_vflr_event(pf) do {} while (0)
#define ice_free_vfs(pf) do {} while (0)
+#define ice_vc_process_vf_msg(pf, event) do {} while (0)
#define ice_vc_notify_reset(pf) do {} while (0)
static inline bool
ice_reset_all_vfs(struct ice_pf __always_unused *pf,
--
2.17.1
^ permalink raw reply related
* [net-next 13/15] ice: Add more flexibility on how we assign an ITR index
From: Jeff Kirsher @ 2018-10-03 15:48 UTC (permalink / raw)
To: davem
Cc: Brett Creeley, netdev, nhorman, sassmann, Anirudh Venkataramanan,
Jeff Kirsher
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Brett Creeley <brett.creeley@intel.com>
This issue came about when looking at the VF function
ice_vc_cfg_irq_map_msg. Currently we are assigning the itr_setting value
to the itr_idx received from the AVF driver, which is not correct and is
not used for the VF flow anyway. Currently the only way we set the ITR
index for both the PF and VF driver is by hard coding ICE_TX_ITR or
ICE_RX_ITR for the ITR index on each q_vector.
To fix this, add the member itr_idx in struct ice_ring_container. This
can then be used to dynamically program the correct ITR index. This change
also affected the PF driver so make the necessary changes there as well.
Also, removed the itr_setting member in struct ice_ring because it is not
being used meaningfully and is going to be removed in a future patch that
includes dynamic ITR.
On another note, this will be useful moving forward if we decide to split
Rx/Tx rings on different q_vectors instead of sharing them as queue pairs.
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ice/ice_lib.c | 73 +++++++++++--------
drivers/net/ethernet/intel/ice/ice_txrx.h | 13 +---
.../net/ethernet/intel/ice/ice_virtchnl_pf.c | 20 +++--
3 files changed, 59 insertions(+), 47 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 8139302cd92b..49f1940772ed 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -1204,7 +1204,6 @@ static int ice_vsi_alloc_rings(struct ice_vsi *vsi)
ring->vsi = vsi;
ring->dev = &pf->pdev->dev;
ring->count = vsi->num_desc;
- ring->itr_setting = ICE_DFLT_TX_ITR;
vsi->tx_rings[i] = ring;
}
@@ -1224,7 +1223,6 @@ static int ice_vsi_alloc_rings(struct ice_vsi *vsi)
ring->netdev = vsi->netdev;
ring->dev = &pf->pdev->dev;
ring->count = vsi->num_desc;
- ring->itr_setting = ICE_DFLT_RX_ITR;
vsi->rx_rings[i] = ring;
}
@@ -1261,6 +1259,7 @@ static void ice_vsi_map_rings_to_vectors(struct ice_vsi *vsi)
tx_rings_per_v = DIV_ROUND_UP(tx_rings_rem, q_vectors - v_id);
q_vector->num_ring_tx = tx_rings_per_v;
q_vector->tx.ring = NULL;
+ q_vector->tx.itr_idx = ICE_TX_ITR;
q_base = vsi->num_txq - tx_rings_rem;
for (q_id = q_base; q_id < (q_base + tx_rings_per_v); q_id++) {
@@ -1276,6 +1275,7 @@ static void ice_vsi_map_rings_to_vectors(struct ice_vsi *vsi)
rx_rings_per_v = DIV_ROUND_UP(rx_rings_rem, q_vectors - v_id);
q_vector->num_ring_rx = rx_rings_per_v;
q_vector->rx.ring = NULL;
+ q_vector->rx.itr_idx = ICE_RX_ITR;
q_base = vsi->num_rxq - rx_rings_rem;
for (q_id = q_base; q_id < (q_base + rx_rings_per_v); q_id++) {
@@ -1683,6 +1683,37 @@ static u32 ice_intrl_usec_to_reg(u8 intrl, u8 gran)
return 0;
}
+/**
+ * ice_cfg_itr - configure the initial interrupt throttle values
+ * @hw: pointer to the HW structure
+ * @q_vector: interrupt vector that's being configured
+ * @vector: HW vector index to apply the interrupt throttling to
+ *
+ * Configure interrupt throttling values for the ring containers that are
+ * associated with the interrupt vector passed in.
+ */
+static void
+ice_cfg_itr(struct ice_hw *hw, struct ice_q_vector *q_vector, u16 vector)
+{
+ u8 itr_gran = hw->itr_gran;
+
+ if (q_vector->num_ring_rx) {
+ struct ice_ring_container *rc = &q_vector->rx;
+
+ rc->itr = ITR_TO_REG(ICE_DFLT_RX_ITR, itr_gran);
+ rc->latency_range = ICE_LOW_LATENCY;
+ wr32(hw, GLINT_ITR(rc->itr_idx, vector), rc->itr);
+ }
+
+ if (q_vector->num_ring_tx) {
+ struct ice_ring_container *rc = &q_vector->tx;
+
+ rc->itr = ITR_TO_REG(ICE_DFLT_TX_ITR, itr_gran);
+ rc->latency_range = ICE_LOW_LATENCY;
+ wr32(hw, GLINT_ITR(rc->itr_idx, vector), rc->itr);
+ }
+}
+
/**
* ice_vsi_cfg_msix - MSIX mode Interrupt Config in the HW
* @vsi: the VSI being configured
@@ -1693,31 +1724,13 @@ void ice_vsi_cfg_msix(struct ice_vsi *vsi)
u16 vector = vsi->hw_base_vector;
struct ice_hw *hw = &pf->hw;
u32 txq = 0, rxq = 0;
- int i, q, itr;
- u8 itr_gran;
+ int i, q;
for (i = 0; i < vsi->num_q_vectors; i++, vector++) {
struct ice_q_vector *q_vector = vsi->q_vectors[i];
- itr_gran = hw->itr_gran;
+ ice_cfg_itr(hw, q_vector, vector);
- q_vector->intrl = ICE_DFLT_INTRL;
-
- if (q_vector->num_ring_rx) {
- q_vector->rx.itr =
- ITR_TO_REG(vsi->rx_rings[rxq]->itr_setting,
- itr_gran);
- q_vector->rx.latency_range = ICE_LOW_LATENCY;
- }
-
- if (q_vector->num_ring_tx) {
- q_vector->tx.itr =
- ITR_TO_REG(vsi->tx_rings[txq]->itr_setting,
- itr_gran);
- q_vector->tx.latency_range = ICE_LOW_LATENCY;
- }
- wr32(hw, GLINT_ITR(ICE_RX_ITR, vector), q_vector->rx.itr);
- wr32(hw, GLINT_ITR(ICE_TX_ITR, vector), q_vector->tx.itr);
wr32(hw, GLINT_RATE(vector),
ice_intrl_usec_to_reg(q_vector->intrl, hw->intrl_gran));
@@ -1733,32 +1746,32 @@ void ice_vsi_cfg_msix(struct ice_vsi *vsi)
* tracked for this PF.
*/
for (q = 0; q < q_vector->num_ring_tx; q++) {
+ int itr_idx = q_vector->tx.itr_idx;
u32 val;
- itr = ICE_ITR_NONE;
if (vsi->type == ICE_VSI_VF)
val = QINT_TQCTL_CAUSE_ENA_M |
- (itr << QINT_TQCTL_ITR_INDX_S) |
+ (itr_idx << QINT_TQCTL_ITR_INDX_S) |
((i + 1) << QINT_TQCTL_MSIX_INDX_S);
else
val = QINT_TQCTL_CAUSE_ENA_M |
- (itr << QINT_TQCTL_ITR_INDX_S) |
+ (itr_idx << QINT_TQCTL_ITR_INDX_S) |
(vector << QINT_TQCTL_MSIX_INDX_S);
wr32(hw, QINT_TQCTL(vsi->txq_map[txq]), val);
txq++;
}
for (q = 0; q < q_vector->num_ring_rx; q++) {
+ int itr_idx = q_vector->rx.itr_idx;
u32 val;
- itr = ICE_ITR_NONE;
if (vsi->type == ICE_VSI_VF)
val = QINT_RQCTL_CAUSE_ENA_M |
- (itr << QINT_RQCTL_ITR_INDX_S) |
+ (itr_idx << QINT_RQCTL_ITR_INDX_S) |
((i + 1) << QINT_RQCTL_MSIX_INDX_S);
else
val = QINT_RQCTL_CAUSE_ENA_M |
- (itr << QINT_RQCTL_ITR_INDX_S) |
+ (itr_idx << QINT_RQCTL_ITR_INDX_S) |
(vector << QINT_RQCTL_MSIX_INDX_S);
wr32(hw, QINT_RQCTL(vsi->rxq_map[rxq]), val);
rxq++;
@@ -2157,8 +2170,8 @@ static void ice_vsi_release_msix(struct ice_vsi *vsi)
for (i = 0; i < vsi->num_q_vectors; i++, vector++) {
struct ice_q_vector *q_vector = vsi->q_vectors[i];
- wr32(hw, GLINT_ITR(ICE_RX_ITR, vector), 0);
- wr32(hw, GLINT_ITR(ICE_TX_ITR, vector), 0);
+ wr32(hw, GLINT_ITR(ICE_IDX_ITR0, vector), 0);
+ wr32(hw, GLINT_ITR(ICE_IDX_ITR1, vector), 0);
for (q = 0; q < q_vector->num_ring_tx; q++) {
wr32(hw, QINT_TQCTL(vsi->txq_map[txq]), 0);
txq++;
diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.h b/drivers/net/ethernet/intel/ice/ice_txrx.h
index a9b92974e041..1d0f58bd389b 100644
--- a/drivers/net/ethernet/intel/ice/ice_txrx.h
+++ b/drivers/net/ethernet/intel/ice/ice_txrx.h
@@ -105,8 +105,9 @@ enum ice_rx_dtype {
#define ICE_TX_ITR ICE_IDX_ITR1
#define ICE_ITR_DYNAMIC 0x8000 /* use top bit as a flag */
#define ICE_ITR_8K 125
-#define ICE_DFLT_TX_ITR ICE_ITR_8K
-#define ICE_DFLT_RX_ITR ICE_ITR_8K
+#define ICE_ITR_20K 50
+#define ICE_DFLT_TX_ITR ICE_ITR_20K
+#define ICE_DFLT_RX_ITR ICE_ITR_20K
/* apply ITR granularity translation to program the register. itr_gran is either
* 2 or 4 usecs so we need to divide by 2 first then shift by that value
*/
@@ -135,13 +136,6 @@ struct ice_ring {
u16 q_index; /* Queue number of ring */
u32 txq_teid; /* Added Tx queue TEID */
- /* high bit set means dynamic, use accessor routines to read/write.
- * hardware supports 4us/2us resolution for the ITR registers.
- * these values always store the USER setting, and must be converted
- * before programming to a register.
- */
- u16 itr_setting;
-
u16 count; /* Number of descriptors */
u16 reg_idx; /* HW register index of the ring */
@@ -178,6 +172,7 @@ struct ice_ring_container {
unsigned int total_bytes; /* total bytes processed this int */
unsigned int total_pkts; /* total packets processed this int */
enum ice_latency_range latency_range;
+ int itr_idx; /* index in the interrupt vector */
u16 itr;
};
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index 20de2034e153..c25e486706f3 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -1678,26 +1678,30 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
/* lookout for the invalid queue index */
qmap = map->rxq_map;
for_each_set_bit(vsi_q_id, &qmap, ICE_MAX_BASE_QS_PER_VF) {
+ struct ice_q_vector *q_vector;
+
if (!ice_vc_isvalid_q_id(vf, vsi_id, vsi_q_id)) {
aq_ret = ICE_ERR_PARAM;
goto error_param;
}
- vsi->q_vectors[i]->num_ring_rx++;
- vsi->rx_rings[vsi_q_id]->itr_setting =
- map->rxitr_idx;
- vsi->rx_rings[vsi_q_id]->q_vector = vsi->q_vectors[i];
+ q_vector = vsi->q_vectors[i];
+ q_vector->num_ring_rx++;
+ q_vector->rx.itr_idx = map->rxitr_idx;
+ vsi->rx_rings[vsi_q_id]->q_vector = q_vector;
}
qmap = map->txq_map;
for_each_set_bit(vsi_q_id, &qmap, ICE_MAX_BASE_QS_PER_VF) {
+ struct ice_q_vector *q_vector;
+
if (!ice_vc_isvalid_q_id(vf, vsi_id, vsi_q_id)) {
aq_ret = ICE_ERR_PARAM;
goto error_param;
}
- vsi->q_vectors[i]->num_ring_tx++;
- vsi->tx_rings[vsi_q_id]->itr_setting =
- map->txitr_idx;
- vsi->tx_rings[vsi_q_id]->q_vector = vsi->q_vectors[i];
+ q_vector = vsi->q_vectors[i];
+ q_vector->num_ring_tx++;
+ q_vector->tx.itr_idx = map->txitr_idx;
+ vsi->tx_rings[vsi_q_id]->q_vector = q_vector;
}
}
--
2.17.1
^ permalink raw reply related
* [net-next 12/15] ice: Fix potential null pointer issues
From: Jeff Kirsher @ 2018-10-03 15:48 UTC (permalink / raw)
To: davem
Cc: Dave Ertman, netdev, nhorman, sassmann, Anirudh Venkataramanan,
Jeff Kirsher
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Dave Ertman <david.m.ertman@intel.com>
Add checks in the filter handling flow to avoid dereferencing
NULL pointers.
Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ice/ice_switch.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index 61a1b6adaef3..33403f39f1b3 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -2010,12 +2010,12 @@ ice_cfg_dflt_vsi(struct ice_hw *hw, u16 vsi_handle, bool set, u8 direction)
enum ice_status
ice_remove_mac(struct ice_hw *hw, struct list_head *m_list)
{
- struct ice_fltr_list_entry *list_itr;
+ struct ice_fltr_list_entry *list_itr, *tmp;
if (!m_list)
return ICE_ERR_PARAM;
- list_for_each_entry(list_itr, m_list, list_entry) {
+ list_for_each_entry_safe(list_itr, tmp, m_list, list_entry) {
enum ice_sw_lkup_type l_type = list_itr->fltr_info.lkup_type;
if (l_type != ICE_SW_LKUP_MAC)
@@ -2037,12 +2037,12 @@ ice_remove_mac(struct ice_hw *hw, struct list_head *m_list)
enum ice_status
ice_remove_vlan(struct ice_hw *hw, struct list_head *v_list)
{
- struct ice_fltr_list_entry *v_list_itr;
+ struct ice_fltr_list_entry *v_list_itr, *tmp;
if (!v_list || !hw)
return ICE_ERR_PARAM;
- list_for_each_entry(v_list_itr, v_list, list_entry) {
+ list_for_each_entry_safe(v_list_itr, tmp, v_list, list_entry) {
enum ice_sw_lkup_type l_type = v_list_itr->fltr_info.lkup_type;
if (l_type != ICE_SW_LKUP_VLAN)
@@ -2142,7 +2142,7 @@ ice_add_to_vsi_fltr_list(struct ice_hw *hw, u16 vsi_handle,
struct ice_fltr_info *fi;
fi = &fm_entry->fltr_info;
- if (!ice_vsi_uses_fltr(fm_entry, vsi_handle))
+ if (!fi || !ice_vsi_uses_fltr(fm_entry, vsi_handle))
continue;
status = ice_add_entry_to_vsi_fltr_list(hw, vsi_handle,
@@ -2259,7 +2259,8 @@ ice_replay_vsi_fltr(struct ice_hw *hw, u16 vsi_handle, u8 recp_id,
goto end;
continue;
}
- if (!test_bit(vsi_handle, itr->vsi_list_info->vsi_map))
+ if (!itr->vsi_list_info ||
+ !test_bit(vsi_handle, itr->vsi_list_info->vsi_map))
continue;
/* Clearing it so that the logic can add it back */
clear_bit(vsi_handle, itr->vsi_list_info->vsi_map);
--
2.17.1
^ permalink raw reply related
* [net-next 11/15] ice: Add code to go from ICE_FWD_TO_VSI_LIST to ICE_FWD_TO_VSI
From: Jeff Kirsher @ 2018-10-03 15:48 UTC (permalink / raw)
To: davem
Cc: Brett Creeley, netdev, nhorman, sassmann, Anirudh Venkataramanan,
Jeff Kirsher
In-Reply-To: <20181003154825.5440-1-jeffrey.t.kirsher@intel.com>
From: Brett Creeley <brett.creeley@intel.com>
When a switch rule is initially created we set the filter action to
ICE_FWD_TO_VSI. The filter action changes to ICE_FWD_TO_VSI_LIST
whenever more than one VSI is subscribed to the same switch rule. When
the switch rule goes from 2 VSIs in the list to 1 VSI we remove and
delete the VSI list rule, but we currently don't update the switch rule
in hardware. This is causing switch rules to be lost, so fix that by
making a call to ice_update_pkt_fwd_rule() with the necessary changes.
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ice/ice_switch.c | 38 ++++++++++++++++-----
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index ff933a348acc..61a1b6adaef3 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -1422,8 +1422,8 @@ ice_rem_update_vsi_list(struct ice_hw *hw, u16 vsi_handle,
fm_list->vsi_count--;
clear_bit(vsi_handle, fm_list->vsi_list_info->vsi_map);
- if ((fm_list->vsi_count == 1 && lkup_type != ICE_SW_LKUP_VLAN) ||
- (fm_list->vsi_count == 0 && lkup_type == ICE_SW_LKUP_VLAN)) {
+ if (fm_list->vsi_count == 1 && lkup_type != ICE_SW_LKUP_VLAN) {
+ struct ice_fltr_info tmp_fltr_info = fm_list->fltr_info;
struct ice_vsi_list_map_info *vsi_list_info =
fm_list->vsi_list_info;
u16 rem_vsi_handle;
@@ -1432,6 +1432,8 @@ ice_rem_update_vsi_list(struct ice_hw *hw, u16 vsi_handle,
ICE_MAX_VSI);
if (!ice_is_vsi_valid(hw, rem_vsi_handle))
return ICE_ERR_OUT_OF_RANGE;
+
+ /* Make sure VSI list is empty before removing it below */
status = ice_update_vsi_list_rule(hw, &rem_vsi_handle, 1,
vsi_list_id, true,
ice_aqc_opc_update_sw_rules,
@@ -1439,16 +1441,34 @@ ice_rem_update_vsi_list(struct ice_hw *hw, u16 vsi_handle,
if (status)
return status;
+ tmp_fltr_info.fltr_act = ICE_FWD_TO_VSI;
+ tmp_fltr_info.fwd_id.hw_vsi_id =
+ ice_get_hw_vsi_num(hw, rem_vsi_handle);
+ tmp_fltr_info.vsi_handle = rem_vsi_handle;
+ status = ice_update_pkt_fwd_rule(hw, &tmp_fltr_info);
+ if (status) {
+ ice_debug(hw, ICE_DBG_SW,
+ "Failed to update pkt fwd rule to FWD_TO_VSI on HW VSI %d, error %d\n",
+ tmp_fltr_info.fwd_id.hw_vsi_id, status);
+ return status;
+ }
+
+ fm_list->fltr_info = tmp_fltr_info;
+ }
+
+ if ((fm_list->vsi_count == 1 && lkup_type != ICE_SW_LKUP_VLAN) ||
+ (fm_list->vsi_count == 0 && lkup_type == ICE_SW_LKUP_VLAN)) {
+ struct ice_vsi_list_map_info *vsi_list_info =
+ fm_list->vsi_list_info;
+
/* Remove the VSI list since it is no longer used */
status = ice_remove_vsi_list_rule(hw, vsi_list_id, lkup_type);
- if (status)
+ if (status) {
+ ice_debug(hw, ICE_DBG_SW,
+ "Failed to remove VSI list %d, error %d\n",
+ vsi_list_id, status);
return status;
-
- /* Change the list entry action from VSI_LIST to VSI */
- fm_list->fltr_info.fltr_act = ICE_FWD_TO_VSI;
- fm_list->fltr_info.fwd_id.hw_vsi_id =
- ice_get_hw_vsi_num(hw, rem_vsi_handle);
- fm_list->fltr_info.vsi_handle = rem_vsi_handle;
+ }
list_del(&vsi_list_info->list_entry);
devm_kfree(ice_hw_to_dev(hw), vsi_list_info);
--
2.17.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