- 02 5月, 2020 4 次提交
-
-
由 Mark Starovoytov 提交于
This patch fixes potential crash in case if hw_get_regs is NULL. Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
hw_get_fw_version() never fails, so this patch simplifies its usage by utilizing return value instead of output argument. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Mark Starovoytov 提交于
A2 will have a different implementation of these 2 APIs, so this patch moves them to hw_ops in preparation for A2. Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Co-developed-by: NDmitry Bezrukov <dbezrukov@marvell.com> Signed-off-by: NDmitry Bezrukov <dbezrukov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
This patch adds defines for 10M and EEE 100M link modes, which are supported by A2. 10M support is added in this patch series. EEE is out of scope, but will be added in a follow-up series. Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 27 3月, 2020 2 次提交
-
-
由 Dmitry Bogdanov 提交于
This patch adds support for MACSec statistics on Atlantic network cards. Signed-off-by: NDmitry Bogdanov <dbogdanov@marvell.com> Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dmitry Bogdanov 提交于
This patch adds basic functionality for MACSec offloading for Atlantic NICs. MACSec offloading functionality is enabled if network card has appropriate FW that has MACSec offloading enabled in config. Actual functionality (ingress, egress, etc) will be added in follow-up patches. Signed-off-by: NDmitry Bogdanov <dbogdanov@marvell.com> Signed-off-by: NMark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 17 2月, 2020 2 次提交
-
-
由 Pavel Belous 提交于
Code inspection found that in case of mapping error we do return current 'ret' value. But beside error, it is used to count number of descriptors allocated for the packet. In that case map_skb function could return '1'. Changing it to return zero (number of mapped descriptors for skb) Fixes: 018423e9 ("net: ethernet: aquantia: Add ring support code") Signed-off-by: NPavel Belous <pbelous@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDmitry Bogdanov <dbogdanov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Pavel Belous 提交于
skb->len is used to calculate statistics after xmit invocation. Under a stress load it may happen that skb will be xmited, rx interrupt will come and skb will be freed, all before xmit function is even returned. Eventually, skb->len will access unallocated area. Moving stats calculation into tx_clean routine. Fixes: 018423e9 ("net: ethernet: aquantia: Add ring support code") Reported-by: NChristophe Vu-Brugier <cvubrugier@fastmail.fm> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NPavel Belous <pbelous@marvell.com> Signed-off-by: NDmitry Bogdanov <dbogdanov@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 07 1月, 2020 1 次提交
-
-
由 Igor Russkikh 提交于
Initial loopback configuration should be called earlier, before starting traffic on HW blocks. Otherwise depending on race conditions it could be kept disabled. Fixes: ea4b4d7f ("net: atlantic: loopback tests via private flags") Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 08 11月, 2019 7 次提交
-
-
由 Igor Russkikh 提交于
atlantic hardware does support UDP hardware segmentation offload. This allows user to specify one large contiguous buffer with data which then will be split automagically into multiple UDP packets of specified size. Bulk sending of large UDP streams lowers CPU usage and increases bandwidth. We did estimations both with udpgso_bench_tx test tool and with modified iperf3 measurement tool (4 streams, multithread, 200b packet size) over AQC<->AQC 10G link. Flow control is disabled to prevent RX side impact on measurements. No UDP GSO: iperf3 -c 10.0.1.2 -u -b0 -l 200 -P4 --multithread UDP GSO: iperf3 -c 10.0.1.2 -u -b0 -l 12600 --udp-lso 200 -P4 --multithread Mode CPU iperf speed Line speed Packets per second ------------------------------------------------------------- NO UDP GSO 350% 3.07 Gbps 3.8 Gbps 1,919,419 SW UDP GSO 200% 5.55 Gbps 6.4 Gbps 3,286,144 HW UDP GSO 90% 6.80 Gbps 8.4 Gbps 4,273,117 Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
We now differentiate requested and negotiated flow control modes. Therefore `ethtool -A` now operates on local requested FC values, and regular link settings shows the negotiated FC settings. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
Thats a pure checkpatck walkthrough the code with no functional changes. Reverse christmas tree, spacing, etc. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Here we add a number of ethtool private flags to allow enabling various loopbacks on HW. Thats useful for verification and bringup works. Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
We add ethtool msglevel configuration and change some printouts to use netdev_info set of functions. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
We now implement .driver.pm callbacks, these allows driver to work correctly in hibernate usecases, especially when used in conjunction with WOL feature. Before that driver only reacted to legacy .suspend/.resume callbacks, that was a limitation in some cases. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
Wake on PHY allows to configure device to wakeup host as soon as PHY link status is changed to active. Signed-off-by: NNikita Danilov <ndanilov@marvell.com> Signed-off-by: NIgor Russkikh <irusskikh@marvell.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 25 10月, 2019 7 次提交
-
-
由 Dmitry Bezrukov 提交于
Depending on FW configuration we can manage from 0 to 3 PINs for periodic output and from 0 to 1 ext ts PIN for getting TS for external event. Ext TS PIN functionality is implemented via periodic timestamps polling directly from PHY, because right now there is now way to receive the PIN trigger interrupt from phy. The polling interval is 15 milliseconds. Co-developed-by: NEgor Pomozov <epomozov@marvell.com> Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NPavel Belous <pavel.belous@aquantia.com> Signed-off-by: NPavel Belous <pavel.belous@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dmitry Bezrukov 提交于
GPIO PIN control and access is done by direct phy manipulation. Here we add an aq_phy module which is able to access phy registers via MDIO access mailbox. Access is controlled via HW semaphore. Co-developed-by: NNikita Danilov <nikita.danilov@aquantia.com> Signed-off-by: NNikita Danilov <nikita.danilov@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Reviewed-by: NAndrew Lunn <andrew@lunn.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dmitry Bezrukov 提交于
We implement HW filter reservation for PTP traffic. Special location in filters table is marked as reserved, because incoming ptp traffic should be directed only to PTP designated queue. This way HW will do PTP timestamping and proper processing. Co-developed-by: NEgor Pomozov <epomozov@marvell.com> Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Egor Pomozov 提交于
Here we do alloc/free IRQs for PTP rings. We also implement processing of PTP packets on TX and RX sides. Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Co-developed-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Egor Pomozov 提交于
Add implementations of PTP rings alloc/free. PTP desing on this device uses two separate rings on a separate traffic class for traffic rx/tx. Third ring (hwts) is not a traffic ring, but is used only to receive timestamps of the transmitted packets. Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Co-developed-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Egor Pomozov 提交于
Basic HW functions implemented for adjusting frequency, adjusting time, getting and setting time. With these callbacks we now do register ptp clock in the system. Firmware interface parts are defined for PTP requests and interactions. Enable/disable PTP counters in HW on clock register/unregister. Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Co-developed-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Egor Pomozov 提交于
Here we add basic function for PTP clock register/unregister. We also declare FW/HW capability bits used to control PTP feature on device. PTP device is created if network card has appropriate FW that has PTP enabled in config. HW supports timestamping for PTPv2 802.AS1 and PTPv2 IPv4 UDP packets. It also supports basic PTP callbacks for getting/setting time, adjusting frequency and time as well. Signed-off-by: NEgor Pomozov <epomozov@marvell.com> Co-developed-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Signed-off-by: NSergey Samoilenko <sergey.samoilenko@aquantia.com> Co-developed-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NDmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 20 10月, 2019 1 次提交
-
-
由 Chenwandun 提交于
add an error handling in aq_nic_set_multicast_list, it may not work when hw_multicast_list_set error; and at the same time it will remove gcc Wunused-but-set-variable warning. Signed-off-by: NChenwandun <chenwandun@huawei.com> Reviewed-by: NIgor Russkikh <igor.russkikh@aquantia.com> Reviewed-by: NAndrew Lunn <andrew@lunn.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 15 10月, 2019 1 次提交
-
-
由 Dmitry Bogdanov 提交于
macvlan and multicast handling is now mixed up. The explicit issue is that macvlan interface gets broken (no traffic) after clearing MULTICAST flag on the real interface. We now do separate logic and consider both ALLMULTI and MULTICAST flags on the device. Fixes: 11ba961c ("net: aquantia: Fix IFF_ALLMULTI flag functionality") Signed-off-by: NDmitry Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 01 9月, 2019 1 次提交
-
-
由 Igor Russkikh 提交于
Declaring threaded irq handler should also indicate the irq is oneshot. It is oneshot indeed, because HW implements irq automasking on trigger. Not declaring this causes some kernel configurations to fail on interface up, because request_threaded_irq returned an err code. The issue was originally hidden on normal x86_64 configuration with latest kernel, because depending on interrupt controller, irq driver added ONESHOT flag on its own. Issue was observed on older kernels (4.14) where no such logic exists. Fixes: 4c83f170 ("net: aquantia: link status irq handling") Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Reported-by: NMichael Symolkin <Michael.Symolkin@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 28 6月, 2019 2 次提交
-
-
由 Igor Russkikh 提交于
Update datapath by adding logic related to hardware assisted vlan strip/insert behaviour. Tested-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Updating features and vlan_features with vlan HW offload. Added vlan_tag fields to rx/tx ring_buff to track vlan related data. Tested-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 27 6月, 2019 1 次提交
-
-
由 Dmitry Bogdanov 提交于
In configuration of vlan over bridge over aquantia device it was found that vlan tagged traffic is dropped on chip. The reason is that bridge device enables promisc mode, but in atlantic chip vlan filters will still apply. So we have to corellate promisc settings with vlan configuration. The solution is to track in a separate state variable the need of vlan forced promisc. And also consider generic promisc configuration when doing vlan filter config. Fixes: 7975d2af ("net: aquantia: add support of rx-vlan-filter offload") Signed-off-by: NDmitry Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 05 6月, 2019 1 次提交
-
-
由 Thomas Gleixner 提交于
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms and conditions of the gnu general public license version 2 as published by the free software foundation extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 101 file(s). Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Reviewed-by: NAllison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190531190113.822954939@linutronix.deSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 01 5月, 2019 7 次提交
-
-
由 Dmitry Bogdanov 提交于
aq_nic_update_ndev_stats pushes statistics to ndev->stats from system interface. This is not always good because it counts packets/bytes before any of rx filters (including mac filter). Its better to report the packet/bytes statistics from DMA counters which gives actual values of data transferred over pci. System level stats is still available via ethtool. Signed-off-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDmitry Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dmitry Bogdanov 提交于
This improves ethtool -S usage, where stats are now actual on each request. Before that stats only were updated at service timer period. Tested-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDmitry Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Service timer callback fetches statistics from FW and that may cause a long delay in error cases. We also now need to use fw mutex to prevent concurrent access to FW, thus - extract that logic from timer callback into the job in the separate work queue. Signed-off-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Nikita Danilov 提交于
Some of FW operations could be invoked simultaneously, from f.e. ethtool context and from service service activity work. Here we introduce a fw mutex to secure and serialize access to FW logic. Signed-off-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Original code detected link only after 1 sec is passed after up. Here we replace this with direct service callback which updates link status immediately Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Here we define and request an extra interrupt line, assign it on link isr handler and restructure abit aq_pci code to better support that. We also remove logic for using different timer intervals depending on link state, since thats now useless. Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Igor Russkikh 提交于
Define link interrupt handler Signed-off-by: NNikita Danilov <ndanilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 24 3月, 2019 1 次提交
-
-
由 Igor Russkikh 提交于
We introduce internal aq_rxpage wrapper over regular page where extra field is tracked: rxpage offset inside of allocated page. This offset allows to reuse one page for multiple packets. When needed (for example with large frames processing), allocated pageorder could be customized. This gives even larger page reuse efficiency. page_ref_count is used to track page users. If during rx refill underlying page has users, we increase pg_off by rx frame size thus the top half of the page is reused. Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 02 3月, 2019 1 次提交
-
-
由 Nikita Danilov 提交于
drivers/net/ethernet/aquantia/atlantic/aq_nic.c: 991:1: warning: no newline at end of file Signed-off-by: NNikita Danilov <nikita.danilov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 08 12月, 2018 1 次提交
-
-
由 Dmitry Bogdanov 提交于
Now RSS indirection table is initialized before setting up the number of hw queues, consequently the table may be filled by non existing queues. This patch moves the initialization when the number of hw queues is known. Signed-off-by: NDmitry Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: NIgor Russkikh <igor.russkikh@aquantia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-