[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <72cc6ef1-4f7f-bf22-5bec-942beb6353ed@solarflare.com>
Date: Mon, 27 Jul 2020 12:53:54 +0100
From: Edward Cree <ecree@...arflare.com>
To: <linux-net-drivers@...arflare.com>, <davem@...emloft.net>
CC: <netdev@...r.kernel.org>
Subject: [PATCH v5 net-next 00/16] sfc: driver for EF100 family NICs, part 1
EF100 is a new NIC architecture under development at Xilinx, based
partly on existing Solarflare technology. As many of the hardware
interfaces resemble EF10, support is implemented within the 'sfc'
driver, which previous patch series "commonised" for this purpose.
In order to maintain bisectability while splitting into patches of a
reasonable size, I had to do a certain amount of back-and-forth with
stubs for things that the common code may try to call, mainly because
we can't do them until we've set up MCDI, but we can't set up MCDI
without probing the event queues, at which point a lot of the common
machinery becomes reachable from event handlers.
Consequently, this first series doesn't get as far as actually sending
and receiving packets. I have a second series ready to follow it
which implements the datapath (and a few other things like ethtool).
Changes from v4:
* Fix build on CONFIG_RETPOLINE=n by using plain prototypes instead
of INDIRECT_CALLABLE_DECLARE.
Changes from v3:
* combine both drivers (sfc_ef100 and sfc) into a single module, to
make non-modular builds work. Patch #4 now adds a few indirections
to support this; the ones in the RX and TX path use indirect-call-
wrappers to minimise the performance impact.
Changes from v2:
* remove MODULE_VERSION.
* call efx_destroy_reset_workqueue() from ef100_exit_module().
* correct uint32_ts to u32s. While I was at it, I fixed a bunch of
other style issues in the function-control-window code.
All in patch #4.
Changes from v1:
* kernel test robot spotted a link error when sfc_ef100 was built
without mdio. It turns out the thing we were trying to link to
was a bogus thing to do on anything but Falcon, so new patch #1
removes it from this driver.
* fix undeclared symbols in patch #4 by shuffling around prototypes
and #includes and adding 'static' where appropriate.
* fix uninitialised variable 'rc2' in patch #7.
Edward Cree (16):
sfc: remove efx_ethtool_nway_reset()
sfc_ef100: add EF100 register definitions
sfc_ef100: register accesses on EF100
sfc: skeleton EF100 PF driver
sfc_ef100: reset-handling stub
sfc_ef100: PHY probe stub
sfc_ef100: don't call efx_reset_down()/up() on EF100
sfc_ef100: implement MCDI transport
sfc_ef100: implement ndo_open/close and EVQ probing
sfc_ef100: process events for MCDI completions
sfc_ef100: read datapath caps, implement check_caps
sfc_ef100: extend ef100_check_caps to cover datapath_caps3
sfc_ef100: actually perform resets
sfc_ef100: probe the PHY and configure the MAC
sfc_ef100: read device MAC address at probe time
sfc_ef100: implement ndo_get_phys_port_{id,name}
drivers/net/ethernet/sfc/Kconfig | 5 +-
drivers/net/ethernet/sfc/Makefile | 4 +-
drivers/net/ethernet/sfc/ef10.c | 7 +
drivers/net/ethernet/sfc/ef100.c | 541 +++++++++++++++++
drivers/net/ethernet/sfc/ef100.h | 12 +
drivers/net/ethernet/sfc/ef100_ethtool.c | 24 +
drivers/net/ethernet/sfc/ef100_ethtool.h | 12 +
drivers/net/ethernet/sfc/ef100_netdev.c | 274 +++++++++
drivers/net/ethernet/sfc/ef100_netdev.h | 17 +
drivers/net/ethernet/sfc/ef100_nic.c | 619 +++++++++++++++++++
drivers/net/ethernet/sfc/ef100_nic.h | 32 +
drivers/net/ethernet/sfc/ef100_regs.h | 693 ++++++++++++++++++++++
drivers/net/ethernet/sfc/ef100_rx.c | 31 +
drivers/net/ethernet/sfc/ef100_rx.h | 20 +
drivers/net/ethernet/sfc/ef100_tx.c | 51 ++
drivers/net/ethernet/sfc/ef100_tx.h | 22 +
drivers/net/ethernet/sfc/efx.c | 8 +
drivers/net/ethernet/sfc/efx.h | 16 +-
drivers/net/ethernet/sfc/efx_common.c | 11 +-
drivers/net/ethernet/sfc/ethtool.c | 3 -
drivers/net/ethernet/sfc/ethtool_common.c | 10 +-
drivers/net/ethernet/sfc/ethtool_common.h | 3 -
drivers/net/ethernet/sfc/io.h | 16 +-
drivers/net/ethernet/sfc/mcdi.c | 2 +-
drivers/net/ethernet/sfc/mcdi.h | 4 +-
drivers/net/ethernet/sfc/net_driver.h | 18 +
drivers/net/ethernet/sfc/nic_common.h | 6 +
drivers/net/ethernet/sfc/siena.c | 3 +
drivers/net/ethernet/sfc/tx.c | 4 +-
drivers/net/ethernet/sfc/tx_common.h | 2 +
30 files changed, 2439 insertions(+), 31 deletions(-)
create mode 100644 drivers/net/ethernet/sfc/ef100.c
create mode 100644 drivers/net/ethernet/sfc/ef100.h
create mode 100644 drivers/net/ethernet/sfc/ef100_ethtool.c
create mode 100644 drivers/net/ethernet/sfc/ef100_ethtool.h
create mode 100644 drivers/net/ethernet/sfc/ef100_netdev.c
create mode 100644 drivers/net/ethernet/sfc/ef100_netdev.h
create mode 100644 drivers/net/ethernet/sfc/ef100_nic.c
create mode 100644 drivers/net/ethernet/sfc/ef100_nic.h
create mode 100644 drivers/net/ethernet/sfc/ef100_regs.h
create mode 100644 drivers/net/ethernet/sfc/ef100_rx.c
create mode 100644 drivers/net/ethernet/sfc/ef100_rx.h
create mode 100644 drivers/net/ethernet/sfc/ef100_tx.c
create mode 100644 drivers/net/ethernet/sfc/ef100_tx.h
Powered by blists - more mailing lists