diff --git a/drivers/net/ethernet/3snic/Kconfig b/drivers/net/ethernet/3snic/Kconfig index af01d9af45a9f4fd89f38f6ac3c93bf7dd7a0257..f0445ecb60ba0dbc760e38a3cf740971ac10f15e 100644 --- a/drivers/net/ethernet/3snic/Kconfig +++ b/drivers/net/ethernet/3snic/Kconfig @@ -6,6 +6,7 @@ config NET_VENDOR_3SNIC bool "3SNIC smart NIC devices" default y + select NET_DEVLINK depends on PCI depends on VLAN_8021Q || VLAN_8021Q_MODULE depends on PCI_ATS diff --git a/drivers/net/ethernet/3snic/sssnic/Kconfig b/drivers/net/ethernet/3snic/sssnic/Kconfig index e8e52ac27c06e2e848ed6418ab9e8fab24e8ec37..8f3227e03b8c20e41c52376853bf0a97fe48701a 100644 --- a/drivers/net/ethernet/3snic/sssnic/Kconfig +++ b/drivers/net/ethernet/3snic/sssnic/Kconfig @@ -20,10 +20,3 @@ config SSSNIC To compile this driver as a module, choose M here. The module will be called sssnic. - -config SSSNIC_HW - tristate - depends on PCI - depends on VLAN_8021Q || VLAN_8021Q_MODULE - depends on PCI_ATS - default n diff --git a/drivers/net/ethernet/3snic/sssnic/Makefile b/drivers/net/ethernet/3snic/sssnic/Makefile index d9a179959e4985e1e0d763a0be00296608c3a25b..9aad44b9c46f51a73ab8290b57b3f19abc870cab 100644 --- a/drivers/net/ethernet/3snic/sssnic/Makefile +++ b/drivers/net/ethernet/3snic/sssnic/Makefile @@ -3,5 +3,4 @@ # Makefile for the 3SNIC network device drivers. # -obj-$(CONFIG_SSSNIC_HW) += hw/ obj-$(CONFIG_SSSNIC) += nic/ diff --git a/drivers/net/ethernet/3snic/sssnic/hw/Makefile b/drivers/net/ethernet/3snic/sssnic/hw/Makefile deleted file mode 100644 index ce5a89bfe39a5435142e91f824d2db10b6bba096..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/hw/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2023 3SNIC -# - -EXPORT_SYMBOL := true - -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include/hw -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include/kernel -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw/include -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/kcompat -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw/tool - -#ccflags-y += -Werror -ccflags-y += -Wno-implicit-fallthrough - -include $(srctree)/drivers/net/ethernet/3snic/sssnic/kcompat/mk/kcompat.mk - -obj-$(CONFIG_SSSNIC_HW) += sssdk.o -sssdk-y := sss_hw_main.o \ - sss_pci_probe.o \ - sss_pci_remove.o \ - sss_pci_shutdown.o \ - sss_pci_error.o \ - sss_pci_sriov.o \ - sss_pci_global.o \ - sss_hwdev_api.o \ - sss_hwdev_cap.o \ - sss_hwdev_export.o \ - sss_hwdev_link.o \ - sss_hwdev_init.o \ - sss_hwdev_mgmt_info.o \ - sss_hwdev_mgmt_channel.o \ - sss_hwdev_io_flush.o \ - sss_hwif_ctrlq.o \ - sss_hwif_ctrlq_init.o \ - sss_hwif_ctrlq_export.o \ - sss_hwif_mbx.o \ - sss_hwif_mbx_init.o \ - sss_hwif_mbx_export.o \ - sss_hwif_adm.o \ - sss_hwif_adm_init.o \ - sss_hwif_init.o \ - sss_hwif_api.o \ - sss_hwif_export.o \ - sss_hwif_eq.o \ - sss_hwif_mgmt_init.o \ - sss_hwif_irq.o \ - sss_hwif_aeq.o \ - sss_common.o \ - sss_wq.o \ - sss_hwif_ceq.o \ - sss_adapter_mgmt.o \ - ../kcompat/sss_kcompat.o \ - ./tool/sss_tool_chip.o \ - ./tool/sss_tool_main.o \ - ./tool/sss_tool_sdk.o \ - ./tool/sss_tool_sm.o diff --git a/drivers/net/ethernet/3snic/sssnic/hw/include/sss_adapter.h b/drivers/net/ethernet/3snic/sssnic/hw/include/sss_adapter.h index afc5ff37f4a3cfd887d3a2f101683d5e186bb7ff..43b612e6ffa104ae65df9344bb86fea1e636bfb9 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/include/sss_adapter.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/include/sss_adapter.h @@ -22,7 +22,8 @@ struct sss_card_node { struct list_head func_list; char chip_name[IFNAMSIZ]; u8 bus_id; - u8 resvd[7]; + s32 domain; + u8 resvd[3]; u16 func_num; atomic_t channel_timeout_cnt; void *func_handle_array[SSS_MAX_FUNC]; diff --git a/drivers/net/ethernet/3snic/sssnic/hw/include/sss_hwdev.h b/drivers/net/ethernet/3snic/sssnic/hw/include/sss_hwdev.h index 91353309963194af5c721de6612c9db9c7645d8b..a6e37e23ce609d2e79a10f4fc7d3279d4a209931 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/include/sss_hwdev.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/include/sss_hwdev.h @@ -270,4 +270,7 @@ enum { SSS_CFG_BUSY = 1 }; +int sss_init_pci(void); +void sss_exit_pci(void); + #endif diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.c index b9e202e4ee089383385b86a704e45cb638fe83a6..71792dfa2fc7dc2863ef1fe84a71062af0018de8 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.c @@ -191,14 +191,16 @@ struct sss_pci_adapter *sss_get_adapter_by_pcidev(struct pci_dev *pdev) } static bool sss_chip_node_exist(struct sss_pci_adapter *adapter, - unsigned char bus_id) + unsigned char bus_id, + int domain) { struct sss_card_node *chip_node = NULL; sss_chip_node_lock(); if (bus_id != 0) { list_for_each_entry(chip_node, &g_chip_list, node) { - if (chip_node->bus_id == bus_id) { + if (chip_node->bus_id == bus_id + && chip_node->domain == domain) { adapter->chip_node = chip_node; sss_chip_node_unlock(); return true; @@ -219,13 +221,16 @@ static bool sss_chip_node_exist(struct sss_pci_adapter *adapter, return false; } -static unsigned char sss_get_pci_bus_id(struct sss_pci_adapter *adapter) +static unsigned char sss_get_pci_bus_id(struct sss_pci_adapter *adapter, int *domain) { struct pci_dev *pf_pdev = NULL; unsigned char bus_id = 0; + *domain = 0; - if (!pci_is_root_bus(adapter->pcidev->bus)) + if (!pci_is_root_bus(adapter->pcidev->bus)) { bus_id = adapter->pcidev->bus->number; + *domain = pci_domain_nr(adapter->pcidev->bus); + } if (bus_id == 0) return bus_id; @@ -233,6 +238,7 @@ static unsigned char sss_get_pci_bus_id(struct sss_pci_adapter *adapter) if (adapter->pcidev->is_virtfn) { pf_pdev = adapter->pcidev->physfn; bus_id = pf_pdev->bus->number; + *domain = pci_domain_nr(adapter->pcidev->bus); } return bus_id; @@ -265,10 +271,11 @@ int sss_alloc_chip_node(struct sss_pci_adapter *adapter) struct sss_card_node *chip_node = NULL; unsigned char card_id; unsigned char bus_id; + int domain = 0; - bus_id = sss_get_pci_bus_id(adapter); + bus_id = sss_get_pci_bus_id(adapter, &domain); - if (sss_chip_node_exist(adapter, bus_id)) + if (sss_chip_node_exist(adapter, bus_id, domain)) return 0; chip_node = kzalloc(sizeof(*chip_node), GFP_KERNEL); @@ -276,6 +283,8 @@ int sss_alloc_chip_node(struct sss_pci_adapter *adapter) return -ENOMEM; chip_node->bus_id = bus_id; + chip_node->domain = domain; + printk("domain %d, bus %x\n", domain, bus_id); if (!sss_alloc_card_id(&card_id)) { kfree(chip_node); @@ -721,4 +730,3 @@ struct sss_hal_dev *sss_get_lld_dev_by_chip_and_port(const char *chip_name, u8 p return NULL; } - diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.h b/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.h index 44805eccff4fdff898c63322bef049a14ea0fc30..65f5101783318384b794c5dd6e94c4dc66534f10 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_adapter_mgmt.h @@ -12,7 +12,7 @@ #define SSS_DRV_VERSION SSS_VERSION_STR -#define SSS_DRV_NAME "sssdk" +#define SSS_DRV_NAME "sssnic" #define SSS_CHIP_NAME "sssnic" #define SSS_VF_PCI_CFG_REG_BAR 0 diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hw_main.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_hw_main.c index 8c30c6c52fe5b2924229aa61876f09a8db68d341..b38e8cae32e17556bffdea9d311778cd7214c3b0 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hw_main.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hw_main.c @@ -26,14 +26,10 @@ #include "sss_pci_remove.h" #include "sss_pci_shutdown.h" #include "sss_pci_error.h" +#include "sss_hwdev.h" #define SSS_DRV_DESC "Intelligent Network Interface Card Driver" -MODULE_AUTHOR("steven.song@3snic.com"); -MODULE_DESCRIPTION("3SNIC Network Interface Card Driver"); -MODULE_VERSION(SSS_DRV_VERSION); -MODULE_LICENSE("GPL"); - static const struct pci_device_id g_pci_table[] = { {PCI_VDEVICE(SSSNIC, SSS_DEV_ID_STANDARD), 0}, {PCI_VDEVICE(SSSNIC, SSS_DEV_ID_SPN120), 0}, @@ -67,7 +63,7 @@ static struct pci_driver g_pci_driver = { .err_handler = &g_pci_err_handler }; -static __init int sss_init_pci(void) +int sss_init_pci(void) { int ret; @@ -81,10 +77,7 @@ static __init int sss_init_pci(void) return 0; } -static __exit void sss_exit_pci(void) +void sss_exit_pci(void) { pci_unregister_driver(&g_pci_driver); } - -module_init(sss_init_pci); -module_exit(sss_exit_pci); diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwdev_link.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwdev_link.c index 40e833d7ed944e2d58b7e91059a5ebe8f4c2b5f2..2d5faac901ff004e4393cb0b469a758112af3e69 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwdev_link.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwdev_link.c @@ -23,6 +23,10 @@ #define SSS_FW_CFG_MAX_INDEX 8 #define SSS_FW_CFG_MIN_INDEX 1 +#ifndef DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT +#define DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT BIT(0) +#endif + enum sss_devlink_param_id { SSS_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, SSS_DEVLINK_PARAM_ID_ACTIVATE_FW, @@ -193,6 +197,7 @@ struct sss_cmd_switch_config { u8 data[7]; }; +#ifndef DEVLINK_HAS_NO_FLASH_UPDATE static bool sss_check_image_valid(struct sss_hwdev *hwdev, struct sss_firmware_image *image, u32 image_size) { @@ -481,12 +486,15 @@ static int sss_devlink_flash_update(struct devlink *link, return ret; } +#endif static const struct devlink_ops g_devlink_ops = { #ifdef DEVLINK_HAVE_SUPPORTED_FLASH_UPDATE_PARAMS .supported_flash_update_params = DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT, #endif +#ifndef DEVLINK_HAS_NO_FLASH_UPDATE .flash_update = sss_devlink_flash_update, +#endif }; static int sss_chip_activate_firmware(struct sss_hwdev *hwdev, u8 cfg_num) diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.c index 3317bc46d0a4ae9088c7ca306a63baf566568d2d..43386b7984b9da834a16c4e5ccdb330885010eab 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.c @@ -802,7 +802,7 @@ static void sss_ctrlq_update_cmd_info(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_arm_ceq_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { struct sss_wqe_ctrl *ctrl = &wqe->inline_wqe.wqe_scmd.ctrl; u32 info = sss_hw_cpu32((ctrl)->info); @@ -816,7 +816,7 @@ static int sss_ctrlq_arm_ceq_handler(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_default_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { struct sss_wqe_ctrl *ctrl = &wqe->wqe_lcmd.ctrl; u32 info = sss_hw_cpu32((ctrl)->info); @@ -834,7 +834,7 @@ static int sss_ctrlq_default_handler(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_async_cmd_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { struct sss_wqe_ctrl *ctrl = &wqe->wqe_lcmd.ctrl; u32 info = sss_hw_cpu32((ctrl)->info); @@ -851,7 +851,7 @@ static int sss_ctrlq_async_cmd_handler(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_pseudo_timeout_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { sss_free_ctrlq_cmd_buf(SSS_TO_HWDEV(ctrlq), &ctrlq->cmd_info[ci]); sss_erase_wqe_complete_bit(ctrlq, wqe, ci); @@ -860,7 +860,7 @@ static int sss_ctrlq_pseudo_timeout_handler(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_timeout_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { u32 i; u32 *data = (u32 *)wqe; @@ -881,7 +881,7 @@ static int sss_ctrlq_timeout_handler(struct sss_ctrlq *ctrlq, } static int sss_ctrlq_force_stop_handler(struct sss_ctrlq *ctrlq, - struct sss_ctrlq_wqe *wqe, u16 ci) + struct sss_ctrlq_wqe *wqe, u16 ci) { return sss_ctrlq_async_cmd_handler(ctrlq, wqe, ci); } diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.h b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.h index 7544e2f6bc84670d477decdc45619ad287f470cd..219ef90baf44e01572e29350ceaf913b5f5d8f18 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq.h @@ -31,4 +31,3 @@ int sss_ctrlq_sync_cmd_detail_reply(struct sss_ctrlq *ctrlq, u8 mod, u8 cmd, u64 *out_param, u32 timeout, u16 channel); #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_export.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_export.c index e9a9660f48bb1beaba18836138e8729370b4f728..8f579544c0cdc38e861c8bf0dfdacf382f7d0872 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_export.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_export.c @@ -11,6 +11,7 @@ #include #include "sss_kernel.h" +#include "sss_pci.h" #include "sss_hw.h" #include "sss_hwdev.h" #include "sss_hwif_api.h" diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_init.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_init.c index 2919357a5973d3e548955a3710b4259b4c1e60d6..2414a5624176aa8ab22ee0c8eba82ca97e22cab2 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_init.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_hwif_ctrlq_init.c @@ -16,6 +16,7 @@ #include #include "sss_kernel.h" +#include "sss_pci.h" #include "sss_hw.h" #include "sss_hwdev.h" #include "sss_hwif_export.h" diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.c new file mode 100644 index 0000000000000000000000000000000000000000..d1a2cbb9323f097c20ddb1513fce2f1c3b117b4e --- /dev/null +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.c @@ -0,0 +1,65 @@ + +#include +#include +#include "sss_kernel.h" +#include "sss_pci.h" + +#ifndef HAS_PCIE_ERR_RPT_FUNC +#define PCI_EXP_AER_FLAGS (PCI_EXP_DEVCTL_CERE | PCI_EXP_DEVCTL_NFERE | \ + PCI_EXP_DEVCTL_FERE | PCI_EXP_DEVCTL_URRE) + +MODULE_IMPORT_NS(CXL); + +#ifndef HAS_EAR_IS_NATIVE + +#ifdef NO_PCI_FIND_HOST_BRIDGE +static struct pci_bus *find_pci_root_bus(struct pci_bus *bus) +{ + while (bus->parent) + bus = bus->parent; + + return bus; +} + +struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus) +{ + struct pci_bus *root_bus = find_pci_root_bus(bus); + + return to_pci_host_bridge(root_bus->bridge); +} +#endif + +int pcie_aer_is_native(struct pci_dev *dev) +{ + struct pci_host_bridge *host = pci_find_host_bridge(dev->bus); + + if (!dev->aer_cap) + return 0; + + // return pcie_ports_native || host->native_aer; + return host->native_aer; +} +#endif + +int pci_disable_pcie_error_reporting(struct pci_dev *dev) +{ + int rc; + + if (!pcie_aer_is_native(dev)) + return -EIO; + + rc = pcie_capability_clear_word(dev, PCI_EXP_DEVCTL, PCI_EXP_AER_FLAGS); + return pcibios_err_to_errno(rc); +} + +int pci_enable_pcie_error_reporting(struct pci_dev *dev) +{ + int rc; + + if (!pcie_aer_is_native(dev)) + return -EIO; + + rc = pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_AER_FLAGS); + return pcibios_err_to_errno(rc); +} +#endif diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.h b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.h new file mode 100644 index 0000000000000000000000000000000000000000..da8f0639a7b1d174bfbce37029bf935cdfdcd9a5 --- /dev/null +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright(c) 2021 3snic Technologies Co., Ltd */ + +#ifndef SSS_PCI_H +#define SSS_PCI_H + +#ifdef USE_OLD_PCI_FUNCTION + +#include + +#define pci_pool dma_pool +#define pci_pool_create(name, pdev, size, align, allocation) \ + dma_pool_create(name, &pdev->dev, size, align, allocation) +#define pci_pool_destroy(pool) dma_pool_destroy(pool) +#define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle) +#define pci_pool_zalloc(pool, flags, handle) \ + dma_pool_zalloc(pool, flags, handle) +#define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr) + +#endif + +#ifndef HAS_SET_DMA_MASK_FUNC +static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) +{ + return dma_set_mask(&dev->dev, mask); +} + +static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) +{ + return dma_set_coherent_mask(&dev->dev, mask); +} +#endif + +#ifndef HAS_PCIE_ERR_RPT_FUNC +int pci_disable_pcie_error_reporting(struct pci_dev *dev); +int pci_enable_pcie_error_reporting(struct pci_dev *dev); +#endif + +#endif diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_id_tbl.h b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_id_tbl.h index bce7e077f210184fa6bc40620d2e3f1fa5fff7ff..699748a46505e6f41cf0ea07420f0490c013d3f5 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_id_tbl.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_id_tbl.h @@ -12,4 +12,3 @@ #define SSS_DEV_ID_SPU 0xAC00 #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_probe.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_probe.c index 4f1a865d638a1e3aed44fb6761fe2e03a8ae3a5e..e659d6033ab3d4d8dcea849ed0859c0938f685a6 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_probe.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_probe.c @@ -18,6 +18,7 @@ #include #include "sss_kernel.h" +#include "sss_pci.h" #include "sss_hw.h" #include "sss_pci_id_tbl.h" #include "sss_pci_sriov.h" diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_remove.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_remove.c index 8a9bf5277183553f3bd399f4d957abf7cd66bc14..d8afce19d44c14ac47d0a351ee840439618f17df 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_remove.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_remove.c @@ -18,6 +18,7 @@ #include #include "sss_kernel.h" +#include "sss_pci.h" #include "sss_hw.h" #include "sss_pci_id_tbl.h" #include "sss_pci_sriov.h" diff --git a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_sriov.c b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_sriov.c index d75c5859039c7147ff7c2f602f2c4d95b3df8d3f..88fead9f65cb54cd09be1d95de52bc042da6d6e0 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_sriov.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/sss_pci_sriov.c @@ -15,6 +15,7 @@ #include "sss_hwdev_api.h" #include "sss_hwif_api.h" +#ifdef CONFIG_PCI_IOV static int sss_init_vf_hw(void *hwdev, u16 vf_num) { int ret; @@ -48,7 +49,6 @@ static void sss_deinit_vf_hw(void *hwdev, u16 vf_num) } } -#ifdef CONFIG_PCI_IOV static void sss_notify_sriov_state_change(void *hwdev, u16 vf_num) { struct sss_event_info event = {0}; diff --git a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool.h b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool.h index 92e474e81ba8c5d0a159f17222d798d4885c6351..073f44213a0c5601c44cbba893af497c9299763a 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool.h +++ b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool.h @@ -27,4 +27,3 @@ extern void *g_card_va[SSS_TOOL_CARD_MAX]; extern int g_card_id; #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_main.c b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_main.c index 776725e0418af6f907f6417a7aa5296a48a5f023..d09d1cbc0b236ee0ad72301dd77f3601d2fad2b4 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_main.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_main.c @@ -635,7 +635,11 @@ static int sss_tool_create_dev(void) return ret; } +#ifdef CLASS_CREATE_WITH_ONE_PARAM + g_nictool_class = class_create(SSS_TOOL_DEV_CLASS); +#else g_nictool_class = class_create(THIS_MODULE, SSS_TOOL_DEV_CLASS); +#endif if (IS_ERR(g_nictool_class)) { tool_err("Fail to create sssnic_nictool_class\n"); ret = -EFAULT; diff --git a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_sdk.c b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_sdk.c index 2007898e55182a3d6e2d5118d1d16c413904dd2c..8f8fb6d364d4927ec740c95ecfca802e036fd8d9 100644 --- a/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_sdk.c +++ b/drivers/net/ethernet/3snic/sssnic/hw/tool/sss_tool_sdk.c @@ -446,7 +446,8 @@ static int sss_tool_get_hw_drv_version(struct sss_hal_dev *hal_dev, const void * return -EINVAL; } - ret = snprintf(info->ver, sizeof(info->ver), "%s", SSS_DRV_VERSION); + ret = snprintf(info->ver, sizeof(info->ver), "%s %s", SSS_DRV_VERSION, + __TIME_STR__); if (ret < 0) return -EINVAL; diff --git a/drivers/net/ethernet/3snic/sssnic/include/kernel/sss_linux_kernel.h b/drivers/net/ethernet/3snic/sssnic/include/kernel/sss_linux_kernel.h index db51ee285e38e2e89648d9196c76a5a0363dd540..c08828192892c929c1091b0a354e8d599b0325e2 100644 --- a/drivers/net/ethernet/3snic/sssnic/include/kernel/sss_linux_kernel.h +++ b/drivers/net/ethernet/3snic/sssnic/include/kernel/sss_linux_kernel.h @@ -4,6 +4,7 @@ #ifndef SSS_LINUX_KERNEL_H_ #define SSS_LINUX_KERNEL_H_ +#include #include #include #include @@ -42,6 +43,8 @@ #define __GFP_COMP 0 #endif +#define HAS_PCIE_ERR_RPT_FUNC + /* ************************************************************************ */ #if (KERNEL_VERSION(2, 6, 22) <= LINUX_VERSION_CODE) #define ETH_TYPE_TRANS_SETS_DEV @@ -312,6 +315,45 @@ static inline void _kc_do_gettimeofday(struct timeval *tv) #define HAVE_XDP_FRAME_SZ #endif /* >= 5.9.0 */ +/* ************************************************************************ */ +#if (KERNEL_VERSION(5, 15, 0) <= LINUX_VERSION_CODE) +#define HAS_PCIE_ERR_RPT_FUNC +#endif /* >= 5.15.0 */ + + +#if (KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE) +#define HAS_SET_DMA_MASK_FUNC +#endif /* < 5.18.0 */ + +/* ************************************************************************ */ +#if (KERNEL_VERSION(6, 2, 0) <= LINUX_VERSION_CODE) +#define HAVE_BFP_WARN_NETDEV_PARAM +#define USE_OLD_PCI_FUNCTION +#include +#endif /* >= 6.2.0 */ + +/* ************************************************************************ */ +#if (KERNEL_VERSION(6, 5, 0) <= LINUX_VERSION_CODE) +#define HAVE_BFP_WARN_NETDEV_PARAM +#define CLASS_CREATE_WITH_ONE_PARAM +#endif /* >= 6.5.0 */ + +/* ************************************************************************ */ +#if (KERNEL_VERSION(6, 6, 0) <= LINUX_VERSION_CODE) +#define HAVE_BFP_WARN_NETDEV_PARAM +#define USE_OLD_PCI_FUNCTION +#define CLASS_CREATE_WITH_ONE_PARAM +#ifdef HAS_PCIE_ERR_RPT_FUNC +#undef HAS_PCIE_ERR_RPT_FUNC +#endif +#endif /* >= 6.6.0 */ + +/* ************************************************************************ */ +#if (KERNEL_VERSION(6, 8, 0) <= LINUX_VERSION_CODE) +#define strlcpy strscpy +#define HAVE_RXFH_PARAM +#endif /* >= 6.8.0 */ + /* ************************************************************************ */ #if (KERNEL_VERSION(5, 10, 0) > LINUX_VERSION_CODE) #define HAVE_DEVLINK_FW_FILE_NAME_PARAM @@ -412,7 +454,7 @@ ETHTOOL_COALESCE_RX_MAX_FRAMES_LOW | ETHTOOL_COALESCE_RX_MAX_FRAMES_HIGH) #endif /* > 5.9.0 */ #if IS_BUILTIN(CONFIG_NET_DEVLINK) -#ifndef HAVE_DEVLINK_FLASH_UPDATE_PARAMS +#if !defined(HAVE_DEVLINK_FLASH_UPDATE_PARAMS) && !defined(__BCLINUX_21_10__) #define HAVE_DEVLINK_FLASH_UPDATE_PARAMS #endif #endif diff --git a/drivers/net/ethernet/3snic/sssnic/include/sss_tool_comm.h b/drivers/net/ethernet/3snic/sssnic/include/sss_tool_comm.h index 633bd3850af9c973b4e3197f019edb695150919e..48a2937b3bbd2e7f4b3fb0fe3f518e93b5570755 100644 --- a/drivers/net/ethernet/3snic/sssnic/include/sss_tool_comm.h +++ b/drivers/net/ethernet/3snic/sssnic/include/sss_tool_comm.h @@ -112,4 +112,3 @@ struct sss_tool_drv_version_info { }; #endif /* _SSS_NIC_MT_H_ */ - diff --git a/drivers/net/ethernet/3snic/sssnic/include/sss_version.h b/drivers/net/ethernet/3snic/sssnic/include/sss_version.h index cf3af32819584c9fc63affad1b52ce459103571d..788904aa9902c50c5ea4474a2cd1944576fb4c21 100644 --- a/drivers/net/ethernet/3snic/sssnic/include/sss_version.h +++ b/drivers/net/ethernet/3snic/sssnic/include/sss_version.h @@ -4,6 +4,6 @@ #ifndef SSS_VERSION_H #define SSS_VERSION_H -#define SSS_VERSION_STR "1.0.6.4" +#define SSS_VERSION_STR "1.1.0.2" #endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/kcompat.mk b/drivers/net/ethernet/3snic/sssnic/kcompat/mk/kcompat.mk deleted file mode 100644 index 12f1af9d337f2e02174610da042c63b1d13015af..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/kcompat.mk +++ /dev/null @@ -1,137 +0,0 @@ -# get OS info - -ifeq ($(shell uname -n), bytedance) -OS_TYPE ?= velinux -else -OS_TYPE ?= $(shell sed -n '/^ID=/p' /etc/os-release | awk -F '=' '{print $$2}' | sed 's/\"//g') -endif - -ifeq ($(OS_TYPE), centos) -OS_VERSION_ID ?= $(shell cat /etc/centos-release | grep 'release' | awk -F 'release ' '{print $$2}' | awk -F " " '{print $$1}'|awk -F "." '{print $$1"."$$2}') -else ifeq ($(OS_TYPE), $(findstring $(OS_TYPE), tencentos opencloudos velinux)) -OS_VERSION_ID ?= $(shell sed -n '/^VERSION_ID/p' /etc/os-release | awk -F '=' '{print $$2}' | sed 's/\"//g') -else ifeq ($(OS_TYPE), uos) - OS_VERSION ?= $(shell uname -r) - OS_PATCH_VERSION ?= $(shell echo $(OS_VERSION) | awk -F '-' '{print $$2}' | awk -F '.' '{print $$1}') - OS_VERSION_ID_TEMP ?= $(shell sed -n '/^VERSION_ID/p' /etc/os-release | awk -F '=' '{print $$2}' | sed 's/\"//g') - ifeq ($(OS_PATCH_VERSION), 2109) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1021e - else ifeq ($(OS_PATCH_VERSION), 2106) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1020e - else ifeq ($(OS_PATCH_VERSION), 2211) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1050u2e - else ifeq ($(OS_PATCH_VERSION), 91) - OS_PATCH_VERSION_MINOR ?= $(shell echo $(OS_VERSION) | awk -F '-' '{print $$2}' | awk -F '.' '{print $$3}') - ifeq ($(OS_PATCH_VERSION_MINOR), 132) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1050u2a - else ifeq ($(OS_PATCH_VERSION_MINOR), 152) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1060a - endif - else ifeq ($(OS_PATCH_VERSION), 2201) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1050e - else ifeq ($(OS_PATCH_VERSION), 2305) - OS_VERSION_ID ?= $(OS_VERSION_ID_TEMP).1060e - endif -else ifeq ($(OS_TYPE), ubuntu) -OS_VERSION_ID ?= $(shell sed -n '/^PRETTY_NAME/p' /etc/os-release | awk -F "\"" '{print $$2}'| awk -F ' ' '{print $$2}') -else ifeq ($(OS_TYPE), debian) -OS_VERSION_ID ?= $(shell cat /etc/debian_version) -endif - -ifeq ($(OS_TYPE),openEuler) -OS_SP_ID ?= $(shell cat /etc/openEuler-release | awk -F '[()]' '{print $$2}' | awk -F '-' '{print $$2}') -else ifeq ($(OS_TYPE), kylin) -OS_SP_ID_NAME ?= $(shell sed -n '/^VERSION=/p' /etc/os-release | awk -F '[()]' '{print $$2}') -ifeq ($(OS_SP_ID_NAME), Tercel) -OS_SP_ID ?= SP1 -else ifeq ($(OS_SP_ID_NAME), Sword) -OS_SP_ID ?= SP2 -else ifeq ($(OS_SP_ID_NAME), Lance) -OS_SP_ID ?= SP3 -endif -else ifeq ($(OS_TYPE), euleros) - OS_SP_ID ?= $(shell cat /etc/euleros-release | awk -F '(' '{print $$2}' | awk -F ')' '{print $$1}' | awk -F $(CPU_ARCH) '{print $$1}') -else ifeq ($(OS_TYPE), bclinux) - ifeq ($(OS_VERSION_ID), 21.10) - OS_SP_ID ?= _$(shell uname -r | awk -F '-' '{print $$2}' | awk -F '.oe1' '{print $$1}' | awk -F '.' '{print $$NF}') - else - OS_SP_ID ?= _$(shell uname -r | awk -F '-' '{print $$1}') - endif -else ifeq ($(OS_TYPE), KylinSecOS) - OS_VERSION_ID ?= $(shell sed -n '/^VERSION_ID/p' /etc/os-release | awk -F '=' '{print $$2}' | sed 's/\"//g') - ifeq ($(OS_VERSION_ID), 3.4-4) - OS_VERSION_ID = 3.4.4 - else ifeq ($(OS_VERSION_ID), 3.4-5) - OS_VERSION_ID = 3.4.5 - endif -endif - -OS_RELEASE ?= $(OS_TYPE)$(OS_VERSION_ID)$(OS_SP_ID) - -CPU_ARCH ?= $(shell uname -m) -KERNEL_RELEASE ?= $(shell uname -r | awk -F '.$(CPU_ARCH)' '{print $$1}') - -ifeq ($(OS_TYPE)_$(OS_VERSION_ID)_$(KERNEL_RELEASE), bclinux_22.10_4.19.0-348.20.20.oe2203.bclinux) - EXTRA_CFLAGS += -Wno-missing-attributes -endif - -export OS_TYPE OS_VERSION_ID OS_RELEASE KERNEL_RELEASE CPU_ARCH - -ccflags-y += -Wno-missing-braces -Wno-declaration-after-statement - -# Check OS -ifeq ($(OS_TYPE), openEuler) -ccflags-y += -D__OPENEULER__ -endif - -ifeq ($(OS_TYPE), opencloudos) -ccflags-y += -D__OPENCLOUDOS__ -endif - -ifeq ($(OS_TYPE), tencentos) -ccflags-y += -D__TENCENTOS__ -endif - -ifeq ($(OS_TYPE), kylin) -ccflags-y += -D__KYLIN__ -ifeq ($(OS_RELEASE), kylinV10SP3) -ccflags-y += -D__KYLIN_V10_SP3__ -endif -endif - -ifeq ($(OS_TYPE), uos) -ccflags-y += -D__UOS__ -endif - -ifeq ($(OS_TYPE), bclinux) -ifeq ($(OS_VERSION_ID), 22.10) -EXTRA_CFLAGS += -D__BCLINUX_22_10__ -endif -endif - -ifeq ($(OS_TYPE), KylinSecOS) -EXTRA_CFLAGS += -D__KYLINSECOS__ -endif - -ifeq ($(OS_TYPE), $(findstring $(OS_TYPE), sles suseeuler)) -ccflags-y += -D__SLES__ -endif - -ifeq ($(OS_TYPE), fusionos) -EXTRA_CFLAGS += -D__FUSIONOS__ -endif - -ifeq ($(OS_TYPE), ol) -EXTRA_CFLAGS += -D__ORACLE__ -ifeq ($(OS_RELEASE), ol7.8) -ccflags-y += -D__ORACLE_78__ -else ifeq ($(OS_RELEASE), ol8.5) -ccflags-y += -D__ORACLE_85__ -else ifeq ($(OS_RELEASE), ol8.6) -ccflags-y += -D__ORACLE_86__ -endif -endif - -ifeq ($(OS_TYPE), kos) -EXTRA_CFLAGS += -D__KOS__ -endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_hw b/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_hw deleted file mode 100644 index 47e9035ad8400ac59e69f597de544ba2fedb6bfa..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_hw +++ /dev/null @@ -1,61 +0,0 @@ - -TAGET_KMOD_NAME ?= sssdk - -EXPORT_SYMBOL := true - -ccflags-y += -I$(PWD)/ -ccflags-y += -I$(PWD)/../include -ccflags-y += -I$(PWD)/../include/hw -ccflags-y += -I$(PWD)/../include/kernel -ccflags-y += -I$(PWD)/include - -ccflags-y += -I$(PWD)/tool -ccflags-y += -I$(PWD)/../kcompat - -ccflags-y += -Werror -ccflags-y += -Wno-implicit-fallthrough - -include $(PWD)/../kcompat/mk/kcompat.mk - -obj-m += $(TAGET_KMOD_NAME).o -$(TAGET_KMOD_NAME)-objs := sss_hw_main.o \ - sss_pci_probe.o \ - sss_pci_remove.o \ - sss_pci_shutdown.o \ - sss_pci_error.o \ - sss_pci_sriov.o \ - sss_pci_global.o \ - sss_adapter_mgmt.o \ - sss_hwdev_api.o \ - sss_hwdev_cap.o \ - sss_hwdev_export.o \ - sss_hwdev_link.o \ - sss_hwdev_init.o \ - sss_hwdev_mgmt_info.o \ - sss_hwdev_mgmt_channel.o \ - sss_hwdev_io_flush.o \ - sss_hwif_init.o \ - sss_hwif_api.o \ - sss_hwif_export.o \ - sss_hwif_eq.o \ - sss_hwif_mgmt_init.o \ - sss_hwif_ceq.o \ - sss_hwif_aeq.o \ - sss_hwif_adm.o \ - sss_hwif_adm_init.o \ - sss_hwif_mbx.o \ - sss_hwif_mbx_init.o \ - sss_hwif_mbx_export.o \ - sss_hwif_irq.o \ - sss_hwif_ctrlq.o \ - sss_hwif_ctrlq_init.o \ - sss_hwif_ctrlq_export.o \ - sss_common.o \ - sss_wq.o \ - ../kcompat/sss_kcompat.o \ - ./tool/sss_tool_chip.o \ - ./tool/sss_tool_main.o \ - ./tool/sss_tool_sdk.o \ - ./tool/sss_tool_sm.o - -include $(PWD)/kernel.mk diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_nic b/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_nic deleted file mode 100644 index 2785ab9c04fbfdf006b38f837a168264e8bd3997..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/makefile_nic +++ /dev/null @@ -1,50 +0,0 @@ -# NIC Makefile -EXPORT_SYMBOL := true - -TAGET_KMOD_NAME ?= sssnic - -#SDK -ccflags-y += -I$(PWD)/../include -ccflags-y += -I$(PWD)/../include/hw -ccflags-y += -I$(PWD)/../include/kernel -ccflags-y += -I$(PWD) -ccflags-y += -I$(PWD)/include -ccflags-y += -I$(PWD)/tool -ccflags-y += -I$(PWD)/../kcompat -KBUILD_EXTRA_SYMBOLS += $(PWD)/../hw/Module.symvers - -ccflags-y += -Werror - -include $(PWD)/../kcompat/mk/kcompat.mk - -obj-m += $(TAGET_KMOD_NAME).o -$(TAGET_KMOD_NAME)-objs := sss_nic_main.o \ - ./tool/sss_tool_nic_func.o \ - ./tool/sss_tool_nic_dcb.o \ - ./tool/sss_tool_nic_phy_attr.o \ - ./tool/sss_tool_nic_qp_info.o \ - ./tool/sss_tool_nic_stats.o \ - sss_nic_tx.o \ - sss_nic_tx_init.o \ - sss_nic_rx.o \ - sss_nic_rx_init.o \ - sss_nic_rx_reset.o \ - sss_nic_rss.o \ - sss_nic_ntuple.o \ - sss_nic_dcb.o \ - sss_nic_ethtool.o \ - sss_nic_ethtool_api.o \ - sss_nic_ethtool_stats.o \ - sss_nic_ethtool_stats_api.o \ - sss_nic_irq.o \ - sss_nic_filter.o \ - sss_nic_netdev_ops.o \ - sss_nic_cfg.o \ - sss_nic_mag_cfg.o \ - sss_nic_vf_cfg.o \ - sss_nic_rss_cfg.o \ - sss_nic_event.o \ - sss_nic_io.o \ - sss_nic_netdev_ops_api.o - -include $(PWD)/kernel.mk diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_hwdev_link.c b/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_hwdev_link.c deleted file mode 100644 index 40e833d7ed944e2d58b7e91059a5ebe8f4c2b5f2..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_hwdev_link.c +++ /dev/null @@ -1,725 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* Copyright(c) 2021 3snic Technologies Co., Ltd */ - -#define pr_fmt(fmt) KBUILD_MODNAME ": [BASE]" fmt - -#include -#include -#include - -#include "sss_hwdev_link.h" -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#include "sss_hw_common.h" -#include "sss_hwdev_api.h" -#include "sss_hwif_adm.h" -#include "sss_hwif_adm_common.h" - -#define SSS_FW_MAGIC_NUM 0x5a5a1100 -#define SSS_FW_IMAGE_HEAD_SIZE 4096 -#define SSS_FW_FRAGMENT_MAX_LEN 1536 -#define SSS_FW_CFG_DEFAULT_INDEX 0xFF -#define SSS_FW_UPDATE_MGMT_TIMEOUT 3000000U -#define SSS_FW_TYPE_MAX_NUM 0x40 -#define SSS_FW_CFG_MAX_INDEX 8 -#define SSS_FW_CFG_MIN_INDEX 1 - -enum sss_devlink_param_id { - SSS_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, - SSS_DEVLINK_PARAM_ID_ACTIVATE_FW, - SSS_DEVLINK_PARAM_ID_SWITCH_CFG, -}; - -enum sss_firmware_type { - SSS_UP_FW_UPDATE_MIN_TYPE1 = 0x0, - SSS_UP_FW_UPDATE_UP_TEXT = 0x0, - SSS_UP_FW_UPDATE_UP_DATA = 0x1, - SSS_UP_FW_UPDATE_UP_DICT = 0x2, - SSS_UP_FW_UPDATE_TILE_PCPTR = 0x3, - SSS_UP_FW_UPDATE_TILE_TEXT = 0x4, - SSS_UP_FW_UPDATE_TILE_DATA = 0x5, - SSS_UP_FW_UPDATE_TILE_DICT = 0x6, - SSS_UP_FW_UPDATE_PPE_STATE = 0x7, - SSS_UP_FW_UPDATE_PPE_BRANCH = 0x8, - SSS_UP_FW_UPDATE_PPE_EXTACT = 0x9, - SSS_UP_FW_UPDATE_MAX_TYPE1 = 0x9, - SSS_UP_FW_UPDATE_CFG0 = 0xa, - SSS_UP_FW_UPDATE_CFG1 = 0xb, - SSS_UP_FW_UPDATE_CFG2 = 0xc, - SSS_UP_FW_UPDATE_CFG3 = 0xd, - SSS_UP_FW_UPDATE_MAX_TYPE1_CFG = 0xd, - - SSS_UP_FW_UPDATE_MIN_TYPE2 = 0x14, - SSS_UP_FW_UPDATE_MAX_TYPE2 = 0x14, - - SSS_UP_FW_UPDATE_MIN_TYPE3 = 0x18, - SSS_UP_FW_UPDATE_PHY = 0x18, - SSS_UP_FW_UPDATE_BIOS = 0x19, - SSS_UP_FW_UPDATE_HLINK_ONE = 0x1a, - SSS_UP_FW_UPDATE_HLINK_TWO = 0x1b, - SSS_UP_FW_UPDATE_HLINK_THR = 0x1c, - SSS_UP_FW_UPDATE_MAX_TYPE3 = 0x1c, - - SSS_UP_FW_UPDATE_MIN_TYPE4 = 0x20, - SSS_UP_FW_UPDATE_L0FW = 0x20, - SSS_UP_FW_UPDATE_L1FW = 0x21, - SSS_UP_FW_UPDATE_BOOT = 0x22, - SSS_UP_FW_UPDATE_SEC_DICT = 0x23, - SSS_UP_FW_UPDATE_HOT_PATCH0 = 0x24, - SSS_UP_FW_UPDATE_HOT_PATCH1 = 0x25, - SSS_UP_FW_UPDATE_HOT_PATCH2 = 0x26, - SSS_UP_FW_UPDATE_HOT_PATCH3 = 0x27, - SSS_UP_FW_UPDATE_HOT_PATCH4 = 0x28, - SSS_UP_FW_UPDATE_HOT_PATCH5 = 0x29, - SSS_UP_FW_UPDATE_HOT_PATCH6 = 0x2a, - SSS_UP_FW_UPDATE_HOT_PATCH7 = 0x2b, - SSS_UP_FW_UPDATE_HOT_PATCH8 = 0x2c, - SSS_UP_FW_UPDATE_HOT_PATCH9 = 0x2d, - SSS_UP_FW_UPDATE_HOT_PATCH10 = 0x2e, - SSS_UP_FW_UPDATE_HOT_PATCH11 = 0x2f, - SSS_UP_FW_UPDATE_HOT_PATCH12 = 0x30, - SSS_UP_FW_UPDATE_HOT_PATCH13 = 0x31, - SSS_UP_FW_UPDATE_HOT_PATCH14 = 0x32, - SSS_UP_FW_UPDATE_HOT_PATCH15 = 0x33, - SSS_UP_FW_UPDATE_HOT_PATCH16 = 0x34, - SSS_UP_FW_UPDATE_HOT_PATCH17 = 0x35, - SSS_UP_FW_UPDATE_HOT_PATCH18 = 0x36, - SSS_UP_FW_UPDATE_HOT_PATCH19 = 0x37, - SSS_UP_FW_UPDATE_MAX_TYPE4 = 0x37, - - SSS_UP_FW_UPDATE_MIN_TYPE5 = 0x3a, - SSS_UP_FW_UPDATE_OPTION_ROM = 0x3a, - SSS_UP_FW_UPDATE_MAX_TYPE5 = 0x3a, - - SSS_UP_FW_UPDATE_MIN_TYPE6 = 0x3e, - SSS_UP_FW_UPDATE_MAX_TYPE6 = 0x3e, - - SSS_UP_FW_UPDATE_MIN_TYPE7 = 0x40, - SSS_UP_FW_UPDATE_MAX_TYPE7 = 0x40, -}; - -#define SSS_IMAGE_MPU_ALL_IN (BIT_ULL(SSS_UP_FW_UPDATE_UP_TEXT) | \ - BIT_ULL(SSS_UP_FW_UPDATE_UP_DATA) | \ - BIT_ULL(SSS_UP_FW_UPDATE_UP_DICT)) - -#define SSS_IMAGE_NPU_ALL_IN (BIT_ULL(SSS_UP_FW_UPDATE_TILE_PCPTR) | \ - BIT_ULL(SSS_UP_FW_UPDATE_TILE_TEXT) | \ - BIT_ULL(SSS_UP_FW_UPDATE_TILE_DATA) | \ - BIT_ULL(SSS_UP_FW_UPDATE_TILE_DICT) | \ - BIT_ULL(SSS_UP_FW_UPDATE_PPE_STATE) | \ - BIT_ULL(SSS_UP_FW_UPDATE_PPE_BRANCH) | \ - BIT_ULL(SSS_UP_FW_UPDATE_PPE_EXTACT)) - -#define SSS_IMAGE_COLD_ALL_IN (SSS_IMAGE_MPU_ALL_IN | SSS_IMAGE_NPU_ALL_IN) - -#define SSS_IMAGE_CFG_ALL_IN (BIT_ULL(SSS_UP_FW_UPDATE_CFG0) | \ - BIT_ULL(SSS_UP_FW_UPDATE_CFG1) | \ - BIT_ULL(SSS_UP_FW_UPDATE_CFG2) | \ - BIT_ULL(SSS_UP_FW_UPDATE_CFG3)) - -#define SSS_CHECK_IMAGE_INTEGRATY(mask) \ - (((mask) & SSS_IMAGE_COLD_ALL_IN) == SSS_IMAGE_COLD_ALL_IN && \ - ((mask) & SSS_IMAGE_CFG_ALL_IN) != 0) - -#define SSS_LINK_HWDEV(link) \ - ((struct sss_hwdev *)((struct sss_devlink *)devlink_priv(link))->hwdev) - -struct sss_firmware_section { - u32 section_len; - u32 section_offset; - u32 section_version; - u32 section_type; - u32 section_crc; - u32 section_flag; -}; - -struct sss_firmware_image { - u32 fw_version; - u32 fw_len; - u32 fw_magic; - struct { - u32 section_cnt : 16; - u32 rsvd : 16; - } fw_info; - struct sss_firmware_section section_info[SSS_FW_TYPE_MAX_NUM]; - u32 device_id; - u32 rsvd0[101]; - u32 rsvd1[534]; - u32 bin_data; -}; - -struct sss_host_image { - struct sss_firmware_section section_info[SSS_FW_TYPE_MAX_NUM]; - struct { - u32 total_len; - u32 fw_version; - } image_info; - u32 section_cnt; - u32 device_id; -}; - -struct sss_cmd_update_firmware { - struct sss_mgmt_msg_head head; - - struct { - u32 sl : 1; - u32 sf : 1; - u32 flag : 1; - u32 bit_signed : 1; - u32 reserved : 12; - u32 fragment_len : 16; - } ctl_info; - - struct { - u32 section_crc; - u32 section_type; - } section_info; - - u32 total_len; - u32 section_len; - u32 section_version; - u32 section_offset; - u32 data[384]; -}; - -struct sss_cmd_activate_firmware { - struct sss_mgmt_msg_head head; - u8 index; /* 0 ~ 7 */ - u8 data[7]; -}; - -struct sss_cmd_switch_config { - struct sss_mgmt_msg_head head; - u8 index; /* 0 ~ 7 */ - u8 data[7]; -}; - -static bool sss_check_image_valid(struct sss_hwdev *hwdev, - struct sss_firmware_image *image, u32 image_size) -{ - u32 i; - u32 length = 0; - u32 cnt; - - if (image->fw_magic != SSS_FW_MAGIC_NUM) { - sdk_err(hwdev->dev_hdl, "Err fw magic: 0x%x read from file\n", image->fw_magic); - return false; - } - - cnt = image->fw_info.section_cnt; - if (cnt > SSS_FW_TYPE_MAX_NUM) { - sdk_err(hwdev->dev_hdl, "Err fw type num: 0x%x read from file\n", cnt); - return false; - } - - for (i = 0; i < cnt; i++) - length += image->section_info[i].section_len; - - if (length != image->fw_len || - (u32)(image->fw_len + SSS_FW_IMAGE_HEAD_SIZE) != image_size) { - sdk_err(hwdev->dev_hdl, "Err data size: 0x%x read from file\n", length); - return false; - } - - return true; -} - -static void sss_init_host_image(struct sss_host_image *host_image, - struct sss_firmware_image *image) -{ - int i; - - for (i = 0; i < image->fw_info.section_cnt; i++) { - memcpy(&host_image->section_info[i], &image->section_info[i], - sizeof(image->section_info[i])); - } - - host_image->image_info.fw_version = image->fw_version; - host_image->section_cnt = image->fw_info.section_cnt; - host_image->device_id = image->device_id; - host_image->image_info.total_len = image->fw_len; -} - -static bool sss_check_image_integrity(struct sss_hwdev *hwdev, - struct sss_host_image *host_image) -{ - u32 i; - u32 section_type; - u64 mask = 0; - - for (i = 0; i < host_image->section_cnt; i++) { - section_type = host_image->section_info[i].section_type; - if (mask & (1ULL << section_type)) { - sdk_err(hwdev->dev_hdl, "Duplicate section type: %u\n", section_type); - return false; - } - mask |= (1ULL << section_type); - } - - if (SSS_CHECK_IMAGE_INTEGRATY(mask)) - return true; - - sdk_err(hwdev->dev_hdl, - "Fail to check file integrity, valid: 0x%llx, current: 0x%llx\n", - (SSS_IMAGE_COLD_ALL_IN | SSS_IMAGE_CFG_ALL_IN), mask); - - return false; -} - -static bool sss_check_image_device_id(struct sss_hwdev *hwdev, u32 dev_id) -{ - struct sss_cmd_board_info info = {0}; - - if (sss_chip_get_board_info(hwdev, &info.info) != 0) { - sdk_err(hwdev->dev_hdl, "Fail to get board info\n"); - return false; - } - - if (dev_id == info.info.board_type) - return true; - - sdk_err(hwdev->dev_hdl, - "The image device type: 0x%x don't match the fw dev id: 0x%x\n", - dev_id, info.info.board_type); - - return false; -} - -static void sss_init_update_cmd_param(struct sss_cmd_update_firmware *cmd_update, - struct sss_firmware_section *info, int remain, - u32 send_offset) -{ - cmd_update->ctl_info.sl = (remain <= SSS_FW_FRAGMENT_MAX_LEN) ? true : false; - cmd_update->ctl_info.sf = (remain == info->section_len) ? true : false; - cmd_update->ctl_info.bit_signed = info->section_flag & 0x1; - cmd_update->ctl_info.fragment_len = min(remain, SSS_FW_FRAGMENT_MAX_LEN); - - cmd_update->section_info.section_crc = info->section_crc; - cmd_update->section_info.section_type = info->section_type; - - cmd_update->section_version = info->section_version; - cmd_update->section_len = info->section_len; - cmd_update->section_offset = send_offset; -} - -static int sss_chip_update_firmware(struct sss_hwdev *hwdev, - struct sss_cmd_update_firmware *cmd_update) -{ - int ret; - u16 out_len = sizeof(*cmd_update); - - ret = sss_sync_send_adm_msg(hwdev, SSS_MOD_TYPE_COMM, - SSS_COMM_MGMT_CMD_UPDATE_FW, cmd_update, sizeof(*cmd_update), - cmd_update, &out_len, SSS_FW_UPDATE_MGMT_TIMEOUT); - if (SSS_ASSERT_SEND_MSG_RETURN(ret, out_len, cmd_update)) { - sdk_err(hwdev->dev_hdl, - "Fail to update fw, ret: %d, status: 0x%x, out_len: 0x%x\n", - ret, cmd_update->head.state, out_len); - return (cmd_update->head.state != 0) ? - cmd_update->head.state : -EIO; - } - - return 0; -} - -static int sss_update_firmware(struct sss_hwdev *hwdev, const u8 *data, - struct sss_host_image *host_image) -{ - int ret; - int remain; - u32 i; - u32 send_offset; - u32 offset; - bool flag = false; - struct sss_cmd_update_firmware *cmd_update = NULL; - - cmd_update = kzalloc(sizeof(*cmd_update), GFP_KERNEL); - if (!cmd_update) - return -ENOMEM; - - for (i = 0; i < host_image->section_cnt; i++) { - offset = host_image->section_info[i].section_offset; - remain = (int)(host_image->section_info[i].section_len); - send_offset = 0; - - while (remain > 0) { - if (flag) { - cmd_update->total_len = 0; - } else { - cmd_update->total_len = host_image->image_info.total_len; - flag = true; - } - - sss_init_update_cmd_param(cmd_update, &host_image->section_info[i], - remain, send_offset); - - memcpy(cmd_update->data, - ((data + SSS_FW_IMAGE_HEAD_SIZE) + offset) + send_offset, - cmd_update->ctl_info.fragment_len); - - ret = sss_chip_update_firmware(hwdev, cmd_update); - if (ret != 0) { - kfree(cmd_update); - return ret; - } - - send_offset += cmd_update->ctl_info.fragment_len; - remain = (int)(host_image->section_info[i].section_len - send_offset); - } - } - - kfree(cmd_update); - - return 0; -} - -static int sss_flash_update_notify(struct devlink *devlink, - const struct firmware *fw, struct sss_host_image *image, - struct netlink_ext_ack *extack) -{ - struct sss_devlink *devlink_dev = devlink_priv(devlink); - struct sss_hwdev *hwdev = devlink_dev->hwdev; - int ret; - -#if defined(HAVE_DEVLINK_FW_FILE_NAME_MEMBER) || defined(DEVLINK_FLASH_UPDATE_NEED_TO_NOTIFY) - devlink_flash_update_begin_notify(devlink); -#endif - devlink_flash_update_status_notify(devlink, "Flash firmware begin", NULL, 0, 0); - sdk_info(hwdev->dev_hdl, "Flash firmware begin\n"); - ret = sss_update_firmware(hwdev, fw->data, image); - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to flash firmware, ret: %d\n", ret); - NL_SET_ERR_MSG_MOD(extack, "Fail to flash firmware"); - devlink_flash_update_status_notify(devlink, "Fail to flash firmware", NULL, 0, 0); - } else { - sdk_info(hwdev->dev_hdl, "Flash firmware end\n"); - devlink_flash_update_status_notify(devlink, "Flash firmware end", NULL, 0, 0); - } -#if defined(HAVE_DEVLINK_FW_FILE_NAME_MEMBER) || defined(DEVLINK_FLASH_UPDATE_NEED_TO_NOTIFY) - devlink_flash_update_end_notify(devlink); -#endif - - return ret; -} - -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM -static int sss_devlink_flash_update(struct devlink *link, const char *file_name, - const char *component, struct netlink_ext_ack *extack) -#else -static int sss_devlink_flash_update(struct devlink *link, - struct devlink_flash_update_params *param, - struct netlink_ext_ack *extack) -#endif -{ - int ret; - struct sss_host_image *host_image = NULL; - struct sss_devlink *link_dev = devlink_priv(link); - struct sss_hwdev *hwdev = link_dev->hwdev; - -#ifdef HAVE_DEVLINK_FW_FILE_NAME_MEMBER - const struct firmware *fw = NULL; -#else - const struct firmware *fw = param->fw; -#endif - - host_image = kzalloc(sizeof(*host_image), GFP_KERNEL); - if (!host_image) { - ret = -ENOMEM; - goto alloc_host_image_err; - } - -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM - ret = request_firmware_direct(&fw, file_name, hwdev->dev_hdl); -#else -#ifdef HAVE_DEVLINK_FW_FILE_NAME_MEMBER - ret = request_firmware_direct(&fw, param->file_name, hwdev->dev_hdl); -#else - ret = 0; -#endif -#endif - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to request firmware\n"); - goto request_fw_err; - } - - if (!sss_check_image_valid(hwdev, (struct sss_firmware_image *)fw->data, - (u32)(fw->size))) { - sdk_err(hwdev->dev_hdl, "Fail to check image valid\n"); - NL_SET_ERR_MSG_MOD(extack, "Fail to check image valid"); - ret = -EINVAL; - goto check_image_err; - } - - sss_init_host_image(host_image, (struct sss_firmware_image *)fw->data); - - if (!sss_check_image_integrity(hwdev, host_image)) { - sdk_err(hwdev->dev_hdl, "Fail to check image integrity\n"); - NL_SET_ERR_MSG_MOD(extack, "Fail to check image integrity"); - ret = -EINVAL; - goto check_image_err; - } - - if (!sss_check_image_device_id(hwdev, host_image->device_id)) { - sdk_err(hwdev->dev_hdl, "Fail to check image device id\n"); - NL_SET_ERR_MSG_MOD(extack, "Fail to check image device id"); - ret = -EINVAL; - goto check_image_err; - } - - ret = sss_flash_update_notify(link, fw, host_image, extack); - -check_image_err: -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM - release_firmware(fw); -#endif - -request_fw_err: - kfree(host_image); - -alloc_host_image_err: - link_dev->switch_cfg_id = SSS_FW_CFG_DEFAULT_INDEX; - link_dev->active_cfg_id = SSS_FW_CFG_DEFAULT_INDEX; - - return ret; -} - -static const struct devlink_ops g_devlink_ops = { -#ifdef DEVLINK_HAVE_SUPPORTED_FLASH_UPDATE_PARAMS - .supported_flash_update_params = DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT, -#endif - .flash_update = sss_devlink_flash_update, -}; - -static int sss_chip_activate_firmware(struct sss_hwdev *hwdev, u8 cfg_num) -{ - int ret; - struct sss_cmd_activate_firmware cmd_activate = {0}; - u16 out_len = sizeof(cmd_activate); - - if (SSS_GET_FUNC_TYPE(hwdev) != SSS_FUNC_TYPE_PF && - SSS_GET_FUNC_TYPE(hwdev) != SSS_FUNC_TYPE_PPF) - return -EOPNOTSUPP; - - if (!SSS_SUPPORT_ADM_MSG(hwdev)) - return -EPERM; - - cmd_activate.index = cfg_num; - - ret = sss_sync_send_adm_msg(hwdev, SSS_MOD_TYPE_COMM, SSS_COMM_MGMT_CMD_ACTIVE_FW, - &cmd_activate, sizeof(cmd_activate), &cmd_activate, - &out_len, SSS_FW_UPDATE_MGMT_TIMEOUT); - if (SSS_ASSERT_SEND_MSG_RETURN(ret, out_len, &cmd_activate)) { - sdk_err(hwdev->dev_hdl, - "Fail to activate firmware, ret: %d, status: 0x%x, out_len: 0x%x\n", - ret, cmd_activate.head.state, out_len); - return (cmd_activate.head.state != 0) ? - cmd_activate.head.state : -EIO; - } - - return 0; -} - -static int sss_devlink_get_activate_fw_config(struct devlink *link, u32 id, - struct devlink_param_gset_ctx *param_ctx) -{ - struct sss_devlink *link_dev = devlink_priv(link); - - param_ctx->val.vu8 = link_dev->active_cfg_id; - - return 0; -} - -static int sss_devlink_set_activate_fw_config(struct devlink *link, u32 id, - struct devlink_param_gset_ctx *param_ctx) -{ - int ret; - struct sss_devlink *link_dev = devlink_priv(link); - struct sss_hwdev *hwdev = link_dev->hwdev; - - link_dev->active_cfg_id = param_ctx->val.vu8; - sdk_info(hwdev->dev_hdl, "Begin activate firmware\n"); - - ret = sss_chip_activate_firmware(hwdev, link_dev->active_cfg_id - 1); - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to activate firmware, ret: %d\n", ret); - return ret; - } - - sdk_info(hwdev->dev_hdl, "End activate firmware\n"); - - return 0; -} - -static int sss_chip_switch_config(struct sss_hwdev *hwdev, u8 cfg_num) -{ - int ret; - struct sss_cmd_switch_config cmd_switch = {0}; - u16 out_len = sizeof(cmd_switch); - - if (SSS_GET_FUNC_TYPE(hwdev) != SSS_FUNC_TYPE_PF) - return -EOPNOTSUPP; - - if (!SSS_SUPPORT_ADM_MSG(hwdev)) - return -EPERM; - - cmd_switch.index = cfg_num; - - ret = sss_sync_send_adm_msg(hwdev, SSS_MOD_TYPE_COMM, SSS_COMM_MGMT_CMD_SWITCH_CFG, - &cmd_switch, sizeof(cmd_switch), &cmd_switch, - &out_len, SSS_FW_UPDATE_MGMT_TIMEOUT); - if (SSS_ASSERT_SEND_MSG_RETURN(ret, out_len, &cmd_switch)) { - sdk_err(hwdev->dev_hdl, - "Fail to switch cfg, ret: %d, status: 0x%x, out_len: 0x%x\n", - ret, cmd_switch.head.state, out_len); - return (cmd_switch.head.state != 0) ? - cmd_switch.head.state : -EIO; - } - - return 0; -} - -static int sss_devlink_get_switch_config(struct devlink *link, u32 id, - struct devlink_param_gset_ctx *param_ctx) -{ - struct sss_devlink *link_dev = devlink_priv(link); - - param_ctx->val.vu8 = link_dev->switch_cfg_id; - - return 0; -} - -static int sss_devlink_set_switch_config(struct devlink *link, u32 id, - struct devlink_param_gset_ctx *param_ctx) -{ - int ret; - struct sss_devlink *link_dev = devlink_priv(link); - struct sss_hwdev *hwdev = link_dev->hwdev; - - link_dev->switch_cfg_id = param_ctx->val.vu8; - sdk_info(hwdev->dev_hdl, "Begin switch cfg"); - - ret = sss_chip_switch_config(hwdev, link_dev->switch_cfg_id - 1); - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to switch cfg, ret: %d\n", ret); - return ret; - } - - sdk_info(hwdev->dev_hdl, "End Switch cfg\n"); - - return 0; -} - -static int sss_devlink_validate_firmware_config(struct devlink *link, u32 id, - union devlink_param_value param_val, - struct netlink_ext_ack *ext_ack) -{ - struct sss_hwdev *hwdev = SSS_LINK_HWDEV(link); - - if (param_val.vu8 < SSS_FW_CFG_MIN_INDEX || - param_val.vu8 > SSS_FW_CFG_MAX_INDEX) { - sdk_err(hwdev->dev_hdl, "Firmware cfg id out of range [1,8]\n"); - NL_SET_ERR_MSG_MOD(ext_ack, "Firmware cfg id out of range [1,8]\n"); - return -ERANGE; - } - - return 0; -} - -static const struct devlink_param g_devlink_param[] = { - DEVLINK_PARAM_DRIVER(SSS_DEVLINK_PARAM_ID_ACTIVATE_FW, - "activate_fw", DEVLINK_PARAM_TYPE_U8, - BIT(DEVLINK_PARAM_CMODE_PERMANENT), - sss_devlink_get_activate_fw_config, - sss_devlink_set_activate_fw_config, - sss_devlink_validate_firmware_config), - DEVLINK_PARAM_DRIVER(SSS_DEVLINK_PARAM_ID_SWITCH_CFG, - "switch_cfg", DEVLINK_PARAM_TYPE_U8, - BIT(DEVLINK_PARAM_CMODE_PERMANENT), - sss_devlink_get_switch_config, - sss_devlink_set_switch_config, - sss_devlink_validate_firmware_config), -}; - -int sss_init_devlink(struct sss_hwdev *hwdev) -{ - int ret; - struct devlink *link = NULL; - struct pci_dev *pdev = hwdev->pcidev_hdl; - -#ifdef HAS_DEVLINK_ALLOC_SETS_DEV - link = devlink_alloc(&g_devlink_ops, sizeof(struct sss_devlink), &pdev->dev); -#else - link = devlink_alloc(&g_devlink_ops, sizeof(struct sss_devlink)); -#endif - if (!link) { - sdk_err(hwdev->dev_hdl, "Fail to alloc devlink\n"); - return -ENOMEM; - } - - hwdev->devlink_dev = devlink_priv(link); - hwdev->devlink_dev->hwdev = hwdev; - hwdev->devlink_dev->switch_cfg_id = SSS_FW_CFG_DEFAULT_INDEX; - hwdev->devlink_dev->active_cfg_id = SSS_FW_CFG_DEFAULT_INDEX; - -#ifdef REGISTER_DEVLINK_PARAMETER_PREFERRED - ret = devlink_params_register(link, g_devlink_param, - ARRAY_SIZE(g_devlink_param)); - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to register devlink param\n"); - goto register_err; - } -#endif - -#ifdef NO_DEVLINK_REGISTER_SETS_DEV -#ifdef DEVLINK_REGISTER_RETURN_VOID - devlink_register(link); - ret = 0; -#else - ret = devlink_register(link); -#endif - -#else - ret = devlink_register(link, &pdev->dev); -#endif - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to register devlink\n"); -#ifdef REGISTER_DEVLINK_PARAMETER_PREFERRED - devlink_params_unregister(link, g_devlink_param, - ARRAY_SIZE(g_devlink_param)); -#endif - goto register_err; - } - -#ifndef REGISTER_DEVLINK_PARAMETER_PREFERRED - ret = devlink_params_register(link, g_devlink_param, - ARRAY_SIZE(g_devlink_param)); - if (ret != 0) { - sdk_err(hwdev->dev_hdl, "Fail to register devlink param\n"); - goto register_param_err; - } -#endif - devlink_params_publish(link); - - return 0; - -#ifndef REGISTER_DEVLINK_PARAMETER_PREFERRED -register_param_err: - devlink_unregister(link); -#endif - -register_err: - devlink_free(link); - - return -EFAULT; -} - -void sss_deinit_devlink(struct sss_hwdev *hwdev) -{ - struct devlink *link = priv_to_devlink(hwdev->devlink_dev); - - devlink_params_unpublish(link); - devlink_params_unregister(link, g_devlink_param, - ARRAY_SIZE(g_devlink_param)); - devlink_unregister(link); - devlink_free(link); -} -#endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_linux_kernel.h b/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_linux_kernel.h deleted file mode 100644 index db51ee285e38e2e89648d9196c76a5a0363dd540..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/mk/replace/sss_linux_kernel.h +++ /dev/null @@ -1,423 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright(c) 2021 3snic Technologies Co., Ltd */ - -#ifndef SSS_LINUX_KERNEL_H_ -#define SSS_LINUX_KERNEL_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* UTS_RELEASE is in a different header starting in kernel 2.6.18 */ -#ifndef UTS_RELEASE -/* utsrelease.h changed locations in 2.6.33 */ -#if (KERNEL_VERSION(2, 6, 33) > LINUX_VERSION_CODE) -#include -#else -#include -#endif -#endif - -#ifndef NETIF_F_SCTP_CSUM -#define NETIF_F_SCTP_CSUM 0 -#endif - -#ifndef __GFP_COLD -#define __GFP_COLD 0 -#endif - -#ifndef __GFP_COMP -#define __GFP_COMP 0 -#endif - -/* ************************************************************************ */ -#if (KERNEL_VERSION(2, 6, 22) <= LINUX_VERSION_CODE) -#define ETH_TYPE_TRANS_SETS_DEV -#define HAVE_NETDEV_STATS_IN_NETDEV -#endif /* >= 2.6.22 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(2, 6, 34) <= LINUX_VERSION_CODE) -#ifndef HAVE_SET_RX_MODE -#define HAVE_SET_RX_MODE -#endif -#define HAVE_INET6_IFADDR_LIST -#endif /* >= 2.6.34 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(2, 6, 36) <= LINUX_VERSION_CODE) -#define HAVE_NDO_GET_STATS64 -#endif /* >= 2.6.36 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(2, 6, 39) <= LINUX_VERSION_CODE) -#ifndef HAVE_MQPRIO -#define HAVE_MQPRIO -#endif -#ifndef HAVE_SETUP_TC -#define HAVE_SETUP_TC -#endif - -#ifndef HAVE_NDO_SET_FEATURES -#define HAVE_NDO_SET_FEATURES -#endif -#define HAVE_IRQ_AFFINITY_NOTIFY -#endif /* >= 2.6.39 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(2, 6, 40) <= LINUX_VERSION_CODE) -#define HAVE_ETHTOOL_SET_PHYS_ID -#endif /* >= 2.6.40 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 0, 0) <= LINUX_VERSION_CODE) -#define HAVE_NETDEV_WANTED_FEAUTES -#endif /* >= 3.0.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 2, 0) <= LINUX_VERSION_CODE) -#ifndef HAVE_PCI_DEV_FLAGS_ASSIGNED -#define HAVE_PCI_DEV_FLAGS_ASSIGNED -#define HAVE_VF_SPOOFCHK_CONFIGURE -#endif -#ifndef HAVE_SKB_L4_RXHASH -#define HAVE_SKB_L4_RXHASH -#endif -#endif /* >= 3.2.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 3, 0) <= LINUX_VERSION_CODE) -#define HAVE_ETHTOOL_GRXFHINDIR_SIZE -#define HAVE_INT_NDO_VLAN_RX_ADD_VID -#ifdef ETHTOOL_SRXNTUPLE -#undef ETHTOOL_SRXNTUPLE -#endif -#endif /* >= 3.3.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 4, 0) <= LINUX_VERSION_CODE) -#define _kc_kmap_atomic(page) kmap_atomic(page) -#define _kc_kunmap_atomic(addr) kunmap_atomic(addr) -#endif /* >= 3.4.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 5, 0) <= LINUX_VERSION_CODE) -#include -#define HAVE_FDB_OPS -#define HAVE_ETHTOOL_GET_TS_INFO -#endif /* >= 3.5.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 7, 0) <= LINUX_VERSION_CODE) -#define HAVE_NAPI_GRO_FLUSH_OLD -#endif /* >= 3.7.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 8, 0) <= LINUX_VERSION_CODE) -#ifndef HAVE_SRIOV_CONFIGURE -#define HAVE_SRIOV_CONFIGURE -#endif -#endif /* >= 3.8.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 10, 0) <= LINUX_VERSION_CODE) -#define HAVE_ENCAP_TSO_OFFLOAD -#define HAVE_SKB_INNER_NETWORK_HEADER -#endif /* >= 3.10.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 11, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SET_VF_LINK_STATE -#define HAVE_SKB_INNER_PROTOCOL -#define HAVE_MPLS_FEATURES -#endif /* >= 3.11.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 13, 0) <= LINUX_VERSION_CODE) -#define HAVE_VXLAN_CHECKS -#define HAVE_NDO_SELECT_QUEUE_ACCEL - -#define HAVE_NET_GET_RANDOM_ONCE -#define HAVE_HWMON_DEVICE_REGISTER_WITH_GROUPS -#endif /* >= 3.13.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SELECT_QUEUE_ACCEL_FALLBACK -#endif /* >= 3.14.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SET_VF_MIN_MAX_TX_RATE -#define HAVE_VLAN_FIND_DEV_DEEP_RCU -#endif /* >= 3.16.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 18, 0) <= LINUX_VERSION_CODE) -#define HAVE_SKBUFF_CSUM_LEVEL -#define HAVE_MULTI_VLAN_OFFLOAD_EN -#define HAVE_ETH_GET_HEADLEN_FUNC -#endif /* >= 3.18.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 19, 0) <= LINUX_VERSION_CODE) -#define HAVE_RXFH_HASHFUNC -#endif /* >= 3.19.0 */ - -/****************************************************************/ -#if (KERNEL_VERSION(4, 4, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SET_VF_TRUST -#endif /* >= 4.4.0 */ - -/* ************************************************************** */ -#if (KERNEL_VERSION(4, 6, 0) <= LINUX_VERSION_CODE) -#include -#endif /* >= 4.6.0 */ - -/* ************************************************************** */ -#if (KERNEL_VERSION(4, 8, 0) <= LINUX_VERSION_CODE) -#define HAVE_IO_MAP_WC_SIZE -#endif /* >= 4.8.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 10, 0) <= LINUX_VERSION_CODE) -#define HAVE_NETDEVICE_MIN_MAX_MTU -#endif /* >= 4.10.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 11, 0) <= LINUX_VERSION_CODE) -#define HAVE_VOID_NDO_GET_STATS64 -#define HAVE_VM_OPS_FAULT_NO_VMA -#endif /* >= 4.11.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 13, 0) <= LINUX_VERSION_CODE) -#define HAVE_HWTSTAMP_FILTER_NTP_ALL -#define HAVE_NDO_SETUP_TC_ADM_INDEX -#define HAVE_PCI_ERROR_HANDLER_RESET_PREPARE -#define HAVE_PTP_CLOCK_DO_AUX_WORK -#endif /* >= 4.13.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 14, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV -#define HAVE_XDP_SUPPORT -#endif /* >= 4.14.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 15, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_BPF_NETDEV_BPF -#define HAVE_TIMER_SETUP -#define HAVE_XDP_DATA_META -#endif /* >= 4.15.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(4, 19, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SELECT_QUEUE_SB_DEV -#endif /* >= 4.19.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 0, 0) <= LINUX_VERSION_CODE) -#define dev_open(x) dev_open(x, NULL) -#define HAVE_NEW_ETHTOOL_LINK_SETTINGS_ONLY - -#ifndef get_ds -#define get_ds() (KERNEL_DS) -#endif - -#ifndef dma_zalloc_coherent -#define dma_zalloc_coherent(d, s, h, f) _sss_nic_dma_zalloc_coherent(d, s, h, f) -static inline void *_sss_nic_dma_zalloc_coherent(struct device *dev, - size_t size, dma_addr_t *dma_handle, gfp_t gfp) -{ - /* Above kernel 5.0, fixed up all remaining architectures - * to zero the memory in dma_alloc_coherent, and made - * dma_zalloc_coherent a no-op wrapper around dma_alloc_coherent, - * which fixes all of the above issues. - */ - return dma_alloc_coherent(dev, size, dma_handle, gfp); -} -#endif - -#if (KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE) -struct timeval { - __kernel_old_time_t tv_sec; /* seconds */ - __kernel_suseconds_t tv_usec; /* microseconds */ -}; -#endif - -#ifndef do_gettimeofday -#define do_gettimeofday(time) _kc_do_gettimeofday(time) -static inline void _kc_do_gettimeofday(struct timeval *tv) -{ - struct timespec64 ts; - - ktime_get_real_ts64(&ts); - tv->tv_sec = ts.tv_sec; - tv->tv_usec = ts.tv_nsec / NSEC_PER_USEC; -} -#endif - -#endif /* >= 5.0.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 2, 0) <= LINUX_VERSION_CODE) -#define HAVE_NDO_SELECT_QUEUE_SB_DEV_ONLY -#define ETH_GET_HEADLEN_NEED_DEV -#endif /* >= 5.2.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 4, 0) <= LINUX_VERSION_CODE) -#ifndef FIELD_SIZEOF -#define FIELD_SIZEOF(t, f) (sizeof(((t *)0)->f)) -#endif -#endif /* >= 5.4.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 5, 0) <= LINUX_VERSION_CODE) -#define HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif /* >= 5.5.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE) -#ifndef rtc_time_to_tm -#define rtc_time_to_tm rtc_time64_to_tm -#endif -#define HAVE_NDO_TX_TIMEOUT_TXQ -#endif /* >= 5.6.0 */ - -/*****************************************************************************/ -#if (KERNEL_VERSION(5, 7, 0) <= LINUX_VERSION_CODE) -#define SUPPORTED_COALESCE_PARAMS - -#ifndef pci_cleanup_aer_uncorrect_error_status -#define pci_cleanup_aer_uncorrect_error_status pci_aer_clear_nonfatal_status -#endif -#endif /* >= 5.7.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE) -#define HAVE_XDP_FRAME_SZ -#endif /* >= 5.9.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(5, 10, 0) > LINUX_VERSION_CODE) -#define HAVE_DEVLINK_FW_FILE_NAME_PARAM -#endif /* < 5.10.0 */ - -#if (KERNEL_VERSION(5, 11, 0) > LINUX_VERSION_CODE) -#define HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#endif /* < 5.11.0 */ - -/* ************************************************************************ */ -#if (KERNEL_VERSION(3, 10, 0) <= LINUX_VERSION_CODE) -#define HAVE_ENCAPSULATION_TSO -#endif /* >= 3.10.0 */ - -#if (KERNEL_VERSION(3, 8, 0) <= LINUX_VERSION_CODE) -#define HAVE_ENCAPSULATION_CSUM -#endif /* >= 3.8.0 */ - -#ifndef eth_zero_addr -static inline void __kc_eth_zero_addr(u8 *addr) -{ - memset(addr, 0x00, ETH_ALEN); -} - -#define eth_zero_addr(_addr) __kc_eth_zero_addr(_addr) -#endif - -#ifndef netdev_hw_addr_list_for_each -#define netdev_hw_addr_list_for_each(ha, l) \ - list_for_each_entry(ha, &(l)->list, list) -#endif - -#define spin_lock_deinit(lock) - -#define destroy_work(work) - -#ifndef HAVE_TIMER_SETUP -void initialize_timer(const void *adapter_hdl, struct timer_list *timer); -#endif - -#define nicif_err(priv, type, dev, fmt, args...) \ - netif_level(err, priv, type, dev, "[NIC]" fmt, ##args) -#define nicif_warn(priv, type, dev, fmt, args...) \ - netif_level(warn, priv, type, dev, "[NIC]" fmt, ##args) -#define nicif_notice(priv, type, dev, fmt, args...) \ - netif_level(notice, priv, type, dev, "[NIC]" fmt, ##args) -#define nicif_info(priv, type, dev, fmt, args...) \ - netif_level(info, priv, type, dev, "[NIC]" fmt, ##args) -#define nicif_dbg(priv, type, dev, fmt, args...) \ - netif_level(dbg, priv, type, dev, "[NIC]" fmt, ##args) - -#define destroy_completion(completion) -#define sema_deinit(lock) -#define mutex_deinit(lock) -#define rwlock_deinit(lock) - -#define tasklet_state(tasklet) ((tasklet)->state) - -#ifndef hash_init -#define HASH_SIZE(name) (ARRAY_SIZE(name)) - -static inline void __hash_init(struct hlist_head *ht, unsigned int sz) -{ - unsigned int i; - - for (i = 0; i < sz; i++) - INIT_HLIST_HEAD(&ht[i]); -} - -#define hash_init(hashtable) __hash_init(hashtable, HASH_SIZE(hashtable)) -#endif - -#if (KERNEL_VERSION(5, 5, 0) < LINUX_VERSION_CODE) -#ifndef FIELD_SIZEOF -#define FIELD_SIZEOF sizeof_field -#endif - -#ifndef HAVE_TX_TIMEOUT_TXQUEUE -#define HAVE_TX_TIMEOUT_TXQUEUE -#endif -#endif /* > 5.5.0 */ - -#if (KERNEL_VERSION(5, 6, 0) < LINUX_VERSION_CODE) -#define HAS_ETHTOOL_SUPPORTED_COALESCE_PARAMS -#define SSSNIC_SUPPORTED_COALESCE_PARAMS \ - (ETHTOOL_COALESCE_MAX_FRAMES | ETHTOOL_COALESCE_USECS | \ -ETHTOOL_COALESCE_USECS | ETHTOOL_COALESCE_MAX_FRAMES | \ -ETHTOOL_COALESCE_RX_USECS_LOW | ETHTOOL_COALESCE_RX_USECS_HIGH | \ -ETHTOOL_COALESCE_PKT_RATE_LOW | ETHTOOL_COALESCE_PKT_RATE_HIGH | \ -ETHTOOL_COALESCE_USE_ADAPTIVE_RX | \ -ETHTOOL_COALESCE_RX_MAX_FRAMES_LOW | ETHTOOL_COALESCE_RX_MAX_FRAMES_HIGH) -#endif /* > 5.6.0 */ - -#if (KERNEL_VERSION(5,9,0) < LINUX_VERSION_CODE) -#ifndef DEVLINK_HAVE_SUPPORTED_FLASH_UPDATE_PARAMS -#define DEVLINK_HAVE_SUPPORTED_FLASH_UPDATE_PARAMS -#endif -#endif /* > 5.9.0 */ - -#if IS_BUILTIN(CONFIG_NET_DEVLINK) -#ifndef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#define HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#include "sss_kcompat.h" - -#endif -/* ************************************************************************ */ diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat.h index a01bae8a2062b2b6d6e24eb19e87a05cae990b49..9d4c719955bb983298b7b1018e9650c7f17e9b6c 100644 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat.h +++ b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat.h @@ -169,24 +169,29 @@ do { \ #endif /* ************************************************************************ */ -#if (KERNEL_VERSION(5, 15, 0) <= LINUX_VERSION_CODE) +#if (KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE) #ifndef HAVE_ETHTOOL_COALESCE_EXTACK #define HAVE_ETHTOOL_COALESCE_EXTACK #endif -#endif /* 5.15.0 */ +#endif /* 5.10.0 */ /* ************************************************************************ */ -#if (KERNEL_VERSION(5, 17, 0) <= LINUX_VERSION_CODE) +#if (KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE) #ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK #define HAVE_ETHTOOL_RINGPARAM_EXTACK #endif -#endif /* 5.17.0 */ +#endif /* 5.10.0 */ #if (KERNEL_VERSION(5, 10, 0) < LINUX_VERSION_CODE) #define HAVE_DEVLINK_FLASH_UPDATE_PARAMS_FW #endif /* (KERNEL_VERSION(5, 10, 0) < LINUX_VERSION_CODE)*/ +#if (KERNEL_VERSION(4,19,90) >= LINUX_VERSION_CODE) +#define devlink_params_publish(x) do{}while(0) +#define devlink_params_unpublish(x) do{}while(0) +#define DEVLINK_HAS_NO_FLASH_UPDATE +#endif #if (KERNEL_VERSION(5,15,0) <= LINUX_VERSION_CODE) #ifndef HAS_DEVLINK_ALLOC_SETS_DEV @@ -195,9 +200,7 @@ do { \ #ifndef NO_DEVLINK_REGISTER_SETS_DEV #define NO_DEVLINK_REGISTER_SETS_DEV #endif -#endif -#if (KERNEL_VERSION(5,15,0) <= LINUX_VERSION_CODE) #ifndef NO_DEVLINK_PARAMS_PUBLISH #define NO_DEVLINK_PARAMS_PUBLISH #endif @@ -211,6 +214,7 @@ do { \ #ifndef DEVLINK_REGISTER_RETURN_VOID #define DEVLINK_REGISTER_RETURN_VOID + #endif #endif @@ -221,16 +225,26 @@ do { \ #endif #endif -#include "sss_kcompat_openeuler.h" -#include "sss_kcompat_opencloudos.h" -#include "sss_kcompat_tencentos.h" -#include "sss_kcompat_kylin.h" -#include "sss_kcompat_rhel.h" -#include "sss_kcompat_uos.h" -#include "sss_kcompat_bclinux.h" -#include "sss_kcompat_kylinsecos.h" -#include "sss_kcompat_sles.h" -#include "sss_kcompat_fusionos.h" -#include "sss_kcompat_kos.h" +#if (KERNEL_VERSION(6,0,0) <= LINUX_VERSION_CODE) +/* + * NEED_NETIF_NAPI_ADD_NO_WEIGHT + * + * Upstream commit b48b89f9c189 ("net: drop the weight argument from + * netif_napi_add") removes weight argument from function call. + */ +#define NEED_NETIF_NAPI_ADD_NO_WEIGHT +#endif + +#if (KERNEL_VERSION(6, 2, 0) <= LINUX_VERSION_CODE) +#define HAVE_ETHTOOL_RINGPARAM_EXTACK +#endif + +#ifndef HAVE_ETHTOOL_COALESCE_EXTACK +#define HAVE_ETHTOOL_COALESCE_EXTACK +#endif + +#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK +#define HAVE_ETHTOOL_RINGPARAM_EXTACK +#endif #endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_bclinux.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_bclinux.h deleted file mode 100644 index 5a2635d32c124eb51b58dc3f1419232831436a18..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_bclinux.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _SSS_KCOMPAT_BCLINUX_H_ -#define _SSS_KCOMPAT_BCLINUX_H_ -#ifdef __BCLINUX_22_10__ - -#if (KERNEL_VERSION(5, 10, 0) == LINUX_VERSION_CODE) /*for BCLinux 22.10*/ - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#endif - -#endif -#endif - - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_fusionos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_fusionos.h deleted file mode 100644 index 47c6cb8813bdbdf940b657e2ce69a7f686fa6dfa..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_fusionos.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _SSS_KCOMPAT_FUSIONOS_H_ -#define _SSS_KCOMPAT_FUSIONOS_H_ -#ifdef __FUSIONOS__ - -#if (KERNEL_VERSION(4,19,90) == LINUX_VERSION_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#endif -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kos.h deleted file mode 100644 index 9d10b36841d53230208f7c70322fbfd80213d4f0..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kos.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _SSS_KCOMPAT_KOS_H_ -#define _SSS_KCOMPAT_KOS_H_ -#ifdef __KOS__ - -/* for KOS5.8-x86,KOS5.8-x86支持devlink,但不支持flash_update */ -#if (KERNEL_VERSION(4, 19, 91) == LINUX_VERSION_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#endif - -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylin.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylin.h deleted file mode 100644 index 1969085af29e8ec3e67692d86c2c513f313348c0..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylin.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SSS_KCOMPAT_KYLIN_H_ -#define SSS_KCOMPAT_KYLIN_H_ -#ifdef __KYLIN__ - - -#ifdef __KYLIN_V10_SP3__ - -/* arm版kylin k10 V3不支持devlink升级firmware */ -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif - -/* 这个宏可以帮助确保正确地计算出头部长度,这样就可以为每个接收到的以太网帧分配适当的内存空间 */ -#ifndef ETH_GET_HEADLEN_NEED_DEV -#define ETH_GET_HEADLEN_NEED_DEV -#endif - -/* kylin V10 SP3中已经有skb_frag_off_add函数,需要undef掉 */ -#ifdef skb_frag_off_add -#undef skb_frag_off_add -#endif - -#endif - - -#endif -#endif \ No newline at end of file diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylinsecos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylinsecos.h deleted file mode 100644 index 5e3207863f27caf79fe3855091e0352b306d43b7..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_kylinsecos.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _SSS_KCOMPAT_KYLINSECOS_H_ -#define _SSS_KCOMPAT_KYLINSECOS_H_ - -#ifdef __KYLINSECOS__ -#if (KERNEL_VERSION(5, 10, 0) == LINUX_VERSION_CODE) /*for kylinSecOs 3.5.1*/ - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -#endif -#endif - -#endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_opencloudos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_opencloudos.h deleted file mode 100644 index 2cc8121b1be8c4a03b3ac92fc8db29b4c6896aec..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_opencloudos.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _SSSNIC_KCOMPAT_OPENCLOUDOS_H_ -#define _SSSNIC_KCOMPAT_OPENCLOUDOS_H_ - -#ifdef __OPENCLOUDOS__ - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -/* for opencloudos-8.6 */ - -#endif - -#endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_openeuler.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_openeuler.h deleted file mode 100644 index ba16bf8c992b5152e69a91b153704a3dec26c26c..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_openeuler.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _SSSNIC_KCOMPAT_OPENEULER_H_ -#define _SSSNIC_KCOMPAT_OPENEULER_H_ -#ifdef __OPENEULER__ -#if (KERNEL_VERSION(5, 10, 0) == LINUX_VERSION_CODE) /*for openeuler 22.03 lts*/ - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -#endif /*(KERNEL_VERSION(5, 10, 0)*/ - -#if (KERNEL_VERSION(4, 19, 90) == LINUX_VERSION_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#endif /*__OPENEULER__*/ -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_oracle.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_oracle.h deleted file mode 100644 index 711e123a42494199642f5740fb0d20f5168b3e18..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_oracle.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SSS_KCOMPAT_ORACLE_H_ -#define SSS_KCOMPAT_ORACLE_H_ -#ifdef __ORACLE__ - -#ifdef __ORACLE_78__ /* for ol7.8 */ -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#if defined(__ORACLE_85__) || defined(__ORACLE_86__) -#ifdef pci_cleanup_aer_uncorrect_error_status -#undef pci_cleanup_aer_uncorrect_error_status -#endif -#define pci_cleanup_aer_uncorrect_error_status pci_aer_clear_nonfatal_status -#endif - -#endif -#endif \ No newline at end of file diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_rhel.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_rhel.h deleted file mode 100644 index eb5a4009e6ecc7e5af26b099d901bf94220da859..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_rhel.h +++ /dev/null @@ -1,263 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright(c) 2022 3SNIC Co., Ltd */ - -#ifndef __SSS_KCOMPAT_RHEL_H_ -#define __SSS_KCOMPAT_RHEL_H_ - -#ifdef RHEL_RELEASE_CODE - -#ifndef RHEL_RELEASE_VERSION -#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) -#endif - -#if (RHEL_RELEASE_VERSION(7, 6) == RHEL_RELEASE_CODE) || \ - (RHEL_RELEASE_VERSION(7, 8) == RHEL_RELEASE_CODE) || \ - (RHEL_RELEASE_VERSION(7, 9) == RHEL_RELEASE_CODE) -#include -#endif - -#if (RHEL_RELEASE_VERSION(9, 1) == RHEL_RELEASE_CODE) -#include -#endif - -#if (KERNEL_VERSION(3, 10, 0) <= LINUX_VERSION_CODE) -#if ((RHEL_RELEASE_VERSION(7, 0) <= RHEL_RELEASE_CODE) && \ - (RHEL_RELEASE_VERSION(8, 0) > RHEL_RELEASE_CODE)) -#define HAVE_RHEL7_PCI_DRIVER_RH -#if (RHEL_RELEASE_VERSION(7, 2) <= RHEL_RELEASE_CODE) -#define HAVE_RHEL7_PCI_RESET_NOTIFY -#endif /* RHEL >= 7.2 */ -#if (RHEL_RELEASE_VERSION(7, 3) <= RHEL_RELEASE_CODE) -#define HAVE_GENEVE_RX_OFFLOAD -#if !defined(HAVE_UDP_ENC_TUNNEL) && IS_ENABLED(CONFIG_GENEVE) -#define HAVE_UDP_ENC_TUNNEL -#endif -#ifdef ETHTOOL_GLINKSETTINGS -/* pay attention pangea platform when use this micro */ -#define HAVE_ETHTOOL_25G_BITS -#endif /* ETHTOOL_GLINKSETTINGS */ -#endif /* RHEL >= 7.3 */ - -/* new hooks added to net_device_ops_extended in RHEL7.4 */ -#if (RHEL_RELEASE_VERSION(7, 4) <= RHEL_RELEASE_CODE) -#define HAVE_RHEL7_NETDEV_OPS_EXT_NDO_UDP_TUNNEL -#define HAVE_UDP_ENC_RX_OFFLOAD -#endif /* RHEL >= 7.4 */ - -#if (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE) -#define HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV -#endif /* RHEL > 7.5 */ - -#endif /* RHEL >= 7.0 && RHEL < 8.0 */ -#endif /* >= 3.10.0 */ - -#if (KERNEL_VERSION(3, 11, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(6, 6) <= RHEL_RELEASE_CODE) -#define HAVE_NDO_SET_VF_LINK_STATE -#endif -#if (RHEL_RELEASE_VERSION(7, 2) < RHEL_RELEASE_CODE) -#define HAVE_NDO_SELECT_QUEUE_ACCEL_FALLBACK -#endif -#if (RHEL_RELEASE_VERSION(7, 3) <= RHEL_RELEASE_CODE) -#define HAVE_RHEL7_NET_DEVICE_OPS_EXT -#endif -#if (RHEL_RELEASE_VERSION(7, 4) <= RHEL_RELEASE_CODE) -#define HAVE_RHEL7_NETDEV_OPS_EXT_NDO_SET_VF_VLAN -#endif -#if (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE) -#define HAVE_RHEL7_NETDEV_OPS_EXT_NDO_SETUP_TC -#define HAVE_RHEL7_NETDEV_OPS_EXT_NDO_CHANGE_MTU -#endif -#endif /* > 3.11.0 */ - -#if (KERNEL_VERSION(3, 16, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 1) < RHEL_RELEASE_CODE) -#define HAVE_NDO_SET_VF_MIN_MAX_TX_RATE -#endif -#if (RHEL_RELEASE_VERSION(7, 4) <= RHEL_RELEASE_CODE) -#define HAVE_VLAN_FIND_DEV_DEEP_RCU -#endif -#endif /* < 3.16.0 */ - -#if (KERNEL_VERSION(3, 18, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 1) < RHEL_RELEASE_CODE) -#define HAVE_MULTI_VLAN_OFFLOAD_EN -#endif - -/* RHEL 7.1 backported csum_level, but SLES 12 and 12-SP1 did not */ -#if RHEL_RELEASE_CODE && (RHEL_RELEASE_VERSION(7, 1) <= RHEL_RELEASE_CODE) -#define HAVE_SKBUFF_CSUM_LEVEL -#endif /* >= RH 7.1 */ -#endif - -#if (KERNEL_VERSION(3, 19, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 1) < RHEL_RELEASE_CODE) -#define HAVE_RXFH_HASHFUNC -#endif /* RHEL > 7.1 */ -#endif /* < 3.19.0 */ - -#if (KERNEL_VERSION(4, 4, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 3) <= RHEL_RELEASE_CODE) -#define HAVE_NDO_SET_VF_TRUST -#endif /* (RHEL_RELEASE >= 7.3) */ -#endif /* 4.4.0 */ - -#if (KERNEL_VERSION(4, 8, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 4) <= RHEL_RELEASE_CODE) -#define HAVE_IO_MAP_WC_SIZE -#endif -#endif /* 4.8 */ - -#if (KERNEL_VERSION(4, 10, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE) -#define HAVE_NETDEVICE_EXTENDED_MIN_MAX_MTU -#endif -#endif /* 4.10.0 */ - -#if (KERNEL_VERSION(4, 11, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(7, 5) <= RHEL_RELEASE_CODE) -#define HAVE_VOID_NDO_GET_STATS64 -#endif -#endif /* 4.11.0 */ - -#if (KERNEL_VERSION(4, 18, 0) <= LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(8, 2) <= RHEL_RELEASE_CODE) -#define ETH_GET_HEADLEN_NEED_DEV -#endif -#define HAVE_NDO_SELECT_QUEUE_SB_DEV -#endif/* >= 4.18.0 */ - -#if (KERNEL_VERSION(4, 19, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(8, 0) <= RHEL_RELEASE_CODE) -#define HAVE_NDO_SELECT_QUEUE_SB_DEV -#endif -#endif - -#if (KERNEL_VERSION(5, 0, 0) > LINUX_VERSION_CODE) -#if (RHEL_RELEASE_VERSION(8, 0) <= RHEL_RELEASE_CODE) -#define dev_open(x) dev_open(x, NULL) -#endif -#endif /* >= 5.0.0 */ - -#if (RHEL_RELEASE_VERSION(7, 0) <= RHEL_RELEASE_CODE) -#undef create_singlethread_workqueue -#define create_singlethread_workqueue(name) \ - alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name) - -#ifndef HAVE_VXLAN_RX_OFFLOAD -#define HAVE_VXLAN_RX_OFFLOAD -#endif /* HAVE_VXLAN_RX_OFFLOAD */ - -#if !defined(HAVE_UDP_ENC_TUNNEL) && IS_ENABLED(CONFIG_VXLAN) -#define HAVE_UDP_ENC_TUNNEL -#endif - -#ifndef HAVE_VXLAN_CHECKS -#define HAVE_VXLAN_CHECKS -#endif - -#endif - -#if (RHEL_RELEASE_VERSION(8, 1) == RHEL_RELEASE_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -//bclinux22.10 4.19.0-348.20.20.oe2203.bclinux.aarch64使用RHEL8.5,需要使用如下宏 -#if (RHEL_RELEASE_VERSION(8, 2) < RHEL_RELEASE_CODE) -#ifdef pci_cleanup_aer_uncorrect_error_status -#undef pci_cleanup_aer_uncorrect_error_status -#endif -#define pci_cleanup_aer_uncorrect_error_status pci_aer_clear_nonfatal_status -#ifndef HAVE_TX_TIMEOUT_TXQUEUE -#define HAVE_TX_TIMEOUT_TXQUEUE -#endif -#endif - -#if (RHEL_RELEASE_VERSION(8, 3) < RHEL_RELEASE_CODE) -#ifdef HAVE_XDP_QUERY_PROG -#undef HAVE_XDP_QUERY_PROG -#endif -#endif /*(RHEL_RELEASE_VERSION(8, 3) < RHEL_RELEASE_CODE)*/ - -#if (RHEL_RELEASE_VERSION(8, 5) == RHEL_RELEASE_CODE) -#ifdef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#undef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#endif -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#undef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#endif -#endif - -#if (RHEL_RELEASE_VERSION(8, 6) == RHEL_RELEASE_CODE) - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifdef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#undef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#endif -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#undef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#endif - -#endif /*(RHEL_RELEASE_VERSION(8, 6) == RHEL_RELEASE_CODE)*/ - -#if (RHEL_RELEASE_VERSION(9, 0) <= RHEL_RELEASE_CODE) -#ifndef HAS_DEVLINK_ALLOC_SETS_DEV -#define HAS_DEVLINK_ALLOC_SETS_DEV -#endif -#ifndef NO_DEVLINK_REGISTER_SETS_DEV -#define NO_DEVLINK_REGISTER_SETS_DEV -#endif -#ifndef NO_DEVLINK_PARAMS_PUBLISH -#define NO_DEVLINK_PARAMS_PUBLISH -#endif -#define devlink_params_publish(x) do{}while(0) -#define devlink_params_unpublish(x) do{}while(0) - -#ifndef REGISTER_DEVLINK_PARAMETER_PREFERRED -#define REGISTER_DEVLINK_PARAMETER_PREFERRED -#endif - -//backport对所有rhel系统放开,编译发现只有9.0以上版本不定义报错 -#ifndef DEVLINK_REGISTER_RETURN_VOID -#define DEVLINK_REGISTER_RETURN_VOID -#endif - -#endif /*(RHEL_RELEASE_VERSION(9, 0) <= RHEL_RELEASE_CODE)*/ - -#if (RHEL_RELEASE_VERSION(9, 1) == RHEL_RELEASE_CODE) -#ifndef pci_pool -#define pci_pool dma_pool -#endif - -#ifndef pci_pool_alloc -#define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle) -#endif - -#ifndef pci_pool_free -#define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr) -#endif - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -#ifndef HAVE_BFP_WARN_NETDEV_PARAM -#define HAVE_BFP_WARN_NETDEV_PARAM -#endif -#endif/*(RHEL_RELEASE_VERSION(9, 1) == RHEL_RELEASE_CODE)*/ - -#else /* not define RHEL_RELEASE_CODE */ -#include "sss_kcompat_oracle.h" -#endif /* #ifdef RHEL_RELEASE_CODE */ - -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_sles.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_sles.h deleted file mode 100644 index a5b6f1b16942fb63888146c7b6accd3e90703b9f..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_sles.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef _SSS_KCOMPAT_SLES_H_ -#define _SSS_KCOMPAT_SLES_H_ - -#ifdef __SLES__ - -#include "linux/suse_version.h" - -#if (SUSE_PRODUCT(1, 12, 5, 0) <= SUSE_PRODUCT_CODE) -#ifndef HAVE_NDO_SELECT_QUEUE_SB_DEV -#define HAVE_NDO_SELECT_QUEUE_SB_DEV -#endif -#endif - -#if (SUSE_PRODUCT(1, 15, 2, 0) <= SUSE_PRODUCT_CODE) -#ifndef pci_cleanup_aer_uncorrect_error_status -#define pci_cleanup_aer_uncorrect_error_status pci_aer_clear_nonfatal_status -#endif - -#ifdef skb_frag_off_add -#undef skb_frag_off_add -#endif -#endif - -#if (SUSE_PRODUCT(1, 15, 3, 0) <= SUSE_PRODUCT_CODE) -#if (SUSE_PRODUCT(1, 15, 3, 0) == SUSE_PRODUCT_CODE) -#ifdef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#undef HAVE_DEVLINK_FW_FILE_NAME_PARAM -#endif - -#ifndef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#define HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#endif -#endif /* SUSE_PRODUCT(1, 15, 3, 0) == SUSE_PRODUCT_CODE */ - -#ifndef HAVE_TX_TIMEOUT_TXQUEUE -#define HAVE_TX_TIMEOUT_TXQUEUE -#endif -#endif /* SUSE_PRODUCT(1, 15, 3, 0) <= SUSE_PRODUCT_CODE */ - -#if (SUSE_PRODUCT(1, 15, 4, 0) <= SUSE_PRODUCT_CODE) -#ifndef HAS_DEVLINK_ALLOC_SETS_DEV -#define HAS_DEVLINK_ALLOC_SETS_DEV -#endif - -#ifndef NO_DEVLINK_REGISTER_SETS_DEV -#define NO_DEVLINK_REGISTER_SETS_DEV -#endif - -#ifndef DEVLINK_REGISTER_RETURN_VOID -#define DEVLINK_REGISTER_RETURN_VOID -#endif - -#define devlink_params_publish(x) do{}while(0) -#define devlink_params_unpublish(x) do{}while(0) - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif -#endif/* SUSE_PRODUCT(1, 15, 4, 0) <= SUSE_PRODUCT_CODE */ - -#if (SUSE_PRODUCT(1, 2, 0, 0) == SUSE_PRODUCT_CODE) /*for sles euler 2.0*/ -#ifdef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#undef HAVE_DEVLINK_FW_FILE_NAME_MEMBER -#endif - -/* sles euler2.0 devlink升级firmware时需要通知用户空间开始和结束状态 */ -#ifndef DEVLINK_FLASH_UPDATE_NEED_TO_NOTIFY -#define DEVLINK_FLASH_UPDATE_NEED_TO_NOTIFY -#endif - -#ifndef HAVE_BFP_WARN_NETDEV_PARAM -#define HAVE_BFP_WARN_NETDEV_PARAM -#endif - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif -#endif /* SUSE_PRODUCT(1, 2, 0, 0) == SUSE_PRODUCT_CODE */ - -#endif /* __SLES__ */ - -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_tencentos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_tencentos.h deleted file mode 100644 index fdd757b8c8b5849c05987cdb511ef26cf128ebe7..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_tencentos.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _SSSNIC_KCOMPAT_TENCENTOS_H_ -#define _SSSNIC_KCOMPAT_TENCENTOS_H_ - -#ifdef __TENCENTOS__ - -#ifndef HAVE_ETHTOOL_COALESCE_EXTACK -#define HAVE_ETHTOOL_COALESCE_EXTACK -#endif - -#ifndef HAVE_ETHTOOL_RINGPARAM_EXTACK -#define HAVE_ETHTOOL_RINGPARAM_EXTACK -#endif - -/* for tencentos 2.4 2209.1 / 3.1 2209.3 */ - -#endif - -#endif diff --git a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_uos.h b/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_uos.h deleted file mode 100644 index b5f4689a6e15e3119b3521c6abdf9c78f4560fd9..0000000000000000000000000000000000000000 --- a/drivers/net/ethernet/3snic/sssnic/kcompat/sss_kcompat_uos.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _SSS_KCOMPAT_UOS_H_ -#define _SSS_KCOMPAT_UOS_H_ -#ifdef __UOS__ - -#if IS_ENABLED(CONFIG_NET_DEVLINK) -#ifndef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#define HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#if (KERNEL_VERSION(4, 19, 0) == LINUX_VERSION_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - -#if (KERNEL_VERSION(4, 19, 90) == LINUX_VERSION_CODE) -#ifdef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#undef HAVE_DEVLINK_FLASH_UPDATE_PARAMS -#endif -#endif - - -#endif - -#endif - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/Makefile b/drivers/net/ethernet/3snic/sssnic/nic/Makefile index 74cae8244ab4fd16f25eb500f4779b777789ce40..d6ce4949361487d1136fb241392d3d33f01dd575 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/Makefile +++ b/drivers/net/ethernet/3snic/sssnic/nic/Makefile @@ -1,23 +1,66 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2023 3SNIC -# - EXPORT_SYMBOL := true +TAGET_KMOD_NAME ?= sssnic + +ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw +ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw/include +ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/hw/tool + ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include/hw ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/include/kernel ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/nic ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/nic/include -ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/kcompat ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/nic/tool +ccflags-y += -I$(srctree)/drivers/net/ethernet/3snic/sssnic/kcompat -#ccflags-y += -Werror - -include $(srctree)/drivers/net/ethernet/3snic/sssnic/kcompat/mk/kcompat.mk +ccflags-y += -Werror +ccflags-y += -Wno-implicit-fallthrough +SYS_TIME=2025-06-06_11:46:03 +ccflags-y += -D __TIME_STR__=\"$(SYS_TIME)\" -obj-$(CONFIG_SSSNIC) += sssnic.o -sssnic-y := sss_nic_main.o \ +obj-m += $(TAGET_KMOD_NAME).o +$(TAGET_KMOD_NAME)-objs := ../hw/sss_hw_main.o \ + ../hw/sss_pci.o \ + ../hw/sss_pci_probe.o \ + ../hw/sss_pci_remove.o \ + ../hw/sss_pci_shutdown.o \ + ../hw/sss_pci_error.o \ + ../hw/sss_pci_sriov.o \ + ../hw/sss_pci_global.o \ + ../hw/sss_adapter_mgmt.o \ + ../hw/sss_hwdev_api.o \ + ../hw/sss_hwdev_cap.o \ + ../hw/sss_hwdev_export.o \ + ../hw/sss_hwdev_link.o \ + ../hw/sss_hwdev_init.o \ + ../hw/sss_hwdev_mgmt_info.o \ + ../hw/sss_hwdev_mgmt_channel.o \ + ../hw/sss_hwdev_io_flush.o \ + ../hw/sss_hwif_init.o \ + ../hw/sss_hwif_api.o \ + ../hw/sss_hwif_export.o \ + ../hw/sss_hwif_eq.o \ + ../hw/sss_hwif_mgmt_init.o \ + ../hw/sss_hwif_ceq.o \ + ../hw/sss_hwif_aeq.o \ + ../hw/sss_hwif_adm.o \ + ../hw/sss_hwif_adm_init.o \ + ../hw/sss_hwif_mbx.o \ + ../hw/sss_hwif_mbx_init.o \ + ../hw/sss_hwif_mbx_export.o \ + ../hw/sss_hwif_irq.o \ + ../hw/sss_hwif_ctrlq.o \ + ../hw/sss_hwif_ctrlq_init.o \ + ../hw/sss_hwif_ctrlq_export.o \ + ../hw/sss_common.o \ + ../hw/sss_wq.o \ + ../kcompat/sss_kcompat.o \ + ../hw/tool/sss_tool_chip.o \ + ../hw/tool/sss_tool_main.o \ + ../hw/tool/sss_tool_sdk.o \ + ../hw/tool/sss_tool_sm.o\ + sss_nic_main.o \ ./tool/sss_tool_nic_func.o \ ./tool/sss_tool_nic_dcb.o \ ./tool/sss_tool_nic_phy_attr.o \ diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_cfg.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_cfg.c index 65cb4ac9c8f9f550cd6efd746ce2d087e5691c98..a2745bf8b81986d8c69dd75e19038aee16230548 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_cfg.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_cfg.c @@ -1138,4 +1138,3 @@ int sss_nic_set_pf_rate(struct sss_nic_dev *nic_dev, u8 speed) return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_api.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_api.c index 5012d42415601fe3d388e5b2e3933835f24bc14f..f6a4504824aab2bd48b2ec9b5047a5bd02de7bd4 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_api.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_api.c @@ -219,7 +219,7 @@ int sss_nic_check_coal_param_support(struct net_device *netdev, return -EOPNOTSUPP; } #else - struct ethtool_coalesce tmp_coal = {0}; + struct ethtool_coalesce tmp_coal = {0}; tmp_coal.cmd = coal->cmd; tmp_coal.rx_coalesce_usecs = coal->rx_coalesce_usecs; @@ -718,7 +718,7 @@ static struct sk_buff *sss_nic_alloc_loop_skb(struct sss_nic_dev *nic_dev) if (!skb) return skb; - eth_hdr = __skb_put(skb, ETH_HLEN); + eth_hdr = (struct ethhdr *)__skb_put(skb, ETH_HLEN); eth_hdr->h_proto = htons(ETH_P_ARP); ether_addr_copy(eth_hdr->h_dest, nic_dev->netdev->dev_addr); eth_zero_addr(eth_hdr->h_source); diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_stats_api.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_stats_api.c index 91de82b658fa4664b23aae9f323256dc103e934c..68afda3d0a9efcf45cbc8483eafd237ae137c29b 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_stats_api.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ethtool_stats_api.c @@ -761,7 +761,7 @@ void sss_nic_add_ethtool_link_mode(struct sss_nic_cmd_link_settings *cmd, u32 i; for (i = 0; i < SSSNIC_LINK_MODE_MAX_NUMBERS; i++) { - if (test_bit(i, (unsigned long *)&hw_mode)) + if (hw_mode & BIT(i)) SSSNIC_ETHTOOL_ADD_SPPED_LINK_MODE(cmd, i, op); } } @@ -1055,4 +1055,3 @@ void sss_nic_get_io_stats(const struct sss_nic_dev *nic_dev, void *stats) &nic_dev->rq_desc_group[qid].stats, qid); } } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_event.h b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_event.h index 2b7fb586426ad1f04e49e063ebc6205559df3da7..7c1e37929dc9faae0e65883f6f93a3e8b4f603c8 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_event.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_event.h @@ -56,4 +56,3 @@ void sss_nic_pf_event_handler(void *hwdev, u16 cmd, void *buf_out, u16 *out_size); #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_filter.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_filter.c index 272f74f3e4d23f249d63ea678119c3c319e52f56..f397aac0ed2d12a3d42a3045bdab43973efd1e40 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_filter.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_filter.c @@ -493,4 +493,3 @@ void sss_nic_set_rx_mode_work(struct work_struct *work) test_bit(SSSNIC_PROMISC_ON, &nic_dev->rx_mode)) sss_nic_sync_rx_mode_to_hw(nic_dev, allmulti_enter, promisc_enter); } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_irq.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_irq.c index d875b45732c4420a6033078927696ab036870cab..16a3d41d40e7222df95b5fa4563f90f34e43456d 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_irq.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_irq.c @@ -46,7 +46,11 @@ static int sss_nic_napi_poll(struct napi_struct *napi, int budget) static void sss_nic_add_napi(struct sss_nic_irq_cfg *nic_irq, int budget) { +#ifdef NEED_NETIF_NAPI_ADD_NO_WEIGHT + netif_napi_add_weight(nic_irq->netdev, &nic_irq->napi, sss_nic_napi_poll, budget); +#else netif_napi_add(nic_irq->netdev, &nic_irq->napi, sss_nic_napi_poll, budget); +#endif napi_enable(&nic_irq->napi); } diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c index 22968d4c6e245efd675d73f5cb1749047c2c3df7..bd83585e2cb5b02f6acd8df9f0c5327e48713241 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c @@ -18,9 +18,11 @@ #include #include #include +#include #include "sss_kernel.h" #include "sss_hw.h" +#include "sss_hwdev.h" #include "sss_nic_cfg.h" #include "sss_nic_vf_cfg.h" #include "sss_nic_mag_cfg.h" @@ -42,7 +44,6 @@ #include "sss_nic_event.h" #include "sss_tool_nic_func.h" - #define DEFAULT_POLL_BUDGET 64 static u32 poll_budget = DEFAULT_POLL_BUDGET; module_param(poll_budget, uint, 0444); @@ -158,12 +159,15 @@ static void sss_nic_unregister_notifier(struct sss_nic_dev *nic_dev) static u16 sss_nic_get_vlan_depth(struct net_device *dev) { u16 vlan_depth = 0; + +#if IS_ENABLED(CONFIG_VLAN_8021Q) struct net_device *vlan_dev = dev; do { vlan_depth++; vlan_dev = vlan_dev_priv(vlan_dev)->real_dev; } while (is_vlan_dev(vlan_dev)); +#endif return vlan_depth; } @@ -417,7 +421,7 @@ static int sss_nic_init_mac_addr(struct sss_nic_dev *nic_dev) int ret; struct net_device *netdev = nic_dev->netdev; - ret = sss_nic_get_default_mac(nic_dev, netdev->dev_addr); + ret = sss_nic_get_default_mac(nic_dev, (u8 *)(netdev->dev_addr)); if (ret != 0) { nic_err(nic_dev->dev_hdl, "Fail to get MAC address\n"); return ret; @@ -1038,9 +1042,16 @@ static __init int sss_nic_init(void) pr_info("%s - version %s\n", SSSNIC_DRV_DESC, SSSNIC_DRV_VERSION); + ret = sss_init_pci(); + if (ret) { + pr_err("SDK init failed.\n"); + return ret; + } + ret = sss_register_uld(SSS_SERVICE_TYPE_NIC, &g_nic_uld_info); if (ret != 0) { pr_err("Fail to register sss_nic uld\n"); + sss_exit_pci(); return ret; } @@ -1050,6 +1061,7 @@ static __init int sss_nic_init(void) static __exit void sss_nic_exit(void) { sss_unregister_uld(SSS_SERVICE_TYPE_NIC); + sss_exit_pci(); } #ifndef _LLT_TEST_ diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_netdev_ops.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_netdev_ops.c index 9f623f4b1ab3777b96281547c5add436a4c4bcde..9d684f03b079d16b361fd0ea958298310f0bd887 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_netdev_ops.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_netdev_ops.c @@ -286,7 +286,7 @@ static int sss_nic_ndo_set_mac_address(struct net_device *netdev, void *mac_addr if (ret) return ret; - ether_addr_copy(netdev->dev_addr, set_addr->sa_data); + ether_addr_copy((u8*)(netdev->dev_addr), set_addr->sa_data); nicif_info(nic_dev, drv, netdev, "Success to set new mac addr: %pM\n", set_addr->sa_data); diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.c index d1713b35b7d05915b4745fda5d2c9a6ecfacae03..57ed7a38345cc7ce42f8432fd637953a3e107fdb 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.c @@ -837,11 +837,20 @@ u32 sss_nic_get_rxfh_key_size(struct net_device *netdev) } #ifdef HAVE_RXFH_HASHFUNC +#ifdef HAVE_RXFH_PARAM +int sss_nic_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh_param) +#else int sss_nic_get_rxfh(struct net_device *netdev, u32 *indir, u8 *hash_key, u8 *hfunc) +#endif #else int sss_nic_get_rxfh(struct net_device *netdev, u32 *indir, u8 *hash_key) #endif { +#ifdef HAVE_RXFH_PARAM + u8 *hfunc = &rxfh_param->hfunc; + u32 *indir = rxfh_param->indir; + u8 *hash_key = rxfh_param->key; +#endif struct sss_nic_dev *nic_dev = netdev_priv(netdev); int ret = 0; @@ -869,8 +878,13 @@ int sss_nic_get_rxfh(struct net_device *netdev, u32 *indir, u8 *hash_key) } #ifdef HAVE_RXFH_HASHFUNC +#ifdef HAVE_RXFH_PARAM +int sss_nic_set_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh_param, + struct netlink_ext_ack *extack) +#else int sss_nic_set_rxfh(struct net_device *netdev, const u32 *indir, const u8 *hash_key, const u8 hfunc) +#endif #else #ifdef HAVE_RXFH_NONCONST int sss_nic_set_rxfh(struct net_device *netdev, u32 *indir, u8 *hash_key) @@ -879,6 +893,12 @@ int sss_nic_set_rxfh(struct net_device *netdev, const u32 *indir, const u8 *hash #endif #endif /* HAVE_RXFH_HASHFUNC */ { +#ifdef HAVE_RXFH_PARAM + u8 hfunc = rxfh_param->hfunc; + u32 *indir = rxfh_param->indir; + u8 *hash_key = rxfh_param->key; +#endif + struct sss_nic_dev *nic_dev = netdev_priv(netdev); int ret = 0; @@ -1000,4 +1020,3 @@ int sss_nic_set_rxfh_indir(struct net_device *netdev, const u32 *indir) } #endif /* defined(ETHTOOL_GRSSH) && defined(ETHTOOL_SRSSH) */ - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.h b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.h index 93b7dee9995182ea3b7af9656b9aff184f9a4ad0..b1bdc124cca7aa2a30f4363f3f846f84139b8af1 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss.h @@ -38,14 +38,23 @@ u32 sss_nic_get_rxfh_indir_size(struct net_device *netdev); u32 sss_nic_get_rxfh_key_size(struct net_device *netdev); #ifdef HAVE_RXFH_HASHFUNC +#ifdef HAVE_RXFH_PARAM +int sss_nic_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh_param); +#else int sss_nic_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key, u8 *hfunc); +#endif #else /* HAVE_RXFH_HASHFUNC */ int sss_nic_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key); #endif /* HAVE_RXFH_HASHFUNC */ #ifdef HAVE_RXFH_HASHFUNC +#ifdef HAVE_RXFH_PARAM +int sss_nic_set_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh_param, + struct netlink_ext_ack *extack); +#else int sss_nic_set_rxfh(struct net_device *netdev, const u32 *indir, const u8 *key, const u8 hfunc); +#endif #else #ifdef HAVE_RXFH_NONCONST int sss_nic_set_rxfh(struct net_device *netdev, u32 *indir, u8 *key); diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss_cfg.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss_cfg.c index a52e7a45f574a71bcdef3579510046d8e22c8e73..a8c3a4a447d17dc23c2589315e604fffbed15582 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss_cfg.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rss_cfg.c @@ -339,4 +339,3 @@ int sss_nic_init_hw_rss(struct sss_nic_dev *nic_dev, u16 qp_num) return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx.c index df2073b50dba21c9e771dce022ba83479bfa5f0b..e1f4d36e29bd147781384602090b44c802b69456 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "sss_kernel.h" #include "sss_hw.h" diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c index d2b759f613ac67379f6ee10ae95f4f735c8a0c1c..d3b2e523afb98d9b4e0ec89d81b3f9b7481a44c6 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c @@ -286,4 +286,3 @@ void sss_nic_reset_rx_rss(struct net_device *netdev) if (test_bit(SSSNIC_RSS_ENABLE, &nic_dev->flags) != 0) sss_nic_reset_rss_cfg(nic_dev); } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c index 0efd6ce87d636de6fac02a39743a798771c0d579..4674cc5dd5a95a3feae5d36588a6874d6357f0b6 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c @@ -241,4 +241,3 @@ void sss_nic_rq_watchdog_handler(struct work_struct *work) free_rq_info: kfree(check_info); } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx.c index 021054c1cf844b58c416fb98a8dbb805e26f3dbc..a3a1ad4fbc20900fd01795e45b6f59ed49440e3c 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx.c @@ -866,4 +866,3 @@ int sss_nic_tx_poll(struct sss_nic_sq_desc *sq_desc, int budget) return pkt_cnt; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c index a5dc709fa5bd4f113785177e49c88c48f88b49a5..c6f6b95b814fbefe711c517a957a250bda251dbe 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c @@ -208,4 +208,3 @@ void sss_nic_flush_all_sq(struct sss_nic_dev *nic_dev) nicif_err(nic_dev, drv, nic_dev->netdev, "Fail to stop sq%u\n", qid); } } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic.h b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic.h index b91ecd8e7e3a1632e1b868d15fe8d3e56fb479b9..4aa2a9667556324851855cd7f632f2aaa59e2483 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic.h @@ -109,4 +109,3 @@ struct sss_tool_qos_cos_cfg { }; #endif /* SSS_TOOL_NIC_H */ - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.c b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.c index a49d6bc8b3ba2ab2fa7b3c12f70b16db86e9453a..938ac63f1cd9e4c8c6ab64384e1494389d932dc1 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.c @@ -455,4 +455,3 @@ int sss_tool_dcb_mt_hw_qos_get(struct sss_nic_dev *nic_dev, const void *in_buf, return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.h b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.h index c6f6f3c34925f6d3d18a78e8681d56fa92e5813c..1fc71d5a65f8f48442dc45f5e0559a7e8965fcc8 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_dcb.h @@ -14,4 +14,3 @@ int sss_tool_dcb_mt_hw_qos_get(struct sss_nic_dev *nic_dev, const void *in_buf, u32 in_len, void *out_buf, u32 *out_len); #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_func.c b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_func.c index a6cab3164dcbaa57ccb7bb4ab685142a9be2457b..95f4c99236c8d671b24e608b7434e257b7347aa4 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_func.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_func.c @@ -36,8 +36,8 @@ static int sss_tool_get_nic_version(void *out_buf, const u32 *out_len) return -EINVAL; } - ret = snprintf(ver_info->ver, sizeof(ver_info->ver), "%s", - SSSNIC_DRV_VERSION); + ret = snprintf(ver_info->ver, sizeof(ver_info->ver), "%s %s", + SSSNIC_DRV_VERSION, __TIME_STR__); if (ret < 0) return -EINVAL; @@ -106,4 +106,3 @@ int sss_tool_ioctl(void *uld_dev, u32 cmd, const void *in_buf, return sss_tool_cmd_to_nic_driver(uld_dev, cmd, in_buf, in_len, out_buf, out_len); } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.c b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.c index d79be081f5cc7e8a75045b6769b0e28578198067..1302e135a0dd996a325db0b361b3732f004ff0a2 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.c @@ -413,4 +413,3 @@ int sss_tool_get_xsfp_info(struct sss_nic_dev *nic_dev, const void *in_buf, return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.h b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.h index 5deb5348182947ff447b71d70421879a95cce41b..cbf4fbdce4f7e606c510075a3d2307f69e4b1b7b 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_phy_attr.h @@ -35,4 +35,3 @@ int sss_tool_get_xsfp_info(struct sss_nic_dev *nic_dev, const void *in_buf, u32 in_len, void *out_buf, u32 *out_len); #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.c b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.c index 1dae86be7bdf74010ded851aacd19264ba31de1e..6267b7665609b6b32261773ed2edeb4b46c65910 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.c @@ -321,4 +321,3 @@ int sss_tool_get_inter_num(struct sss_nic_dev *nic_dev, const void *in_buf, return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.h b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.h index 3c7f10c64462560dcb34ace695400c41c4500f7e..c7b674751ecd78d12e915c1e25a8adcf2048aef7 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_qp_info.h @@ -26,4 +26,3 @@ int sss_tool_get_inter_num(struct sss_nic_dev *nic_dev, const void *in_buf, u32 in_len, void *out_buf, u32 *out_len); #endif - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.c b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.c index 55c4880a0759bb33a9cb14ad15e5f3d691592250..ab06d6eea4248d071a3338a2abbf800f92d5cab2 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.c +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.c @@ -134,4 +134,3 @@ int sss_tool_get_sset_stats(struct sss_nic_dev *nic_dev, const void *in_buf, return 0; } - diff --git a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.h b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.h index 1a686e5712be6bc8cf8863e2ba6979c60e61c464..1c37214deeea3e3d58e9b5cd55f54eb302ecd0b4 100644 --- a/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.h +++ b/drivers/net/ethernet/3snic/sssnic/nic/tool/sss_tool_nic_stats.h @@ -14,4 +14,3 @@ int sss_tool_get_sset_stats(struct sss_nic_dev *nic_dev, const void *in_buf, u32 in_len, void *out_buf, u32 *out_len); #endif -