Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7040765a authored by Vadim Solomin's avatar Vadim Solomin Committed by Jinesh K. Jayakumar
Browse files

atlantic-forwarding driver v1.0.18



Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>
Signed-off-by: default avatarDmitry Bogdanov <dmitry.bogdanov@aquantia.com>

commit 9904c72c98e83dc8e74140a4b82b46d842211e6e
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Mon Apr 1 18:49:55 2019 +0300

    Version 1.0.18

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

commit 16bb5ea308ae84d244a21d56b0c334d554acfdda
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Wed Apr 3 20:39:22 2019 +0300

    Update changelog

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

commit bbb9f6f4c6e20a67277645fd4c5b7906ce27a490
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Fri Mar 29 22:35:09 2019 +0300

    Add a pointer for forwarding engine's private data. (AQ043)

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

commit 0d47419ecda17c62bcf935f91045ddaf785e7838
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Mon Apr 1 17:32:50 2019 +0300

    Fix 32-bit warnings (AQ036)

    Fixes ATLDRV-768

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

commit a338a30c8529a6c4a2c72316a43e1e3bfa5f7294
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Fri Mar 29 21:07:06 2019 +0300

    Update release notes up to v1.0.17

    Closes ATLDRV-605

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

commit bdcc4977780eed666afd276885ea11a693067642
Author: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Date:   Fri Mar 29 22:05:01 2019 +0300

    ATLDRV-605 Make revision history file

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>
    Signed-off-by: default avatarDmitry Bogdanov <dmitry.bogdanov@aquantia.com>

commit 2f6f0eaa69ebd1636b2b2c9a2eb7b865b0196508
Author: Vadim Solomin <vadim.solomin@aquantia.com>
Date:   Thu Mar 7 14:27:06 2019 +0300

    Fix double free in the new fwd ring memory allocation code.

    Signed-off-by: default avatarVadim Solomin <vadim.solomin@aquantia.com>

CRs-Fixed: 2435505
Change-Id: I33d15011dc3e8acc9521c9a7ad33510fbab86ba8
Git-commit: 834fb1c3851d5316e94a908767e81de341ca3f3f
Git-repo: https://github.com/aquantia/linux-4.14-atlantic-forwarding


[jineshk@codeaurora.org: use "Qualcomm Technologies, Inc." string]
Signed-off-by: default avatarJinesh K. Jayakumar <jineshk@codeaurora.org>
parent 9216ccec
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@
#include <linux/netdevice.h>
#include <linux/netdevice.h>
#include <linux/moduleparam.h>
#include <linux/moduleparam.h>


#define ATL_VERSION "1.0.17"
#define ATL_VERSION "1.0.18"


struct atl_nic;
struct atl_nic;


@@ -210,6 +210,7 @@ struct atl_fwd {
	unsigned long ring_map[ATL_FWDIR_NUM];
	unsigned long ring_map[ATL_FWDIR_NUM];
	struct atl_fwd_ring *rings[ATL_FWDIR_NUM][ATL_NUM_FWD_RINGS];
	struct atl_fwd_ring *rings[ATL_FWDIR_NUM][ATL_NUM_FWD_RINGS];
	unsigned long msi_map;
	unsigned long msi_map;
	void *private;
};
};


struct atl_nic {
struct atl_nic {
+2 −3
Original line number Original line Diff line number Diff line
@@ -251,7 +251,7 @@ static void atl_fwd_init_ring(struct atl_fwd_ring *fwd_ring)
	int lxo_bit = !!(flags & ATL_FWR_LXO);
	int lxo_bit = !!(flags & ATL_FWR_LXO);


	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->daddr);
	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->daddr);
	atl_write(hw, ATL_RING_BASE_MSW(ring), (u64)ring->daddr >> 32);
	atl_write(hw, ATL_RING_BASE_MSW(ring), upper_32_bits(ring->daddr));


	if (dir_tx) {
	if (dir_tx) {
		atl_write(hw, ATL_TX_RING_THRESH(ring),
		atl_write(hw, ATL_TX_RING_THRESH(ring),
@@ -308,7 +308,6 @@ void atl_fwd_release_ring(struct atl_fwd_ring *ring)
			hwring->size * sizeof(*hwring->descs), hwring->daddr);
			hwring->size * sizeof(*hwring->descs), hwring->daddr);
	else
	else
		atl_free_descs(nic, &ring->hw);
		atl_free_descs(nic, &ring->hw);
	atl_free_descs(nic, &ring->hw);
	kfree(ring);
	kfree(ring);
}
}
EXPORT_SYMBOL(atl_fwd_release_ring);
EXPORT_SYMBOL(atl_fwd_release_ring);
@@ -620,7 +619,7 @@ int atl_fwd_request_event(struct atl_fwd_event *evt)
		atl_write(hw, ATL_TX_RING_HEAD_WB_LSW(hwring),
		atl_write(hw, ATL_TX_RING_HEAD_WB_LSW(hwring),
			evt->tx_head_wrb);
			evt->tx_head_wrb);
		atl_write(hw, ATL_TX_RING_HEAD_WB_MSW(hwring),
		atl_write(hw, ATL_TX_RING_HEAD_WB_MSW(hwring),
			(u64)evt->tx_head_wrb >> 32);
			upper_32_bits(evt->tx_head_wrb));
		return 0;
		return 0;
	}
	}


+2 −2
Original line number Original line Diff line number Diff line
@@ -1044,11 +1044,11 @@ int atl_write_mcp_mem(struct atl_hw *hw, uint32_t offt, void *host_addr,
		}
		}


		if (stat == 8) {
		if (stat == 8) {
			atl_dev_err("FW mbox timeout offt %x, remaining %lx\n",
			atl_dev_err("FW mbox timeout offt %x, remaining %zx\n",
				offt, size);
				offt, size);
			return -ETIME;
			return -ETIME;
		} else if (stat != 4) {
		} else if (stat != 4) {
			atl_dev_err("FW mbox error status %x, offt %x, remaining %lx\n",
			atl_dev_err("FW mbox error status %x, offt %x, remaining %zx\n",
				stat, offt, size);
				stat, offt, size);
			return -EIO;
			return -EIO;
		}
		}
+2 −2
Original line number Original line Diff line number Diff line
@@ -1504,7 +1504,7 @@ static void atl_start_rx_ring(struct atl_desc_ring *ring)
	unsigned int rx_ctl;
	unsigned int rx_ctl;


	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->hw.daddr);
	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->hw.daddr);
	atl_write(hw, ATL_RING_BASE_MSW(ring), (u64)ring->hw.daddr >> 32);
	atl_write(hw, ATL_RING_BASE_MSW(ring), upper_32_bits(ring->hw.daddr));


	atl_write(hw, ATL_RX_RING_TAIL(ring), ring->tail);
	atl_write(hw, ATL_RX_RING_TAIL(ring), ring->tail);
	atl_write(hw, ATL_RX_RING_BUF_SIZE(ring),
	atl_write(hw, ATL_RX_RING_BUF_SIZE(ring),
@@ -1527,7 +1527,7 @@ static void atl_start_tx_ring(struct atl_desc_ring *ring)
	struct atl_hw *hw = &nic->hw;
	struct atl_hw *hw = &nic->hw;


	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->hw.daddr);
	atl_write(hw, ATL_RING_BASE_LSW(ring), ring->hw.daddr);
	atl_write(hw, ATL_RING_BASE_MSW(ring), (u64)ring->hw.daddr >> 32);
	atl_write(hw, ATL_RING_BASE_MSW(ring), upper_32_bits(ring->hw.daddr));


	/* Enable TSO on all active Tx rings */
	/* Enable TSO on all active Tx rings */
	atl_write(hw, ATL_TX_LSO_CTRL, BIT(nic->nvecs) - 1);
	atl_write(hw, ATL_TX_LSO_CTRL, BIT(nic->nvecs) - 1);
+158 −0
Original line number Original line Diff line number Diff line
Version 1.0.18
==============
Fix double free in the new fwd ring memory allocation code.
Fix 32-bit warnings (AQ036)
Add a pointer for forwarding engine's private data. (AQ043)

Version 1.0.17
==============
Add compatibility to kernel 4.1
create empty atl_hwmon_init for old kernels
Fix legacy interrupt handling
Fix MSM register writes
Free link interrupt before reconfiguring the rings
Implement FW settings table access
Use new FW interface to control ethernet padding stripping
Disable LRO by default until all issues are resolved.
Clamp max number of rings as reported by ethtool to num_present_cpus() (AQ037)
Use __GFP_NOWARN for Rx buffers only in NAPI poll (AQ037)
Put PHY into low-power state on ifdown or disabling link
Improve error reporting for forwarding-engine ring creation (AQ041)
Allow custom memory allocators for atl_fwd_request_ring() (AQ041)

Version 1.0.16
==============
Introduce the config options for forwarding API (AQ033)
Implement catchall ethtool filter (AQ034)
Fix MSI-X vectors being disabled on cpu unplug (AQ032)
Fix Kconfig changes for AQ033

Version 1.0.15
==============
Reset statistics via private flag
Implement interrupt moderation for offload engine's rings
Introduce a FW mutex, handle link interrupts in a workqueue
Implement PHY temperature sensor
Report ring's and buffer's physical addresses on fwd ring request
Implement ethtool control for stripping Rx ethernet frame's padding

Version 1.0.14
==============
Remove old IPA implementation (replaced by atl_fwd.[ch])
Fix forwarding engine interface
Change the driver name to reflect the new module name
Implement Linux PM support
Implement WoL support

Version 1.0.13
==============
Integrate Linux VLAN filter hw acceleration with ethtool filters
Rename the module to atlantic-fwd

Version 1.0.12
==============
Expose PHY LPI state via ethtool private flags

Version 1.0.11
==============
Minor IPA interface fixes
Turn on/off Rx XOFF flow control when needed
Fix advertizing EEE link modes and show LPI timer
Add some HW counters from RMON MIB
Add Host and Lost counters to statistics
Add more Felicity PCI IDs
Add ethtool private flags tracking LPI state

Version 1.0.10
==============
Add module parameter to force align IP headers

Version 1.0.9
==============
Add AQC100 / -111 / -112 IDs
Fix adding vlan with vlan id > 64
Fix ethtool IPv4 filter reporting (AQ022)
Implement ethtool interface for ethertype filters.
Restore backward compat for Linux 4.4

Version 1.0.8
==============
Fix checkpatch.pl and smatch  warnings and errors

Version 1.0.7
==============
Make Tx ring free space watermarks configurable
Misc filter fixes
Implement ethtool interface for VLAN filters
Implement pause statistics

Version 1.0.6
==============
Implement compat fixes for kernels without IPv6 ethtool NFC API

Version 1.0.5
==============
Fix ifdown / ifup link state race
Fix autoneg re-enable on pre-ethtool_ksettings kernels
Implement n-tuple Rx filters
Misc clean-ups

Version 1.0.4
==============
Switch to using spin lock for updating global stats
Fix out-of-bounds dma_sync_single_range() for packet header
Fix an Rx error corner case
Refactor delayed dma-unmapping of headers for RSC
Implement HW loopbacks
Implement interrupt coalescing ethtool method

Version 1.0.3
==============
Fix crash in mutex_lock on init
Add compat cast for ->ndo_get_stats64 for old kernels
Get rid of struct atl_common_stats
Refactor ring structure to remove the need for -fplan9-extensions
Drop -fplan9-extensions

Version 1.0.2
==============
Implement setting the MAC address
Rework VLAN filters
Implement per-ring counters
Fix Tx queue start / stop handling
Implement basic netdev stats
Implement ethtool stats

Version 1.0.1
==============
Update the README
Refactor the ring structure
Fix LRO timers timebase
Initial Qualcomm Technologies, Inc. IPA support
Refactor Link management
Implement Flow Control
Implement EEE
Set default link on init
Implement dynamic datapath reconfiguration
Implement ethtool -> [gs]et_ringparam, set_channels

Version 1.0.0
==============
Add dma-mapping tracepoints
Implement VLAN offloads
Implement promiscuous mode and UC / MC filters
Implement HW header splitting, fix Rx buffer mgmt for RSC
Fix multicast filter support
Implement new reset sequence
Implement multi-fw switch
Implement new link management
Introduce link interrupt
Implement ethtool set_settings and _ksettings variants
Implement multiring support
Implement RSS support
Enable jumbo frames
Fix ethtool RSS methods
Add RDM / TDM descriptor thresholds
Switch to INTR block based interrupt throttling
Enable LRO
Implement linear skb mode