linux/drivers/net/ethernet
Jakub Kicinski 73a0329b05 nfp: add TLV capabilities to the BAR
NFP is entirely programmable, including the PCI data interface.
Using a fixed control BAR layout certainly makes implementations
easier, but require careful considerations when space is allocated.
Once BAR area is allocated to one feature nothing else can use it.
Allocating space statically also requires it to be sized upfront,
which leads to either unnecessary limitation or wastage.

We currently have a 32bit capability word defined which tells drivers
which application FW features are supported.   Most of the bits
are exhausted.  The same bits are also reused for enabling specific
features.  Bulk of capabilities don't have a need for an enable bit,
however, leading to confusion and wastage.

TLVs seems like a better fit for expressing capabilities of applications
running on programmable hardware.

This patch leaves the front of the BAR as is, and declares a TLV
capability start at offset 0x58.  Most of the space up to 0x0d90
is already allocated, but the used space can be wrapped with RESERVED
TLVs.  E.g.:

Address    Type         Length
 0x0058    RESERVED      0xe00  /* Wrap basic structures */
 0x0e5c    FEATURE_A     0x004
 0x0e64    FEATURE_B     0x004
 0x0e6c    RESERVED      0x990  /* Wrap qeueue stats */
 0x1800    FEATURE_C     0x100

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-01-19 15:44:18 -05:00
..
3com 3c59x: fix missing dma_mapping_error check and bad ring refill logic 2018-01-03 13:44:14 -05:00
8390 net: 8390: pcnet_cs: mark expected switch fall-through 2017-11-11 19:10:06 +09:00
adaptec
adi treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
aeroflex License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
agere treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
alacritech Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
allwinner
alteon net: alteon: acenic: clean up indentation issue 2017-12-15 13:28:30 -05:00
altera
amazon Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
amd net: amd-xgbe: Get rid of custom hex_dump_to_buffer() 2017-12-20 13:04:45 -05:00
apm
apple net: ethernet: apple: Convert timers to use timer_setup() 2017-10-18 12:40:25 +01:00
aquantia net: aquantia: Fix internal stats calculation on rx 2018-01-16 14:40:01 -05:00
arc net: arc_emac: restart stalled EMAC 2017-12-19 13:25:52 -05:00
atheros treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
aurora License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
broadcom bnxt_en: export a common switchdev PARENT_ID for all reps of an adapter 2018-01-17 14:48:27 -05:00
brocade
cadence net: macb: change GFP_ATOMIC to GFP_KERNEL 2017-12-05 20:08:03 -05:00
calxeda
cavium net: thunderx: add timestamping support 2018-01-16 14:31:14 -05:00
chelsio cxgb4: IPv6 filter takes 2 tids 2018-01-19 15:09:38 -05:00
cirrus net: cs89x0: add MODULE_LICENSE 2018-01-15 13:27:03 -05:00
cisco enic: add wq clean up budget 2017-12-26 13:10:07 -05:00
cortina net: ethernet: Add a driver for Gemini gigabit ethernet 2018-01-15 14:38:55 -05:00
davicom License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dec Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
dlink net: dl2k: remove redundant re-assignment to np 2017-11-02 15:52:19 +09:00
emulex be2net: use ARRAY_SIZE for array sizing calculation on array cmd_priv_map 2018-01-09 11:40:18 -05:00
ezchip
faraday net: faraday: ftmac100: Use BUG_ON instead of if condition followed by BUG. 2017-10-27 23:53:14 +09:00
freescale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-11 22:13:42 -05:00
fujitsu
hisilicon net: hns3: check for NULL function pointer in hns3_nic_set_features 2018-01-12 10:12:33 -05:00
hp
huawei
i825xx License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-17 00:10:42 -05:00
intel ixgbevf: Fix kernel-doc format warnings 2018-01-12 08:20:47 -08:00
marvell net: mvneta: add module EEPROM reading support 2018-01-03 10:38:54 -05:00
mediatek net: mediatek: remove superfluous pin setup for MT7622 SoC 2017-12-26 12:05:46 -05:00
mellanox mlxsw: spectrum: Make function mlxsw_sp_kvdl_part_occ() static 2018-01-19 14:35:32 -05:00
micrel net: ks8851: Support DT-provided MAC address 2017-12-19 13:52:39 -05:00
microchip License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
moxa
myricom treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
natsemi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
neterion net: vxge: Fix some indentation issues 2017-11-20 11:36:30 +09:00
netronome nfp: add TLV capabilities to the BAR 2018-01-19 15:44:18 -05:00
nuvoton drivers/net: nuvoton: Convert timers to use timer_setup() 2017-10-27 12:09:15 +09:00
nvidia forcedeth: remove unused variable 2018-01-19 14:32:25 -05:00
nxp
oki-semi treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
packetengines drivers/net: packetengines: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
pasemi net: pasemi: Replace mac address parsing 2017-12-20 12:47:46 -05:00
qlogic Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-17 00:10:42 -05:00
qualcomm net: qualcomm: rmnet: Add support for GSO 2018-01-08 13:58:50 -05:00
rdc
realtek r8169: improve runtime pm in general and suspend unused ports 2018-01-09 12:38:56 -05:00
renesas Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-17 00:10:42 -05:00
rocker treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
samsung drivers/net: sxgbe: Convert timers to use timer_setup() 2017-10-27 12:09:16 +09:00
seeq Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
sfc sfc: add bits for 25/50/100G supported/advertised speeds 2018-01-10 16:23:38 -05:00
sgi net/ethernet/sgi: Convert timers to use timer_setup() 2017-10-18 12:40:26 +01:00
silan
sis Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
smsc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
socionext net: netsec: use dma_addr_t for storing dma address 2018-01-14 12:00:23 -05:00
stmicro net: stmmac: dwmac-meson8b: propagate rate changes to the parent clock 2018-01-17 14:41:05 -05:00
sun Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-11-15 11:56:19 -08:00
synopsys net: dwc-xlgmac: Get rid of custom hex_dump_to_buffer() 2017-12-21 15:05:33 -05:00
tehuti
ti net: ethernet: ti: cpdma: correct error handling for chan create 2017-12-13 15:49:53 -05:00
tile Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:56:58 -08:00
toshiba treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
tundra drivers/net: tundra: Convert timers to use timer_setup() 2017-11-01 12:38:45 +09:00
via net: via: via-rhine: use %p to format void * address instead of %x 2017-11-29 09:45:24 -05:00
wiznet
xilinx net: ethernet: xilinx: Mark XILINX_LL_TEMAC broken on 64-bit 2017-11-29 09:43:24 -05:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c
fealnx.c fealnx: Fix building error on MIPS 2017-11-16 22:58:12 +09:00
jme.c
jme.h
Kconfig net: ethernet: Add a driver for Gemini gigabit ethernet 2018-01-15 14:38:55 -05:00
korina.c drivers/net: korina: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
lantiq_etop.c
Makefile net: ethernet: Add a driver for Gemini gigabit ethernet 2018-01-15 14:38:55 -05:00
netx-eth.c