diff --git a/sdk-6.5.24/systems/bde/linux/include/linux-bde.h b/sdk-6.5.24/systems/bde/linux/include/linux-bde.h index 8672d6031..405eb7752 100755 --- a/sdk-6.5.24/systems/bde/linux/include/linux-bde.h +++ b/sdk-6.5.24/systems/bde/linux/include/linux-bde.h @@ -60,21 +60,6 @@ #ifdef __KERNEL__ #include -/* Key stone and Raptor has 2.6.21 but don't have definition */ -#if defined(KEYSTONE) || defined(RAPTOR) -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21)) - #ifdef PHYS_ADDRS_ARE_64BITS - typedef u64 phys_addr_t; - #else - typedef u32 phys_addr_t; - #endif - #endif -#endif -#endif - - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)) -#define LINUX_BDE_DMA_DEVICE_SUPPORT #endif #define LINUX_KERNEL_BDE_NAME "linux-kernel-bde" @@ -256,7 +241,7 @@ extern int lkbde_cpu_pci_register(int d); #ifdef BCM_SAND_SUPPORT #include -#if defined(__DUNE_LINUX_BCM_CPU_PCIE__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if defined(__DUNE_LINUX_BCM_CPU_PCIE__) #ifndef _SIMPLE_MEMORY_ALLOCATION_ #define _SIMPLE_MEMORY_ALLOCATION_ 1 #endif diff --git a/sdk-6.5.24/systems/bde/linux/include/linux_dma.h b/sdk-6.5.24/systems/bde/linux/include/linux_dma.h index e94172ae2..70f4d0c82 100755 --- a/sdk-6.5.24/systems/bde/linux/include/linux_dma.h +++ b/sdk-6.5.24/systems/bde/linux/include/linux_dma.h @@ -35,10 +35,6 @@ #endif /* CONFIG_NONCOHERENT_IO || CONFIG_DMA_NONCOHERENT */ #endif /* __mips__ */ -#if defined(BCM958525) && (LINUX_VERSION_CODE <= KERNEL_VERSION(3,6,5)) -#define REMAP_DMA_NONCACHED -#endif - #ifndef DMA_BIT_MASK #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) #endif diff --git a/sdk-6.5.24/systems/bde/linux/kernel/linux-kernel-bde.c b/sdk-6.5.24/systems/bde/linux/kernel/linux-kernel-bde.c index f07ddbfe6..4ebd1b26c 100644 --- a/sdk-6.5.24/systems/bde/linux/kernel/linux-kernel-bde.c +++ b/sdk-6.5.24/systems/bde/linux/kernel/linux-kernel-bde.c @@ -56,14 +56,6 @@ #define PCI_USE_INT_INTX (0) #define PCI_USE_INT_MSI (1) #define PCI_USE_INT_MSIX (2) -#ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,110)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) -#define msix_table_size(flags) ((flags & PCI_MSIX_FLAGS_QSIZE) + 1) -#endif -#define msi_control_reg(base) (base + PCI_MSI_FLAGS) -#endif -#endif MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("Kernel BDE"); MODULE_LICENSE("GPL"); @@ -77,19 +69,19 @@ MODULE_LICENSE("GPL"); #define BDE_PCIE_MAXPAYLOAD_DEFAULT 256 #endif int maxpayload = BDE_PCIE_MAXPAYLOAD_DEFAULT; -LKM_MOD_PARAM(maxpayload, "i", int, 0); +module_param(maxpayload, int, 0); MODULE_PARM_DESC(maxpayload, "Limit maximum payload size and request size on PCIe devices"); /* Use MSI or MSIX interrupts */ int usemsi = -1; -LKM_MOD_PARAM(usemsi, "i", int, 0); +module_param(usemsi, int, 0); MODULE_PARM_DESC(usemsi, "Use MSI/ MSIX interrupts if supported by kernel"); /* Ignore all recognized devices (for debug purposes) */ int nodevices; -LKM_MOD_PARAM(nodevices, "i", int, 0); +module_param(nodevices, int, 0); MODULE_PARM_DESC(nodevices, "Ignore all recognized devices (default no)"); @@ -107,15 +99,6 @@ int msixcnt = 1; #define PCI_DEVICE_ID_PLX_9056 0x9056 #endif -/* For 2.4.x kernel support */ -#ifndef IRQF_SHARED -#define IRQF_SHARED SA_SHIRQ -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) -typedef unsigned long resource_size_t; -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) */ - #ifdef BCM_ICS #define BCM_ICS_CMIC_BASE 0x08000000 #else @@ -123,8 +106,8 @@ typedef unsigned long resource_size_t; /* Force interrupt line */ static int forceirq = -1; static uint32_t forceirqubm = 0xffffffff; -LKM_MOD_PARAM(forceirq, "i", int, 0); -LKM_MOD_PARAM(forceirqubm, "i", uint, 0); +module_param(forceirq, int, 0); +module_param(forceirqubm, uint, 0); MODULE_PARM_DESC(forceirq, "Override IRQ line assigned by boot loader"); MODULE_PARM_DESC(forceirqubm, @@ -132,13 +115,13 @@ MODULE_PARM_DESC(forceirqubm, /* Create SPI slave device (cannot be probed) */ static uint32_t spi_devid = 0; -LKM_MOD_PARAM(spi_devid, "i", uint, 0); +module_param(spi_devid, uint, 0); MODULE_PARM_DESC(spi_devid, "Create SPI slave device using this device ID"); /* Select SPI device revision (cannot be probed) */ static uint32_t spi_revid = 1; -LKM_MOD_PARAM(spi_revid, "i", uint, 0); +module_param(spi_revid, uint, 0); MODULE_PARM_DESC(spi_revid, "Select device revision for SPI slave device"); @@ -146,46 +129,27 @@ MODULE_PARM_DESC(spi_revid, /* Debug output */ static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Set debug level (default 0"); /* Use high memory for DMA */ /* module param for probing EB devices. */ static char *eb_bus; -LKM_MOD_PARAM(eb_bus, "s", charp, 0); +module_param(eb_bus, charp, 0); MODULE_PARM_DESC(eb_bus, "List of EB devices on platform. Input format (BA=%x IRQ=%d RD16=%d WR16=%d"); #ifdef KEYSTONE /* Force SPI Frequency */ static int spifreq = 0; -LKM_MOD_PARAM(spifreq, "i", int, 0); +module_param(spifreq, int, 0); MODULE_PARM_DESC(spifreq, "Force SPI Frequency for Keystone CPU (0 for default frequency)"); #endif /* Compatibility */ -#ifdef LKM_2_4 -#define _ISR_RET void -#define _ISR_PARAMS(_i,_d,_r) int _i, void *_d, struct pt_regs *_r -#define IRQ_NONE -#define IRQ_HANDLED -#define SYNC_IRQ(_i) synchronize_irq() -#else /* LKM_2_6 */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) -#define _ISR_RET irqreturn_t -#else -#define _ISR_RET int -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) -#define _ISR_PARAMS(_i,_d,_r) int _i, void *_d -#else -#define _ISR_PARAMS(_i,_d,_r) int _i, void *_d, struct pt_regs *_r -typedef irqreturn_t (*irq_handler_t)(int _i, void *_d, struct pt_regs *_r); -#endif -#define SYNC_IRQ(_i) synchronize_irq(_i) char * ___strtok; char * strtok(char * s,const char * ct) { @@ -205,9 +169,8 @@ char * strtok(char * s,const char * ct) ___strtok = send; return (sbegin); } -LKM_EXPORT_SYM(___strtok); -LKM_EXPORT_SYM(strtok); -#endif /* LKM_2_x */ +EXPORT_SYMBOL(___strtok); +EXPORT_SYMBOL(strtok); /* PCIe capabilities */ #ifndef PCI_CAP_ID_EXP @@ -235,12 +198,6 @@ LKM_EXPORT_SYM(strtok); #define PCI_EXT_CAP_ID_VNDR 0x0b #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) -#define PCI_FIND_DEV(_d, _v, _fr) pci_find_device(_d, _v, _fr) -#else -#define PCI_FIND_DEV(_d, _v, _fr) pci_get_device(_d, _v, _fr) -#endif - #if defined(CONFIG_RESOURCES_64BIT) || defined(CONFIG_PHYS_ADDR_T_64BIT) #define PHYS_ADDR_IS_64BIT #endif @@ -287,9 +244,7 @@ typedef struct bde_ctrl_s { int bus_no; int be_pio; int use_msi; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) struct msix_entry *entries; -#endif int msix_cnt; union { /* Linux PCI device pointer */ @@ -301,9 +256,7 @@ typedef struct bde_ctrl_s { #define pci_device dev._pci_dev #define spi_device dev._spi_dev -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT struct device *dma_dev; -#endif struct memwin_s iowin[BDE_NUM_IOWIN_MAX]; @@ -810,9 +763,7 @@ iproc_cmicd_probe(struct platform_device *pldev) ctrl->isr = NULL; ctrl ->isr_data = NULL; -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT ctrl->dma_dev = &pldev->dev; -#endif /* Let's boogie */ _bde_add_device(); @@ -1873,9 +1824,9 @@ p2p_bridge(void) uint8 bridge_ctrl; uint8 rc_index; - if ((dev = PCI_FIND_DEV(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { if (debug >= 1) gprintk("fixing up PCI-to-PCI bridge\n"); /* Adjust command register */ @@ -1899,7 +1850,7 @@ p2p_bridge(void) /* Avoid DMA data corruption */ if (dev->vendor == HINT_HB4_VENDOR_ID) { /* Fix for HiNT bridge and BCM4704 DMA problem */ - if ((dev = PCI_FIND_DEV(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { /* Reset PrefetchEn (PE) */ pci_write_config_dword(dev, 0x8c, 1); if (debug >= 1) { @@ -1909,7 +1860,7 @@ p2p_bridge(void) } } /* Enable fast back-to-back read/write */ - if ((dev = PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { pci_read_config_word(dev, PCI_COMMAND, &cmd); cmd |= PCI_COMMAND_FAST_BACK; pci_read_config_byte(dev, PCI_BRIDGE_CONTROL, &bridge_ctrl); @@ -1922,19 +1873,19 @@ p2p_bridge(void) for(rc_index = 0; rc_index < MAX_RC_NUM; rc_index++) { dev_on_rc = pci_do_rc_dev_find(rc_index); if (dev_on_rc != NULL ) { - dev = PCI_FIND_DEV(0x184e, 0x1004, NULL); + dev = pci_get_device(0x184e, 0x1004, NULL); if (dev != NULL ) { pci_write_config_dword(dev,0x78,MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } } } - if ((dev = PCI_FIND_DEV(0x14e4, 0xb634, NULL)) != NULL) { + if ((dev = pci_get_device(0x14e4, 0xb634, NULL)) != NULL) { pci_write_config_dword(dev,0x78,MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(PCI_VNDID_PERICOM, PCI_DEVID_PI7C9X130, NULL)) != NULL) { + if ((dev = pci_get_device(PCI_VNDID_PERICOM, PCI_DEVID_PI7C9X130, NULL)) != NULL) { /* * Configure the PCIE cap: Max payload size: 256, Max Read * Request size: 256, disabling relax ordering. @@ -1944,8 +1895,8 @@ p2p_bridge(void) MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(FSL_VENDOR_ID, FSL8548PCIE_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(FSL_VENDOR_ID, FSL2020EPCIE_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(FSL_VENDOR_ID, FSL8548PCIE_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(FSL_VENDOR_ID, FSL2020EPCIE_DEVICE_ID, NULL)) != NULL) { /* * Configure the PCIE cap: Max payload size: 256, Max Read * Request size: 256, disabling relax ordering. @@ -1954,8 +1905,8 @@ p2p_bridge(void) pci_write_config_dword(dev, FSL8548PCIE_DEV_CTRL_REG, MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(BCM4716_VENDOR_ID, BCM4716PCIE_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(BCM4716_VENDOR_ID, BCM4716PCIE_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, NULL)) != NULL) { uint32 tmp, maxpayld, device_bmp=0, mask; unsigned long addr; uint16 tmp16, tmp161; @@ -1964,7 +1915,7 @@ p2p_bridge(void) pcie0 = dev; bus0 = dev->bus->number; - if ((pcie1 = PCI_FIND_DEV(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, pcie0)) != NULL) { + if ((pcie1 = pci_get_device(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, pcie0)) != NULL) { bus1 = pcie1->bus->number; } @@ -2061,7 +2012,7 @@ p2p_bridge(void) * The device supports 128, 512, and 1024 max payload sizes. */ dev = NULL; - while ((dev = PCI_FIND_DEV(PCI_VENDOR_ID_PLX, PCI_ANY_ID, dev)) != NULL) { + while ((dev = pci_get_device(PCI_VENDOR_ID_PLX, PCI_ANY_ID, dev)) != NULL) { if ((dev->device == PLX_PEX8608_DEV_ID) || (dev->device == PLX_PEX8617_DEV_ID)) { uint16 ctrl_reg; @@ -2160,60 +2111,14 @@ _device_rescan_validate(struct pci_dev *dev) #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) -/** - * _pci_msix_table_size - return the number of device's MSI-X table entries - * @dev: pointer to the pci_dev data structure of MSI-X device function - */ -static int -_pci_msix_table_size(struct pci_dev *dev) -{ - int nr_entries = 0; - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,110)) - u16 control; - int pos; - - pos = pci_find_capability(dev, PCI_CAP_ID_MSIX); - if (pos) { - pci_read_config_word(dev, msi_control_reg(pos), &control); - nr_entries = msix_table_size(control); - } -#else -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) -{ - /* Pass large entry value to enable MSIX to get # of entires */ - struct msix_entry *entries; - entries = kmalloc(sizeof(struct msix_entry) * - PCI_MSIX_FLAGS_QSIZE, GFP_KERNEL); - if (entries != NULL) { - nr_entries = pci_enable_msix(dev, - entries, PCI_MSIX_FLAGS_QSIZE); - if (nr_entries < 0) { - nr_entries = 0; - } - pci_disable_msix(dev); - kfree(entries); - } -} -#else - nr_entries = pci_msix_vec_count(dev); -#endif -#endif - - return nr_entries; -} -#endif - static int _msi_connect(bde_ctrl_t *ctrl) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) int ret; if (ctrl->use_msi == PCI_USE_INT_MSIX) { int i; - ret = _pci_msix_table_size(ctrl->pci_device); + ret = pci_msix_vec_count(ctrl->pci_device); if (ret == 0) { /* MSI-X failed */ gprintk("MSI-X not supported.\n"); @@ -2231,23 +2136,8 @@ _msi_connect(bde_ctrl_t *ctrl) gprintk("MSIX Table size = %d\n", ctrl->msix_cnt); for (i = 0; i < ctrl->msix_cnt; i++) ctrl->entries[i].entry = i; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) ret = pci_enable_msix_range(ctrl->pci_device, ctrl->entries, ctrl->msix_cnt, ctrl->msix_cnt); -#else - ret = pci_enable_msix(ctrl->pci_device, - ctrl->entries, ctrl->msix_cnt); - if (ret > 0) { - /* Not enough vectors available , Retry MSI-X */ - gprintk("Retrying with MSI-X interrupts = %d\n", ret); - ctrl->msix_cnt = ret; - msixcnt = ret; - ret = pci_enable_msix(ctrl->pci_device, - ctrl->entries, ctrl->msix_cnt); - if (ret != 0) - goto er_intx_free; - } -#endif if (ret < 0) { /* Error */ goto er_intx_free; @@ -2256,7 +2146,6 @@ _msi_connect(bde_ctrl_t *ctrl) return 0; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { if (pci_enable_msi(ctrl->pci_device) == 0) { @@ -2272,11 +2161,9 @@ _msi_connect(bde_ctrl_t *ctrl) goto er_intx; } return 0; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) er_intx_free: gprintk("Failed to enable MSI-X interrupts = %d\n", ret); kfree(ctrl->entries); -#endif er_intx: return -1; @@ -2285,7 +2172,6 @@ _msi_connect(bde_ctrl_t *ctrl) static int _msi_disconnect(bde_ctrl_t *ctrl) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { if (ctrl->msix_cnt) { pci_disable_msix(ctrl->pci_device); @@ -2294,7 +2180,6 @@ _msi_disconnect(bde_ctrl_t *ctrl) ctrl->msix_cnt = 0; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { pci_disable_msi(ctrl->pci_device); } else { @@ -2331,16 +2216,14 @@ config_pci_intr_type(struct pci_dev *dev, bde_ctrl_t *ctrl, int iproc) } } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { /* check for support MSIX vector */ - ret = _pci_msix_table_size(ctrl->pci_device); + ret = pci_msix_vec_count(ctrl->pci_device); if (ret == 0) { gprintk("%s: Zero MSIX table size\n", __func__); ctrl->use_msi = PCI_USE_INT_MSI; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { /* check for support MSI vector */ @@ -2589,7 +2472,7 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } #endif - if ((PCI_FIND_DEV(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { + if ((pci_get_device(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { /* * Decrease the PCI bus priority for the CPU for better overall * system performance. This change significantly reduces the @@ -2607,23 +2490,23 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } } - if ((PCI_FIND_DEV(SIBYTE_PCI_VENDOR_ID, SIBYTE_PCI_DEVICE_ID, NULL)) != NULL) { + if ((pci_get_device(SIBYTE_PCI_VENDOR_ID, SIBYTE_PCI_DEVICE_ID, NULL)) != NULL) { /* * The BCM91125CPCI CPU boards with a PCI-PCI bridge use the same * interrupt line for all switch ships behind the bridge. */ - if (PCI_FIND_DEV(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL) || - PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL) || - PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) { + if (pci_get_device(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL) || + pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL) || + pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) { /* * By default we try to guess the correct IRQ based on the design. * For now we only look at the bridge vendor, but it may be necessary * to look at the switch chip configuration as well. */ if (forceirq == -1) { - if ((PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) || + if ((pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) || ((dev->device == BCM5674_DEVICE_ID) && - (PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)))) { + (pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)))) { forceirq = 58; } else { forceirq = 56; @@ -2632,9 +2515,9 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } } - if (((PCI_FIND_DEV(BCM58525_PCI_VENDOR_ID, BCM58525_PCI_DEVICE_ID, NULL)) != NULL) || - ((PCI_FIND_DEV(BCM58525_PCI_VENDOR_ID, BCM58522_PCI_DEVICE_ID, NULL)) != NULL) || - ((PCI_FIND_DEV(BCM58712_PCI_VENDOR_ID, BCM58712_PCI_DEVICE_ID, NULL)) != NULL) ) { + if (((pci_get_device(BCM58525_PCI_VENDOR_ID, BCM58525_PCI_DEVICE_ID, NULL)) != NULL) || + ((pci_get_device(BCM58525_PCI_VENDOR_ID, BCM58522_PCI_DEVICE_ID, NULL)) != NULL) || + ((pci_get_device(BCM58712_PCI_VENDOR_ID, BCM58712_PCI_DEVICE_ID, NULL)) != NULL) ) { /* BCM58525/BCM58712 CPU boards support 128 Max payload size */ if (maxpayload && maxpayload != 128) { maxpayload = 128; @@ -2838,9 +2721,7 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT ctrl->dma_dev = &dev->dev; -#endif if (debug >= 2) { gprintk("_pci_probe: configured dev:0x%x rev:0x%x with base_addresses: 0x%lx 0x%lx\n", @@ -2905,14 +2786,12 @@ _pci_remove(struct pci_dev* dev) /* Free our interrupt handler, if we have one */ if (ctrl->isr || ctrl->isr2) { #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi >= PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) free_irq(ctrl->entries[i].vector, ctrl); } else -#endif #endif { free_irq(ctrl->iLine, ctrl); @@ -3145,11 +3024,7 @@ _init(void) if (use_msi == PCI_USE_INT_NONE) { /* Compilation flag determines default value */ #ifdef BDE_LINUX_USE_MSIX_INTERRUPT -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) use_msi = PCI_USE_INT_MSIX; -#else - use_msi = PCI_USE_INT_MSI; -#endif #elif defined(BDE_LINUX_USE_MSI_INTERRUPT) use_msi = PCI_USE_INT_MSI; #else @@ -3659,8 +3534,8 @@ _write(int d, uint32_t addr, uint32_t data) } -static _ISR_RET -_isr(_ISR_PARAMS(irq, dev_id, iregs)) +static irqreturn_t +_isr(int irq, void *dev_id) { bde_ctrl_t *ctrl = (bde_ctrl_t *) dev_id; @@ -3737,7 +3612,6 @@ _interrupt_connect(int d, if(ret != 0) goto msi_exit; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) { @@ -3758,7 +3632,6 @@ _interrupt_connect(int d, } } else -#endif #endif { #if defined(IPROC_CMICD) && defined(CONFIG_OF) @@ -3858,7 +3731,7 @@ _interrupt_disconnect(int d) ctrl->fmask = 0; if (ctrl->isr) { /* Primary handler still active */ - SYNC_IRQ(ctrl->iLine); + synchronize_irq(ctrl->iLine); return 0; } } else { @@ -3869,14 +3742,13 @@ _interrupt_disconnect(int d) ctrl->isr_data = NULL; if (ctrl->isr2) { /* Secondary handler still active */ - SYNC_IRQ(ctrl->iLine); + synchronize_irq(ctrl->iLine); return 0; } } if (isr_active) { #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi >= PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) { @@ -3889,7 +3761,6 @@ _interrupt_disconnect(int d) } else #endif -#endif #if defined(IPROC_CMICD) && defined(CONFIG_OF) if (of_find_compatible_node(NULL, NULL, IPROC_CMICX_COMPATIBLE)) { int i; @@ -4269,7 +4140,7 @@ lkbde_mem_write(int d, uint32 addr, uint32 *buf) *((uint32_t*)full_addr) = *buf; return 0; } -LKM_EXPORT_SYM(lkbde_mem_write); +EXPORT_SYMBOL(lkbde_mem_write); int lkbde_mem_read(int d, uint32 addr, uint32 *buf) @@ -4284,7 +4155,7 @@ lkbde_mem_read(int d, uint32 addr, uint32 *buf) *buf = *((uint32_t*)full_addr); return 0; } -LKM_EXPORT_SYM(lkbde_mem_read); +EXPORT_SYMBOL(lkbde_mem_read); #endif /* BCM_SAND_SUPPORT */ static ibde_t _ibde = { @@ -4479,11 +4350,7 @@ lkbde_get_dma_dev(int d) return NULL; } -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT return (void *)_devices[d].dma_dev; -#else - return (void *)_devices[d].pci_device; -#endif } void * @@ -4665,24 +4532,24 @@ linux_bde_device_bitmap_t* lkbde_get_inst_devs(uint32 inst_id) /* * Export functions */ -LKM_EXPORT_SYM(linux_bde_create); -LKM_EXPORT_SYM(linux_bde_destroy); -LKM_EXPORT_SYM(lkbde_get_dev_phys); -LKM_EXPORT_SYM(lkbde_get_dev_virt); -LKM_EXPORT_SYM(lkbde_get_dev_resource); -LKM_EXPORT_SYM(lkbde_get_hw_dev); -LKM_EXPORT_SYM(lkbde_get_dma_dev); -LKM_EXPORT_SYM(lkbde_irq_mask_set); -LKM_EXPORT_SYM(lkbde_irq_mask_get); -LKM_EXPORT_SYM(lkbde_get_dev_phys_hi); -LKM_EXPORT_SYM(lkbde_dev_state_set); -LKM_EXPORT_SYM(lkbde_dev_state_get); -LKM_EXPORT_SYM(lkbde_dev_instid_set); -LKM_EXPORT_SYM(lkbde_dev_instid_get); +EXPORT_SYMBOL(linux_bde_create); +EXPORT_SYMBOL(linux_bde_destroy); +EXPORT_SYMBOL(lkbde_get_dev_phys); +EXPORT_SYMBOL(lkbde_get_dev_virt); +EXPORT_SYMBOL(lkbde_get_dev_resource); +EXPORT_SYMBOL(lkbde_get_hw_dev); +EXPORT_SYMBOL(lkbde_get_dma_dev); +EXPORT_SYMBOL(lkbde_irq_mask_set); +EXPORT_SYMBOL(lkbde_irq_mask_get); +EXPORT_SYMBOL(lkbde_get_dev_phys_hi); +EXPORT_SYMBOL(lkbde_dev_state_set); +EXPORT_SYMBOL(lkbde_dev_state_get); +EXPORT_SYMBOL(lkbde_dev_instid_set); +EXPORT_SYMBOL(lkbde_dev_instid_get); #ifdef BCM_SAND_SUPPORT -LKM_EXPORT_SYM(lkbde_cpu_write); -LKM_EXPORT_SYM(lkbde_cpu_read); -LKM_EXPORT_SYM(lkbde_cpu_pci_register); +EXPORT_SYMBOL(lkbde_cpu_write); +EXPORT_SYMBOL(lkbde_cpu_read); +EXPORT_SYMBOL(lkbde_cpu_pci_register); #endif -LKM_EXPORT_SYM(lkbde_is_dev_managed_by_instance); -LKM_EXPORT_SYM(lkbde_get_inst_devs); +EXPORT_SYMBOL(lkbde_is_dev_managed_by_instance); +EXPORT_SYMBOL(lkbde_get_inst_devs); diff --git a/sdk-6.5.24/systems/bde/linux/kernel/linux_dma.c b/sdk-6.5.24/systems/bde/linux/kernel/linux_dma.c index 9761b9796..522a5aced 100644 --- a/sdk-6.5.24/systems/bde/linux/kernel/linux_dma.c +++ b/sdk-6.5.24/systems/bde/linux/kernel/linux_dma.c @@ -101,37 +101,10 @@ #endif #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) -#include -#define virt_to_bus virt_to_phys -#define bus_to_virt phys_to_virt -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)) -#define VIRT_TO_PAGE(p) virt_to_page((void*)(p)) -#else -#define VIRT_TO_PAGE(p) virt_to_page((p)) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) -#define BDE_DMA_MAPPING_ERROR(d, p) dma_mapping_error((d),(p)) -#else -#define BDE_DMA_MAPPING_ERROR(d, p) dma_mapping_error((p)) -#endif - #ifndef KMALLOC_MAX_SIZE #define KMALLOC_MAX_SIZE (1UL << (MAX_ORDER - 1 + PAGE_SHIFT)) #endif -/* Compatibility */ -#ifdef LKM_2_4 -#define MEM_MAP_RESERVE mem_map_reserve -#define MEM_MAP_UNRESERVE mem_map_unreserve -#else /* LKM_2_6 */ -#define MEM_MAP_RESERVE SetPageReserved -#define MEM_MAP_UNRESERVE ClearPageReserved -#endif /* LKM_2_x */ - #ifndef GFP_DMA32 #define GFP_DMA32 0 #endif @@ -148,15 +121,9 @@ static int mem_flags = GFP_ATOMIC | GFP_DMA; #endif #ifdef IPROC_CMICD -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) #ifndef COHERENT_ALLOC_USE_DMA_TO_PHYS #define COHERENT_ALLOC_USE_DMA_TO_PHYS 1 #endif -#else -#ifndef COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define COHERENT_ALLOC_PHYS_IS_DMA_ADDR 1 -#endif -#endif #endif /* IPROC_CMICD */ /* @@ -166,24 +133,15 @@ static int mem_flags = GFP_ATOMIC | GFP_DMA; #ifndef COHERENT_ALLOC_USE_DMA_TO_PHYS #define COHERENT_ALLOC_USE_DMA_TO_PHYS 0 #endif -#ifndef COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define COHERENT_ALLOC_PHYS_IS_DMA_ADDR 0 -#endif #if COHERENT_ALLOC_USE_DMA_TO_PHYS -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0)) #include -#else -#include -#endif #endif /* Macro to get the host physical address when using dma_alloc_coherent() */ #if COHERENT_ALLOC_USE_DMA_TO_PHYS #define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) \ ((_dev) ? dma_to_phys((_dev), (_dma_a)) : virt_to_phys(_kvirt_a)) -#elif COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) (_dma_a) #else #define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) (virt_to_phys(_kvirt_a)) #endif @@ -196,24 +154,24 @@ MODULE_PARM_DESC(dma_debug, /* DMA memory pool size */ static char *dmasize; -LKM_MOD_PARAM(dmasize, "s", charp, 0); +module_param(dmasize, charp, 0); MODULE_PARM_DESC(dmasize, "Specify DMA memory size (default 4MB)"); /* Select DMA memory pool allocation method */ static int dmaalloc = ALLOC_METHOD_DEFAULT; -LKM_MOD_PARAM(dmaalloc, "i", int, 0); +module_param(dmaalloc, int, 0); MODULE_PARM_DESC(dmaalloc, "Select DMA memory allocation method"); /* Use high memory for DMA */ static char *himem; -LKM_MOD_PARAM(himem, "s", charp, 0); +module_param(himem, charp, 0); MODULE_PARM_DESC(himem, "Use high memory for DMA (default no)"); /* Physical high memory address to use for DMA */ static char *himemaddr = 0; -LKM_MOD_PARAM(himemaddr, "s", charp, 0); +module_param(himemaddr, charp, 0); MODULE_PARM_DESC(himemaddr, "Physical address to use for high memory DMA"); @@ -516,7 +474,7 @@ _dma_segment_alloc(size_t size, size_t blk_size) for (page_addr = dseg->blk_ptr[i]; page_addr < dseg->blk_ptr[i] + dseg->blk_size; page_addr += PAGE_SIZE) { - MEM_MAP_RESERVE(VIRT_TO_PAGE(page_addr)); + SetPageReserved(virt_to_page((void*)page_addr)); } } else if (dseg->blk_ptr[i]) { dseg->blk_ptr[i] &= ~3; @@ -549,7 +507,7 @@ _dma_segment_free(dma_segment_t *dseg) for (page_addr = dseg->blk_ptr[i]; page_addr < dseg->blk_ptr[i] + dseg->blk_size; page_addr += PAGE_SIZE) { - MEM_MAP_UNRESERVE(VIRT_TO_PAGE(page_addr)); + ClearPageReserved(virt_to_page((void*)page_addr)); } free_pages(dseg->blk_ptr[i], dseg->blk_order); } @@ -676,12 +634,12 @@ _edk_mpool_alloc(int dev_id, size_t size) (unsigned long)size); return; } - cpu_pbase = virt_to_bus(dma_vbase); + cpu_pbase = virt_to_phys(dma_vbase); /* Use dma_map_single to obtain DMA bus address or IOVA if IOMMU is present. */ if (dev) { pbase = dma_map_single(dev, dma_vbase, size, DMA_BIDIRECTIONAL); - if (BDE_DMA_MAPPING_ERROR(dev, pbase)) { + if (dma_mapping_error(dev, pbase)) { gprintk("Failed to map memory at %p for EDK\n", dma_vbase); _pgfree(dma_vbase); dma_vbase = NULL; @@ -977,7 +935,7 @@ void _dma_per_device_init(int dev_index) _dma_pool_alloc_state == DMA_POOL_MAPPED)) { /* Map RAM virtual address space for DMA usage and obtain DMA bus address or IOVA if iommu is present. */ dma_addr = dma_map_single(dev, _dma_vbase, _dma_mem_size, DMA_BIDIRECTIONAL); - if (BDE_DMA_MAPPING_ERROR(dev, dma_addr)) { + if (dma_mapping_error(dev, dma_addr)) { gprintk("Failed to map DMA buffer pool for device %d at kernel_virt:0x%lx\n", dev_index, (unsigned long)_dma_vbase); if (_dma_pool_alloc_state == DMA_POOL_INITIALIZED) { _mpool_free(); @@ -1176,7 +1134,7 @@ _l2p(int d, void *vaddr) return 0; } - return ((sal_paddr_t)virt_to_bus(vaddr)); + return ((sal_paddr_t)virt_to_phys(vaddr)); } void * @@ -1192,7 +1150,7 @@ _p2l(int d, sal_paddr_t paddr) return (void *)(vaddr + (sal_vaddr_t)(paddr - _dma_pbase)); } - return bus_to_virt(paddr); + return phys_to_virt(paddr); } /* @@ -1249,12 +1207,7 @@ _sinval(int d, void *ptr, int length) #if defined(dma_cache_wback_inv) dma_cache_wback_inv((unsigned long)ptr, length); #else -#if defined(IPROC_CMICD) || defined(BCM958525) || (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)) - dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); -#else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); -#endif #endif return 0; } @@ -1265,12 +1218,7 @@ _sflush(int d, void *ptr, int length) #if defined(dma_cache_wback_inv) dma_cache_wback_inv((unsigned long)ptr, length); #else -#if defined(IPROC_CMICD) || defined(BCM958525) || (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)) - dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); -#else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); -#endif #endif return 0; @@ -1309,8 +1257,8 @@ _dma_pprint(struct seq_file *m) */ #ifdef BDE_EDK_SUPPORT -LKM_EXPORT_SYM(lkbde_edk_get_dma_info); +EXPORT_SYMBOL(lkbde_edk_get_dma_info); #endif -LKM_EXPORT_SYM(kmalloc_giant); -LKM_EXPORT_SYM(kfree_giant); -LKM_EXPORT_SYM(lkbde_get_dma_info); +EXPORT_SYMBOL(kmalloc_giant); +EXPORT_SYMBOL(kfree_giant); +EXPORT_SYMBOL(lkbde_get_dma_info); diff --git a/sdk-6.5.24/systems/bde/linux/user/kernel/linux-user-bde.c b/sdk-6.5.24/systems/bde/linux/user/kernel/linux-user-bde.c index 141bd53da..393b537f0 100644 --- a/sdk-6.5.24/systems/bde/linux/user/kernel/linux-user-bde.c +++ b/sdk-6.5.24/systems/bde/linux/user/kernel/linux-user-bde.c @@ -27,9 +27,7 @@ #include #include "linux-user-bde.h" -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) #include -#endif MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("User BDE Helper Module"); @@ -187,23 +185,23 @@ static uint32 *ihost_intr_enable_base = NULL; /* Module parameter for Interruptible timeout */ static int intr_timeout = 0; -LKM_MOD_PARAM(intr_timeout, "i", int, (S_IRUGO | S_IWUSR)); +module_param(intr_timeout, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_timeout, "Interruptible wait timeout in milliseconds for Interrupt to be triggered."); static ulong intr_count = 0; -LKM_MOD_PARAM(intr_count, "intr_count", ulong, (S_IRUGO | S_IWUSR)); +module_param(intr_count, ulong, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_count, "Interrupt count provides information about the number of times the ISR is called."); static ulong intr_timeout_count = 0; -LKM_MOD_PARAM(intr_timeout_count, "intr_timeout_count", ulong, (S_IRUGO | S_IWUSR)); +module_param(intr_timeout_count, ulong, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_timeout_count, "Interrupt timeout count provides information about the number of times the interrupt wait is timeed out."); /* Debug output */ static int debug; -LKM_MOD_PARAM(debug, "i", int, (S_IRUGO | S_IWUSR)); +module_param(debug, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(debug, "Set debug level (default 0)."); diff --git a/sdk-6.5.24/systems/bde/linux/user/linux-user-bde.c b/sdk-6.5.24/systems/bde/linux/user/linux-user-bde.c index 71b5d14fb..5a258c8e5 100644 --- a/sdk-6.5.24/systems/bde/linux/user/linux-user-bde.c +++ b/sdk-6.5.24/systems/bde/linux/user/linux-user-bde.c @@ -65,7 +65,6 @@ extern int bcm_sim_path_get(void); #include #ifdef KEYSTONE -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) #include #include @@ -73,16 +72,13 @@ extern int bcm_sim_path_get(void); #include #define LINUX_SPIDEV_SUPPORT 1 -#else -#define LINUX_SPIDEV_SUPPORT 0 -#endif #else /* !KEYSTONE */ #define LINUX_SPIDEV_SUPPORT 0 #endif /* KEYSTONE */ -#if defined(BCM_ESW_SUPPORT) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) +#if defined(BCM_ESW_SUPPORT) #define CMIC_SPI_SUPPORT 1 #endif #ifndef CMIC_SPI_SUPPORT diff --git a/sdk-6.5.24/systems/linux/kernel/modules/bcm-knet/bcm-knet.c b/sdk-6.5.24/systems/linux/kernel/modules/bcm-knet/bcm-knet.c index 41afce2ae..5914fb348 100755 --- a/sdk-6.5.24/systems/linux/kernel/modules/bcm-knet/bcm-knet.c +++ b/sdk-6.5.24/systems/linux/kernel/modules/bcm-knet/bcm-knet.c @@ -76,97 +76,97 @@ MODULE_DESCRIPTION("Network Device Driver for Broadcom BCM TxRx API"); MODULE_LICENSE("GPL"); static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (default 0)"); static char *mac_addr = NULL; -LKM_MOD_PARAM(mac_addr, "s", charp, 0); +module_param(mac_addr, charp, 0); MODULE_PARM_DESC(mac_addr, "Ethernet MAC address (default 02:10:18:xx:xx:xx)"); static int rx_buffer_size = 9216; -LKM_MOD_PARAM(rx_buffer_size, "i", int, 0); +module_param(rx_buffer_size, int, 0); MODULE_PARM_DESC(rx_buffer_size, "Size of RX packet buffers (default 9216)"); static int default_mtu = 1500; -LKM_MOD_PARAM(default_mtu, "i", int, 0); +module_param(default_mtu, int, 0); MODULE_PARM_DESC(default_mtu, "Default MTU for KNET network interfaces (default 1500)"); static int rx_sync_retry = 1000; -LKM_MOD_PARAM(rx_sync_retry, "i", int, 0); +module_param(rx_sync_retry, int, 0); MODULE_PARM_DESC(rx_sync_retry, "Retries if chain is incomplete on interrupt (default 10)"); static char *base_dev_name = NULL; -LKM_MOD_PARAM(base_dev_name, "s", charp, 0); +module_param(base_dev_name, charp, 0); MODULE_PARM_DESC(base_dev_name, "Base device name (default bcm0, bcm1, etc.)"); static int rcpu_mode = 0; -LKM_MOD_PARAM(rcpu_mode, "i", int, 0); +module_param(rcpu_mode, int, 0); MODULE_PARM_DESC(rcpu_mode, "Enable RCPU encapsulation (default 0)"); static char *rcpu_dmac = NULL; -LKM_MOD_PARAM(rcpu_dmac, "s", charp, 0); +module_param(rcpu_dmac, charp, 0); MODULE_PARM_DESC(rcpu_dmac, "RCPU destination MAC address (by default use L2 destination MAC address)"); static char *rcpu_smac = NULL; -LKM_MOD_PARAM(rcpu_smac, "s", charp, 0); +module_param(rcpu_smac, charp, 0); MODULE_PARM_DESC(rcpu_smac, "RCPU source MAC address (by default use L2 source MAC address)"); static int rcpu_ethertype = 0xde08; -LKM_MOD_PARAM(rcpu_ethertype, "i", int, 0); +module_param(rcpu_ethertype, int, 0); MODULE_PARM_DESC(rcpu_ethertype, "RCPU EtherType (default DE08h)"); static int rcpu_signature = 0; -LKM_MOD_PARAM(rcpu_signature, "i", int, 0); +module_param(rcpu_signature, int, 0); MODULE_PARM_DESC(rcpu_signature, "RCPU Signature (default is PCI device ID)"); static int rcpu_vlan = 1; -LKM_MOD_PARAM(rcpu_vlan, "i", int, 0); +module_param(rcpu_vlan, int, 0); MODULE_PARM_DESC(rcpu_vlan, "RCPU VLAN ID (default 1)"); static int use_rx_skb = 0; -LKM_MOD_PARAM(use_rx_skb, "i", int, 0); +module_param(use_rx_skb, int, 0); MODULE_PARM_DESC(use_rx_skb, "Use socket buffers for receive operation (default 0)"); static int num_rx_prio = 1; -LKM_MOD_PARAM(num_rx_prio, "i", int, 0); +module_param(num_rx_prio, int, 0); MODULE_PARM_DESC(num_rx_prio, "Number of filter priorities per Rx DMA channel"); static int rx_rate[8] = { 100000, 100000, 100000, 100000, 100000, 100000, 100000, 0 }; -LKM_MOD_PARAM_ARRAY(rx_rate, "1-4i", int, NULL, 0); +module_param_array(rx_rate, int, NULL, 0); MODULE_PARM_DESC(rx_rate, "Rx rate in packets per second (default 100000)"); static int rx_burst[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -LKM_MOD_PARAM_ARRAY(rx_burst, "1-4i", int, NULL, 0); +module_param_array(rx_burst, int, NULL, 0); MODULE_PARM_DESC(rx_burst, "Rx rate burst maximum in packets (default rx_rate/10)"); static int check_rcpu_signature = 0; -LKM_MOD_PARAM(check_rcpu_signature, "i", int, 0); +module_param(check_rcpu_signature, int, 0); MODULE_PARM_DESC(check_rcpu_signature, "Check RCPU Signature for Tx packets from RCPU interfaces"); static int basedev_suspend = 0; -LKM_MOD_PARAM(basedev_suspend, "i", int, 0); +module_param(basedev_suspend, int, 0); MODULE_PARM_DESC(basedev_suspend, "Pause traffic till base device is up (enabled by default in NAPI mode)"); static int mirror_local = 1; -LKM_MOD_PARAM(mirror_local, "i", int, 0); +module_param(mirror_local, int, 0); MODULE_PARM_DESC(mirror_local, "Encapasulate packets based on mirror_to interface configuration, e.g. " "encapsulate non-RCPU packets when mirrored to an RCPU interface " @@ -176,27 +176,27 @@ MODULE_PARM_DESC(mirror_local, * Force to add one layer of VLAN tag to untagged packets on Dune devices */ static int force_tagged = 1; -LKM_MOD_PARAM(force_tagged, "i", int, 0); +module_param(force_tagged, int, 0); MODULE_PARM_DESC(force_tagged, "Always tagged with VLAN tag with spceified VID or VSI(default 1)"); static int ft_tpid=0x8100; -LKM_MOD_PARAM(ft_tpid, "i", int, 0); +module_param(ft_tpid, int, 0); MODULE_PARM_DESC(ft_tpid, "Tag Protocol Identifier (TPID) indicates the frame type (default 0x8100)"); static int ft_pri=0; -LKM_MOD_PARAM(ft_pri, "i", int, 0); +module_param(ft_pri, int, 0); MODULE_PARM_DESC(ft_cfi, "Priority (PRI) indicates the frame priority (default 0)"); static int ft_cfi=0; -LKM_MOD_PARAM(ft_cfi, "i", int, 0); +module_param(ft_cfi, int, 0); MODULE_PARM_DESC(ft_cfi, "Canonical Format Indicator (CFI) indicates whether a MAC address is encapsulated in canonical format over different transmission media (default 0)"); static int ft_vid=0; -LKM_MOD_PARAM(ft_vid, "i", int, 0); +module_param(ft_vid, int, 0); MODULE_PARM_DESC(ft_vid, "VLAN ID (VID) indicates the VLAN to which a frame belongs (default 0)"); @@ -263,30 +263,21 @@ static int dbg_pkt_enable = 0; #if NAPI_SUPPORT static int use_napi = 0; -LKM_MOD_PARAM(use_napi, "i", int, 0); +module_param(use_napi, int, 0); MODULE_PARM_DESC(use_napi, "Use NAPI interface (default 0)"); static int napi_weight = 64; -LKM_MOD_PARAM(napi_weight, "i", int, 0); +module_param(napi_weight, int, 0); MODULE_PARM_DESC(napi_weight, "Weight of NAPI interfaces (default 64)"); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) -#define bkn_napi_enable(_dev, _napi) netif_poll_enable(_dev) -#define bkn_napi_disable(_dev, _napi) netif_poll_disable(_dev) -#define bkn_napi_schedule(_dev, _napi) netif_rx_schedule(_dev) -#define bkn_napi_schedule_prep(_dev, _napi) netif_rx_schedule_prep(_dev) -#define __bkn_napi_schedule(_dev, _napi) __netif_rx_schedule(_dev) -#define bkn_napi_complete(_dev, _napi) netif_rx_complete(_dev) -#else #define bkn_napi_enable(_dev, _napi) napi_enable(_napi) #define bkn_napi_disable(_dev, _napi) napi_disable(_napi) #define bkn_napi_schedule(_dev, _napi) napi_schedule(_napi) #define bkn_napi_schedule_prep(_dev, _napi) napi_schedule_prep(_napi) #define __bkn_napi_schedule(_dev, _napi) __napi_schedule(_napi) #define bkn_napi_complete(_dev, _napi) napi_complete(_napi) -#endif #else @@ -316,209 +307,8 @@ static int napi_weight = 0; #define PCI_SET_DMA_MASK(pdev, mask) dma_set_mask(&(pdev)->dev, (mask)) #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)) -#define NETDEV_UPDATE_TRANS_START_TIME(dev) dev->trans_start = jiffies -#else -#define NETDEV_UPDATE_TRANS_START_TIME(dev) netif_trans_update(dev) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) -#define skb_copy_to_linear_data(_skb, _pkt, _len) \ - eth_copy_and_sum(_skb, _pkt, _len, 0) -struct napi_struct { int not_used; }; -#define netif_napi_add(_dev, _napi, _poll, _weight) do { \ - (_dev)->poll = _poll; \ - (_dev)->weight = _weight; \ -} while(0) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) -#define SKB_PADTO(_skb,_len) (((_skb = skb_padto(_skb,_len)) == NULL) ? -1 : 0) -#else -#define SKB_PADTO(_skb,_len) skb_padto(_skb,_len) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)) -#define skb_header_cloned(_skb) \ - skb_cloned(_skb) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,27) -static inline void *netdev_priv(struct net_device *dev) -{ - return dev->priv; -} -#endif /* KERNEL_VERSION(2,4,27) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23) -/* Special check for MontaVista 2.4.20 MIPS */ -#if !(defined(MAX_USER_RT_PRIO) && defined(CONFIG_MIPS)) -static inline void free_netdev(struct net_device *dev) -{ - kfree(dev); -} -#endif -static inline void netif_poll_disable(struct net_device *dev) -{ - while (test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state)) { - /* No hurry. */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(1); - } -} -static inline void netif_poll_enable(struct net_device *dev) -{ - clear_bit(__LINK_STATE_RX_SCHED, &dev->state); -} -#endif /* KERNEL_VERSION(2,4,23) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,21) -static struct sk_buff *skb_pad(struct sk_buff *skb, int pad) -{ - struct sk_buff *nskb; - - /* If the skbuff is non linear tailroom is always zero.. */ - if(skb_tailroom(skb) >= pad) - { - memset(skb->data+skb->len, 0, pad); - return skb; - } - - nskb = skb_copy_expand(skb, skb_headroom(skb), skb_tailroom(skb) + pad, GFP_ATOMIC); - kfree_skb(skb); - if(nskb) - memset(nskb->data+nskb->len, 0, pad); - return nskb; -} -static inline struct sk_buff *skb_padto(struct sk_buff *skb, unsigned int len) -{ - unsigned int size = skb->len; - if(likely(size >= len)) - return skb; - return skb_pad(skb, len-size); -} -#endif /* KERNEL_VERSION(2,4,21) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) -#define bkn_vlan_hwaccel_put_tag(_skb, _proto, _tci) \ - __vlan_hwaccel_put_tag(_skb, _tci) -#else -#define bkn_vlan_hwaccel_put_tag(_skb, _proto, _tci) \ - __vlan_hwaccel_put_tag(_skb, htons(_proto), _tci) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0) -#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */ -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) -#define bkn_dma_mapping_error(d, a) \ - dma_mapping_error(a) -#define bkn_pci_dma_mapping_error(d, a) \ - pci_dma_mapping_error(a) -#else -#define bkn_dma_mapping_error(d, a) \ - dma_mapping_error(d, a) -#define bkn_pci_dma_mapping_error(d, a) \ - pci_dma_mapping_error(d, a) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) -enum hwtstamp_tx_types { - HWTSTAMP_TX_OFF, - HWTSTAMP_TX_ON, - HWTSTAMP_TX_ONESTEP_SYNC -}; -enum { - SKBTX_HW_TSTAMP = 1 << 0, - SKBTX_SW_TSTAMP = 1 << 1, - SKBTX_IN_PROGRESS = 1 << 2, -}; -struct skb_shared_hwtstamps { - ktime_t hwtstamp; - ktime_t syststamp; -}; -struct bkn_skb_shared_info { - uint8_t tx_flags; - struct skb_shared_hwtstamps hwtstamps; -}; -#define bkn_skb_shinfo(_skb) ((struct bkn_skb_shared_info *)(unsigned char *)_skb->end) -#define bkn_skb_tx_flags(_skb) bkn_skb_shinfo(_skb)->tx_flags -static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) -{ - return &bkn_skb_shinfo(skb)->hwtstamps; -} -void skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps) -{ -} -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ -} -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) -static inline ktime_t ns_to_ktime(u64 ns) -{ - static const ktime_t ktime; - return ktime; -} -#endif -#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37) -#include -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -enum { - SKBTX_HW_TSTAMP = 1 << 0, - SKBTX_SW_TSTAMP = 1 << 1, - SKBTX_IN_PROGRESS = 1 << 2, -}; -#define bkn_skb_tx_flags(_skb) skb_shinfo(_skb)->tx_flags.flags -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ -} -#else #include -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -#endif - -#define bkn_skb_tx_flags(_skb) skb_shinfo(_skb)->tx_flags -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ - return skb_tx_timestamp(skb); -} -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) -#define bkn_dev_net_set(dev, net) -#else -#define bkn_dev_net_set(dev, net) dev_net_set(dev, net) -#endif - -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT -#define BKN_DMA_DEV device -#define BKN_DMA_FROMDEV DMA_FROM_DEVICE -#define BKN_DMA_TODEV DMA_TO_DEVICE -#define BKN_DMA_MAP_SINGLE(d,p,s,r) dma_map_single(d,p,s,r) -#define BKN_DMA_UNMAP_SINGLE(d,a,s,r) dma_unmap_single(d,a,s,r) -#define BKN_DMA_ALLOC_COHERENT(d,s,h) dma_alloc_coherent(d,s,h,GFP_ATOMIC|GFP_DMA32) -#define BKN_DMA_FREE_COHERENT(d,s,a,h) dma_free_coherent(d,s,a,h) -#define BKN_DMA_MAPPING_ERROR(d,a) bkn_dma_mapping_error(d,a) -#else -#define BKN_DMA_DEV pci_dev -#define BKN_DMA_FROMDEV PCI_DMA_FROMDEVICE -#define BKN_DMA_TODEV PCI_DMA_TODEVICE -#define BKN_DMA_MAP_SINGLE(d,p,s,r) pci_map_single(d,p,s,r) -#define BKN_DMA_UNMAP_SINGLE(d,a,s,r) pci_unmap_single(d,a,s,r) -#define BKN_DMA_ALLOC_COHERENT(d,s,h) pci_alloc_consistent(d,s,h) -#define BKN_DMA_FREE_COHERENT(d,s,a,h) pci_free_consistent(d,s,a,h) -#define BKN_DMA_MAPPING_ERROR(d,a) bkn_pci_dma_mapping_error(d,a) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) -#define BKN_NETDEV_TX_BUSY NETDEV_TX_BUSY -#else -#define BKN_NETDEV_TX_BUSY 1 -#endif - /* * Get a 16-bit value from packet offset * _data Pointer to packet @@ -586,7 +376,7 @@ typedef struct bkn_switch_info_s { int ndev_max; /* Size of indexed array */ struct list_head rxpf_list; /* Associated Rx packet filters */ volatile void *base_addr; /* Base address for PCI register access */ - struct BKN_DMA_DEV *dma_dev; /* Required for DMA memory control */ + struct device *dma_dev; /* Required for DMA memory control */ struct pci_dev *pdev; /* Required for DMA memory control */ struct net_device *dev; /* Base network device */ struct napi_struct napi; /* New NAPI */ @@ -1069,16 +859,6 @@ static knet_hw_tstamp_ioctl_cmd_cb_f knet_hw_tstamp_ioctl_cmd_cb = NULL; * Thread management */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)) -static void -bkn_sleep(int clicks) -{ - wait_queue_head_t wq; - - init_waitqueue_head(&wq); - sleep_on_timeout(&wq, clicks); -} -#else static void bkn_sleep(int clicks) { @@ -1087,7 +867,6 @@ bkn_sleep(int clicks) init_waitqueue_head(&wq); wait_event_timeout(wq, 0, clicks); } -#endif /* * On XGS devices bit 15 fo the Transferred Bytes field in @@ -1921,9 +1700,10 @@ bkn_alloc_dcbs(bkn_switch_info_t *sinfo) rx_ring_size = dcb_size * (MAX_RX_DCBS + 1); sinfo->dcb_mem_size = tx_ring_size + rx_ring_size * sinfo->rx_chans; - sinfo->dcb_mem = BKN_DMA_ALLOC_COHERENT(sinfo->dma_dev, + sinfo->dcb_mem = dma_alloc_coherent(sinfo->dma_dev, sinfo->dcb_mem_size, - &dcb_dma); + &dcb_dma, + GFP_ATOMIC|GFP_DMA32); if (sinfo->dcb_mem == NULL) { gprintk("DCB memory allocation (%d bytes) failed.\n", sinfo->dcb_mem_size); @@ -1938,7 +1718,7 @@ static void bkn_free_dcbs(bkn_switch_info_t *sinfo) { if (sinfo->dcb_mem != NULL) { - BKN_DMA_FREE_COHERENT(sinfo->dma_dev, sinfo->dcb_mem_size, + dma_free_coherent(sinfo->dma_dev, sinfo->dcb_mem_size, sinfo->dcb_mem, (dma_addr_t)sinfo->dcb_dma); sinfo->dcb_mem = NULL; } @@ -1956,9 +1736,9 @@ bkn_clean_tx_dcbs(bkn_switch_info_t *sinfo) if (desc->skb != NULL) { DBG_SKB(("Cleaning Tx SKB from DCB %d.\n", sinfo->tx.dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_TODEV); + DMA_TO_DEVICE); desc->skb_dma = 0; dev_kfree_skb_any(desc->skb); desc->skb = NULL; @@ -1985,9 +1765,9 @@ bkn_clean_rx_dcbs(bkn_switch_info_t *sinfo, int chan) if (desc->skb != NULL) { DBG_SKB(("Cleaning Rx%d SKB from DCB %d.\n", chan, sinfo->rx[chan].dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_FROMDEV); + DMA_FROM_DEVICE); desc->skb_dma = 0; dev_kfree_skb_any(desc->skb); desc->skb = NULL; @@ -2526,10 +2306,10 @@ bkn_rx_refill(bkn_switch_info_t *sinfo, int chan) desc->dma_size = 0; } #endif - desc->skb_dma = BKN_DMA_MAP_SINGLE(sinfo->dma_dev, + desc->skb_dma = dma_map_single(sinfo->dma_dev, skb->data, desc->dma_size, - BKN_DMA_FROMDEV); - if (BKN_DMA_MAPPING_ERROR(sinfo->dma_dev, desc->skb_dma)) { + DMA_FROM_DEVICE); + if (dma_mapping_error(sinfo->dma_dev, desc->skb_dma)) { dev_kfree_skb_any(skb); desc->skb = NULL; break; @@ -4040,13 +3820,13 @@ bkn_do_api_rx(bkn_switch_info_t *sinfo, int chan, int budget) */ if (priv->flags & KCOM_NETIF_F_RCPU_ENCAP) { - bkn_vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); + __vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); } else { if (vlan_proto == ETH_P_8021AD) { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021AD, tci); } else { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021Q, tci); } } @@ -4202,13 +3982,13 @@ bkn_skb_rx_netif_process(bkn_switch_info_t *sinfo, int dest_id, int chan, uint16_t tci = PKT_U16_GET(skb->data, 14); if (priv->flags & KCOM_NETIF_F_RCPU_ENCAP) { - bkn_vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); + __vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); } else { if (vlan_proto == ETH_P_8021AD) { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021AD, tci); } else { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021Q, tci); } } @@ -4312,9 +4092,9 @@ bkn_do_skb_rx(bkn_switch_info_t *sinfo, int chan, int budget) skb = desc->skb; DBG_DCB_RX(("Rx%d SKB DMA done (%d).\n", chan, sinfo->rx[chan].dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_FROMDEV); + DMA_FROM_DEVICE); desc->skb_dma = 0; pktlen = dcb[sinfo->dcb_wsize-1] & 0xffff; @@ -4800,7 +4580,7 @@ bkn_resume_tx(bkn_switch_info_t *sinfo) static void bkn_skb_tstamp_copy(struct sk_buff *new_skb, struct sk_buff *skb) { - bkn_skb_tx_flags(new_skb) = bkn_skb_tx_flags(skb); + skb_shinfo(new_skb)->tx_flags = skb_shinfo(skb)->tx_flags; new_skb->sk = skb->sk; return; @@ -4852,7 +4632,6 @@ bkn_hw_tstamp_tx_work(struct work_struct *work) skb = skb_dequeue(&sinfo->tx_ptp_queue); ret = bkn_hw_tstamp_tx_set(sinfo, skb); if (ret < 0) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) ktime_t now; now = ktime_get(); DBG_PTP(("2Step TX Timestamp has not been taken for the current skb (%lld us)\n", @@ -4865,9 +4644,6 @@ bkn_hw_tstamp_tx_work(struct work_struct *work) DBG_PTP(("2Step TX Timestamp fetch took long time %lld us\n", ktime_us_delta(now, skb->tstamp))); } -#else - DBG_PTP(("2Step TX Timestamp has not been taken for the current skb\n")); -#endif } dev_kfree_skb_any(skb); } @@ -4896,23 +4672,21 @@ bkn_do_tx(bkn_switch_info_t *sinfo) } if (desc->skb) { DBG_DCB_TX(("Tx SKB DMA done (%d).\n", sinfo->tx.dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_TODEV); + DMA_TO_DEVICE); if ((KNET_SKB_CB(desc->skb)->hwts == HWTSTAMP_TX_ONESTEP_SYNC) && - (bkn_skb_tx_flags(desc->skb) & SKBTX_IN_PROGRESS)) { + (skb_shinfo(desc->skb)->tx_flags & SKBTX_IN_PROGRESS)) { if (bkn_hw_tstamp_tx_set(sinfo, desc->skb) < 0) { DBG_PTP(("1Step timestamp has not been taken for the current skb.\n")); } - bkn_skb_tx_flags(desc->skb) &= ~SKBTX_IN_PROGRESS; + skb_shinfo(desc->skb)->tx_flags &= ~SKBTX_IN_PROGRESS; } - if (bkn_skb_tx_flags(desc->skb) & SKBTX_IN_PROGRESS) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) + if (skb_shinfo(desc->skb)->tx_flags & SKBTX_IN_PROGRESS) { desc->skb->tstamp = ktime_get(); -#endif skb_queue_tail(&sinfo->tx_ptp_queue, desc->skb); schedule_work(&sinfo->tx_ptp_work); } else { @@ -5698,7 +5472,6 @@ bkn_open(struct net_device *dev) return 0; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) static int bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { @@ -5767,7 +5540,6 @@ bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) if (cmd == SIOCGHWTSTAMP) { config.flags = 0; config.tx_type = priv->tx_hwts; @@ -5775,11 +5547,9 @@ bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; } -#endif return -EINVAL; } -#endif static int bkn_change_mtu(struct net_device *dev, int new_mtu) @@ -5793,45 +5563,6 @@ bkn_change_mtu(struct net_device *dev, int new_mtu) return 0; } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) -static int -bkn_poll(struct net_device *dev, int *budget) -{ - bkn_priv_t *priv = netdev_priv(dev); - bkn_switch_info_t *sinfo = priv->sinfo; - int cur_budget = *budget; - int poll_again = 0; - int rx_dcbs_done; - unsigned long flags; - - spin_lock_irqsave(&sinfo->lock, flags); - - DBG_NAPI(("NAPI poll on %s.\n", dev->name)); - - sinfo->napi_poll_again = 0; - - if (cur_budget > dev->quota) { - cur_budget = dev->quota; - } - - rx_dcbs_done = dev_do_dma(sinfo, cur_budget); - - *budget -= rx_dcbs_done; - cur_budget -= rx_dcbs_done; - dev->quota -= rx_dcbs_done; - - if (sinfo->napi_poll_again || cur_budget <= 0) { - poll_again = 1; - sinfo->napi_not_done++; - } else { - bkn_napi_poll_complete(sinfo); - } - - spin_unlock_irqrestore(&sinfo->lock, flags); - - return poll_again; -} -#else static int bkn_poll(struct napi_struct *napi, int budget) { @@ -5859,7 +5590,6 @@ bkn_poll(struct napi_struct *napi, int budget) return rx_dcbs_done; } -#endif static int bkn_stop(struct net_device *dev) @@ -6094,7 +5824,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) hdrlen = priv->system_headers_size; /* Account for extra OAM-TS header. */ - if ((bkn_skb_tx_flags(skb) & SKBTX_HW_TSTAMP) && + if ((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && (hdrlen > (BKN_DNX_PTCH_2_SIZE))) { /* T_LOCAL_PORT intf will use PTCH_2 + ITMH */ hdrlen += BKN_DPP_OTSH_SIZE_BYTE; @@ -6332,7 +6062,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) } if (pktlen < (60 + taglen + hdrlen)) { pktlen = (60 + taglen + hdrlen); - if (SKB_PADTO(skb, pktlen) != 0) { + if (skb_padto(skb, pktlen) != 0) { DBG_WARN(("Tx drop: skb_padto failed\n")); stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); @@ -6526,7 +6256,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) pktlen = skb->len; if (pktlen < (60 + taglen + hdrlen)) { pktlen = (60 + taglen + hdrlen); - if (SKB_PADTO(skb, pktlen) != 0) { + if (skb_padto(skb, pktlen) != 0) { DBG_WARN(("Tx drop: skb_padto failed\n")); stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); @@ -6557,15 +6287,15 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) } /* Do Tx timestamping */ - if (bkn_skb_tx_flags(skb) & SKBTX_HW_TSTAMP) { + if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) { KNET_SKB_CB(skb)->hwts = priv->tx_hwts; if ((priv->port >= 0) && (priv->tx_hwts & HWTSTAMP_TX_ON)) { /* TwoStep Processing of ptp-packets */ KNET_SKB_CB(skb)->port = priv->phys_port; bkn_hw_tstamp_tx_config(sinfo, priv->tx_hwts, hdrlen, skb, meta); - bkn_skb_tx_flags(skb) |= SKBTX_IN_PROGRESS; - bkn_skb_tx_timestamp(skb); + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + skb_tx_timestamp(skb); } else if (priv->tx_hwts & HWTSTAMP_TX_ONESTEP_SYNC) { @@ -6576,8 +6306,8 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) ((priv->port >= 0) ? meta : NULL)); if (KNET_SKB_CB(skb)->ts != 0) { - bkn_skb_tx_flags(skb) |= SKBTX_IN_PROGRESS; - bkn_skb_tx_timestamp(skb); + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + skb_tx_timestamp(skb); } } @@ -6596,10 +6326,10 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) pktlen = pktlen + FCS_SZ; } desc->dma_size = pktlen; - desc->skb_dma = BKN_DMA_MAP_SINGLE(sinfo->dma_dev, + desc->skb_dma = dma_map_single(sinfo->dma_dev, pktdata, desc->dma_size, - BKN_DMA_TODEV); - if (BKN_DMA_MAPPING_ERROR(sinfo->dma_dev, desc->skb_dma)) { + DMA_TO_DEVICE); + if (dma_mapping_error(sinfo->dma_dev, desc->skb_dma)) { stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); u64_stats_update_end_irqrestore(&priv->stats.syncp, stats_flags); @@ -6653,10 +6383,10 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) sinfo->tx.pkts_d_dma_resrc++; bkn_suspend_tx(sinfo); spin_unlock_irqrestore(&sinfo->lock, flags); - return BKN_NETDEV_TX_BUSY; + return NETDEV_TX_BUSY; } - NETDEV_UPDATE_TRANS_START_TIME(dev); + netif_trans_update(dev); spin_unlock_irqrestore(&sinfo->lock, flags); @@ -6699,21 +6429,12 @@ bkn_timer_func(bkn_switch_info_t *sinfo) spin_unlock_irqrestore(&sinfo->lock, flags); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) -static void -bkn_timer(unsigned long context) -{ - bkn_switch_info_t *sinfo = (bkn_switch_info_t *)context; - return bkn_timer_func(sinfo); -} -#else static void bkn_timer(struct timer_list *t) { bkn_switch_info_t *sinfo = from_timer(sinfo, t, timer); return bkn_timer_func(sinfo); } -#endif static void bkn_rx_add_tokens(bkn_switch_info_t *sinfo, int chan) @@ -6790,21 +6511,12 @@ bkn_rxtick_func(bkn_switch_info_t *sinfo) add_timer(&sinfo->rxtick); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) -static void -bkn_rxtick(unsigned long context) -{ - bkn_switch_info_t *sinfo = (bkn_switch_info_t *)context; - return bkn_rxtick_func(sinfo); -} -#else static void bkn_rxtick(struct timer_list *t) { bkn_switch_info_t *sinfo = from_timer(sinfo, t, rxtick); return bkn_rxtick_func(sinfo); } -#endif static void bkn_rx_rate_config(bkn_switch_info_t *sinfo) @@ -6891,13 +6603,7 @@ bkn_create_sinfo(int dev_no) skb_queue_head_init(&sinfo->tx_ptp_queue); INIT_WORK(&sinfo->tx_ptp_work, bkn_hw_tstamp_tx_work); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) - init_timer(&sinfo->timer); - sinfo->timer.data = (unsigned long)sinfo; - sinfo->timer.function = bkn_timer; -#else timer_setup(&sinfo->timer, bkn_timer, 0); -#endif sinfo->timer.expires = jiffies + 1; INIT_LIST_HEAD(&sinfo->tx.api_dcb_list); @@ -6916,13 +6622,7 @@ bkn_create_sinfo(int dev_no) sinfo->rx[0].use_rx_skb = 0; } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) - init_timer(&sinfo->rxtick); - sinfo->rxtick.data = (unsigned long)sinfo; - sinfo->rxtick.function = bkn_rxtick; -#else timer_setup(&sinfo->rxtick, bkn_rxtick, 0); -#endif sinfo->rxtick.expires = jiffies + 1; for (chan = 0; chan < NUM_RX_CHAN; chan++) { @@ -6938,7 +6638,6 @@ bkn_create_sinfo(int dev_no) return sinfo; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) static const struct net_device_ops bkn_netdev_ops = { .ndo_open = bkn_open, .ndo_stop = bkn_stop, @@ -6956,7 +6655,6 @@ static const struct net_device_ops bkn_netdev_ops = { .ndo_poll_controller = bkn_poll_controller, #endif }; -#endif static void bkn_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo) @@ -6973,7 +6671,6 @@ bkn_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo) strscpy(drvinfo->bus_info, "N/A", sizeof(drvinfo->bus_info)); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) static int #if (LINUX_VERSION_CODE < KERNEL_VERSION(6,11,0)) bkn_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) @@ -7036,7 +6733,6 @@ bkn_get_ts_info(struct net_device *dev, struct kernel_ethtool_ts_info *info) return 0; } -#endif int bkn_get_link_ksettings(struct net_device *dev, struct ethtool_link_ksettings *cmd) @@ -7081,9 +6777,7 @@ static const struct ethtool_ops bkn_ethtool_ops = { .get_drvinfo = bkn_get_drvinfo, .get_link = ethtool_op_get_link, .get_link_ksettings = bkn_get_link_ksettings, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) .get_ts_info = bkn_get_ts_info, -#endif }; static struct net_device * @@ -7099,9 +6793,6 @@ bkn_init_ndev(u8 *mac, char *name) DBG_WARN(("Error allocating Ethernet device.\n")); return NULL; } -#ifdef SET_MODULE_OWNER - SET_MODULE_OWNER(dev); -#endif /* Set the device MAC address */ if ((mac[0] | mac[1] | mac[2] | mac[3] | mac[4] | mac[5]) == 0) { @@ -7119,25 +6810,11 @@ bkn_init_ndev(u8 *mac, char *name) if (dev->mtu == 0) { dev->mtu = rx_buffer_size; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) dev->max_mtu = rx_buffer_size; -#endif /* Device vectors */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) dev->netdev_ops = &bkn_netdev_ops; dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; -#else - dev->open = bkn_open; - dev->hard_start_xmit = bkn_tx; - dev->stop = bkn_stop; - dev->set_multicast_list = bkn_set_multicast_list; - dev->do_ioctl = NULL; - dev->change_mtu = bkn_change_mtu; -#ifdef CONFIG_NET_POLL_CONTROLLER - dev->poll_controller = bkn_poll_controller; -#endif -#endif priv = netdev_priv(dev); priv->speed = SPEED_UNKNOWN; priv->duplex = DUPLEX_UNKNOWN; @@ -7149,7 +6826,7 @@ bkn_init_ndev(u8 *mac, char *name) u64_stats_init(&priv->stats.syncp); u64_stats_init(&priv->hw_stats.syncp); - bkn_dev_net_set(dev, current->nsproxy->net_ns); + dev_net_set(dev, current->nsproxy->net_ns); DBG_VERB(("Created Ethernet device %s.\n", dev->name)); @@ -7304,7 +6981,6 @@ bkn_proc_link_write(struct file *file, const char *buf, return count; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_link_file_ops = { proc_open: bkn_proc_link_open, proc_read: seq_read, @@ -7312,16 +6988,6 @@ struct proc_ops bkn_proc_link_file_ops = { proc_write: bkn_proc_link_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_link_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_link_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_link_write, - release: single_release, -}; -#endif /* * Device Rate Control Proc Read Entry @@ -7424,7 +7090,6 @@ bkn_proc_rate_write(struct file *file, const char *buf, return count; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_rate_file_ops = { proc_open: bkn_proc_rate_open, proc_read: seq_read, @@ -7432,16 +7097,6 @@ struct proc_ops bkn_proc_rate_file_ops = { proc_write: bkn_proc_rate_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_rate_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_rate_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_rate_write, - release: single_release, -}; -#endif /* * Driver DMA Proc Entry @@ -7684,22 +7339,12 @@ bkn_seq_dma_open(struct inode *inode, struct file *file) return seq_open(file, &bkn_seq_dma_ops); }; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_seq_dma_file_ops = { proc_open: bkn_seq_dma_open, proc_read: seq_read, proc_lseek: seq_lseek, proc_release: seq_release, }; -#else -static struct file_operations bkn_seq_dma_file_ops = { - .owner = THIS_MODULE, - .open = bkn_seq_dma_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release -}; -#endif /* * Device Debug Control Proc Write Entry @@ -7830,7 +7475,6 @@ static int bkn_proc_debug_open(struct inode * inode, struct file * file) return single_open(file, bkn_proc_debug_show, NULL); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_debug_file_ops = { proc_open: bkn_proc_debug_open, proc_read: seq_read, @@ -7838,16 +7482,6 @@ struct proc_ops bkn_proc_debug_file_ops = { proc_write: bkn_proc_debug_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_debug_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_debug_write, - release: single_release, -}; -#endif /* * Device Statistics Proc Entry @@ -7969,7 +7603,6 @@ bkn_proc_stats_write(struct file *file, const char *buf, return count; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_stats_file_ops = { proc_open: bkn_proc_stats_open, proc_read: seq_read, @@ -7977,16 +7610,6 @@ struct proc_ops bkn_proc_stats_file_ops = { proc_write: bkn_proc_stats_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_stats_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_stats_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_stats_write, - release: single_release, -}; -#endif /* * Device Debug Statistics Proc Entry @@ -8155,7 +7778,6 @@ bkn_proc_dstats_write(struct file *file, const char *buf, return count; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_dstats_file_ops = { proc_open: bkn_proc_dstats_open, proc_read: seq_read, @@ -8163,16 +7785,6 @@ struct proc_ops bkn_proc_dstats_file_ops = { proc_write: bkn_proc_dstats_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_dstats_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_dstats_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_dstats_write, - release: single_release, -}; -#endif /* * PTP Statistics Proc Entry @@ -8273,7 +7885,6 @@ bkn_proc_ptp_stats_write(struct file *file, const char *buf, size_t count, loff_ return count; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops bkn_proc_ptp_stats_file_ops = { proc_open: bkn_proc_ptp_stats_open, proc_read: seq_read, @@ -8281,47 +7892,37 @@ struct proc_ops bkn_proc_ptp_stats_file_ops = { proc_write: bkn_proc_ptp_stats_write, proc_release: single_release, }; -#else -struct file_operations bkn_proc_ptp_stats_file_ops = { - owner: THIS_MODULE, - open: bkn_proc_ptp_stats_open, - read: seq_read, - llseek: seq_lseek, - write: bkn_proc_ptp_stats_write, - release: single_release, -}; -#endif static int bkn_proc_init(void) { struct proc_dir_entry *entry; - PROC_CREATE(entry, "link", 0666, bkn_proc_root, &bkn_proc_link_file_ops); + entry = proc_create("link", 0666, bkn_proc_root, &bkn_proc_link_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "rate", 0666, bkn_proc_root, &bkn_proc_rate_file_ops); + entry = proc_create("rate", 0666, bkn_proc_root, &bkn_proc_rate_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "dma", 0, bkn_proc_root, &bkn_seq_dma_file_ops); + entry = proc_create("dma", 0, bkn_proc_root, &bkn_seq_dma_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "debug", 0666, bkn_proc_root, &bkn_proc_debug_file_ops); + entry = proc_create("debug", 0666, bkn_proc_root, &bkn_proc_debug_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "stats", 0666, bkn_proc_root, &bkn_proc_stats_file_ops); + entry = proc_create("stats", 0666, bkn_proc_root, &bkn_proc_stats_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "dstats", 0666, bkn_proc_root, &bkn_proc_dstats_file_ops); + entry = proc_create("dstats", 0666, bkn_proc_root, &bkn_proc_dstats_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "ptp_stats", 0666, bkn_proc_root, &bkn_proc_ptp_stats_file_ops); + entry = proc_create("ptp_stats", 0666, bkn_proc_root, &bkn_proc_ptp_stats_file_ops); if (entry == NULL) { return -1; } @@ -10420,25 +10021,25 @@ bkn_hw_tstamp_ioctl_cmd_cb_unregister(knet_hw_tstamp_ioctl_cmd_cb_f hw_tstamp_io return 0; } -LKM_EXPORT_SYM(bkn_rx_skb_cb_register); -LKM_EXPORT_SYM(bkn_rx_skb_cb_unregister); -LKM_EXPORT_SYM(bkn_tx_skb_cb_register); -LKM_EXPORT_SYM(bkn_tx_skb_cb_unregister); -LKM_EXPORT_SYM(bkn_filter_cb_register); -LKM_EXPORT_SYM(bkn_filter_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_enable_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_enable_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_disable_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_disable_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_time_get_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_time_get_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_meta_get_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_meta_get_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_ptp_clock_index_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_ptp_clock_index_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_time_upscale_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_time_upscale_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_pre_process_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_pre_process_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_ioctl_cmd_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_ioctl_cmd_cb_unregister); +EXPORT_SYMBOL(bkn_rx_skb_cb_register); +EXPORT_SYMBOL(bkn_rx_skb_cb_unregister); +EXPORT_SYMBOL(bkn_tx_skb_cb_register); +EXPORT_SYMBOL(bkn_tx_skb_cb_unregister); +EXPORT_SYMBOL(bkn_filter_cb_register); +EXPORT_SYMBOL(bkn_filter_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_enable_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_enable_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_disable_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_disable_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_time_get_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_time_get_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_meta_get_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_meta_get_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_ptp_clock_index_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_ptp_clock_index_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_time_upscale_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_time_upscale_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_pre_process_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_pre_process_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_ioctl_cmd_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_ioctl_cmd_cb_unregister); diff --git a/sdk-6.5.24/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c b/sdk-6.5.24/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c index ecc020b9c..82725ee7b 100644 --- a/sdk-6.5.24/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c +++ b/sdk-6.5.24/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c @@ -36,7 +36,6 @@ MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("PTP Clock Driver for Broadcom XGS Switch"); MODULE_LICENSE("GPL"); -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) #include #include #include @@ -54,24 +53,24 @@ MODULE_LICENSE("GPL"); /* Configuration Parameters */ static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (default 0)"); static int pci_cos; static int network_transport; -LKM_MOD_PARAM(network_transport, "i", int, 0); +module_param(network_transport, int, 0); MODULE_PARM_DESC(network_transport, "Transport Type (default - Detect from packet)"); static char *base_dev_name = "ptp0"; -LKM_MOD_PARAM(base_dev_name, "s", charp, 0); +module_param(base_dev_name, charp, 0); MODULE_PARM_DESC(base_dev_name, "Base device name (default ptp0, ptp1, etc.)"); static int fw_core; -LKM_MOD_PARAM(fw_core, "i", int, 0); +module_param(fw_core, int, 0); MODULE_PARM_DESC(fw_core, "Firmware core (default 0)"); @@ -96,16 +95,6 @@ MODULE_PARM_DESC(fw_core, #define DBG_ERR(_s) do { if (1) gprintk _s; } while (0) -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT -#define DMA_DEV device -#define DMA_ALLOC_COHERENT(d,s,h) dma_alloc_coherent(d,s,h,GFP_ATOMIC|GFP_DMA32) -#define DMA_FREE_COHERENT(d,s,a,h) dma_free_coherent(d,s,a,h) -#else -#define DMA_DEV pci_dev -#define DMA_ALLOC_COHERENT(d,s,h) pci_alloc_consistent(d,s,h) -#define DMA_FREE_COHERENT(d,s,a,h) pci_free_consistent(d,s,a,h) -#endif - /* Type length in bytes */ #define BKSYNC_PACKLEN_U8 1 #define BKSYNC_PACKLEN_U16 2 @@ -253,11 +242,7 @@ enum (_ptp_msg_type == IEEE1588_MSGTYPE_SYNC)) -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -#else #include -#endif /* @@ -446,7 +431,7 @@ struct bksync_ptp_priv { volatile bksync_evlog_t *evlog; /* dma-able address for fw updates */ dma_addr_t dma_mem; int dma_mem_size; - struct DMA_DEV *dma_dev; /* Required for DMA memory control */ + struct device *dma_dev; /* Required for DMA memory control */ int num_pports; int timekeep_status; u32 mirror_encap_bmp; @@ -2532,9 +2517,10 @@ static void bksync_ptp_fw_data_alloc(void) if (ptp_priv->evlog == NULL) { DBG_ERR(("Allocate memory for event log\n")); - ptp_priv->evlog = DMA_ALLOC_COHERENT(ptp_priv->dma_dev, + ptp_priv->evlog = dma_alloc_coherent(ptp_priv->dma_dev, ptp_priv->dma_mem_size, - &dma_mem); + &dma_mem, + GFP_ATOMIC|GFP_DMA32); } if (ptp_priv->evlog != NULL) { @@ -2552,7 +2538,7 @@ static void bksync_ptp_fw_data_alloc(void) static void bksync_ptp_fw_data_free(void) { if (ptp_priv->evlog != NULL) { - DMA_FREE_COHERENT(ptp_priv->dma_dev, ptp_priv->dma_mem_size, + dma_free_coherent(ptp_priv->dma_dev, ptp_priv->dma_mem_size, (void *)ptp_priv->evlog, ptp_priv->dma_mem); ptp_priv->evlog = NULL; } @@ -2819,8 +2805,6 @@ static int bksync_ptp_remove(void) return 0; } -#endif - /* * Generic module functions @@ -2839,12 +2823,8 @@ static int bksync_ptp_remove(void) static int _pprint(struct seq_file *m) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) /* put some goodies here */ pprintf(m, "Broadcom BCM PTP Hardware Clock Module\n"); -#else - pprintf(m, "Broadcom BCM PTP Hardware Clock Module not supported\n"); -#endif return 0; } @@ -2862,12 +2842,8 @@ _pprint(struct seq_file *m) static int _init(void) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) bksync_ptp_register(); return 0; -#else - return -1; -#endif } /* @@ -2883,12 +2859,8 @@ _init(void) static int _cleanup(void) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) bksync_ptp_remove(); return 0; -#else - return -1; -#endif } static gmodule_t _gmodule = { diff --git a/sdk-6.5.24/systems/linux/kernel/modules/include/lkm.h b/sdk-6.5.24/systems/linux/kernel/modules/include/lkm.h index 0b2dab92f..13880cc59 100644 --- a/sdk-6.5.24/systems/linux/kernel/modules/include/lkm.h +++ b/sdk-6.5.24/systems/linux/kernel/modules/include/lkm.h @@ -17,36 +17,15 @@ #include #include -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -#include -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32) /* The version kconfig.h became available in. */ #include -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -#if defined(INCLUDE_KNET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) +#if defined(INCLUDE_KNET) #ifdef CONFIG_NF_CONNTRACK_MODULE #include #endif #endif #include -#endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) -#include -#endif #include -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) -#define HAVE_COMPAT_IOCTL 1 -#define HAVE_UNLOCKED_IOCTL 1 -#endif - -/* Helper defines for multi-version kernel support */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -#define LKM_2_4 -#else -#define LKM_2_6 -#endif #include /* printk() */ #include /* everything... */ @@ -58,41 +37,15 @@ #include #include #include -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) #include -#endif #include #include #include #include -#ifdef CONFIG_DEVFS_FS -#include -#endif - -#define PROC_INTERFACE_KERN_VER_3_10 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) - /* Compatibility Macros */ -#ifdef LKM_2_4 - -#include -#include -#define LKM_MOD_PARAM(n,ot,nt,d) MODULE_PARM(n,ot) -#define LKM_MOD_PARAM_ARRAY(n,ot,nt,c,d) MODULE_PARM(n,ot) -#define LKM_EXPORT_SYM(s) -#define _free_netdev kfree - -#else /* LKM_2_6 */ - -#define LKM_MOD_PARAM(n,ot,nt,d) module_param(n,nt,d) -#define LKM_MOD_PARAM_ARRAY(n,ot,nt,c,d) module_param_array(n,nt,c,d) -#define LKM_EXPORT_SYM(s) EXPORT_SYMBOL(s) -#define _free_netdev free_netdev - -#endif /* LKM_2_x */ - #ifndef list_for_each_safe #define list_for_each_safe(l,t,i) t = 0; list_for_each((l),(i)) #endif @@ -141,38 +94,4 @@ #define CONFIG_BMW #endif -#if PROC_INTERFACE_KERN_VER_3_10 -#define PROC_CREATE(_entry, _name, _acc, _path, _fops) \ - do { \ - _entry = proc_create(_name, _acc, _path, _fops); \ - } while (0) - -#define PROC_CREATE_DATA(_entry, _name, _acc, _path, _fops, _data) \ - do { \ - _entry = proc_create_data(_name, _acc, _path, _fops, _data); \ - } while (0) - -#define PROC_PDE_DATA(_node) PDE_DATA(_node) - -#else -#define PROC_CREATE(_entry, _name, _acc, _path, _fops) \ - do { \ - _entry = create_proc_entry(_name, _acc, _path); \ - if (_entry) { \ - _entry->proc_fops = _fops; \ - } \ - } while (0) - -#define PROC_CREATE_DATA(_entry, _name, _acc, _path, _fops, _data) \ - do { \ - _entry = create_proc_entry(_name, _acc, _path); \ - if (_entry) { \ - _entry->proc_fops = _fops; \ - _entry->data=_data; \ - } \ - } while (0) - -#define PROC_PDE_DATA(_node) PROC_I(_node)->pde->data -#endif - #endif /* __COMMON_LINUX_KRN_LKM_H__ */ diff --git a/sdk-6.5.24/systems/linux/kernel/modules/shared/gmodule.c b/sdk-6.5.24/systems/linux/kernel/modules/shared/gmodule.c index 55a9ffc6c..6be68a685 100644 --- a/sdk-6.5.24/systems/linux/kernel/modules/shared/gmodule.c +++ b/sdk-6.5.24/systems/linux/kernel/modules/shared/gmodule.c @@ -15,19 +15,6 @@ /* Module Vector Table */ static gmodule_t* _gmodule = NULL; - -/* Allow DEVFS Support on 2.4 Kernels */ -#if defined(LKM_2_4) && defined(CONFIG_DEVFS_FS) -#define GMODULE_CONFIG_DEVFS_FS -#endif - - -#ifdef GMODULE_CONFIG_DEVFS_FS -devfs_handle_t devfs_handle = NULL; -#endif - - - static int _dbg_enable = 0; static int @@ -77,7 +64,6 @@ gdbg(const char* fmt, ...) /* * Proc FS Utilities */ -#if PROC_INTERFACE_KERN_VER_3_10 int pprintf(struct seq_file *m, const char* fmt, ...) { @@ -124,7 +110,6 @@ static int _gmodule_proc_release(struct inode * inode, struct file * file) { return single_release(inode, file); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) struct proc_ops _gmodule_proc_fops = { .proc_open = _gmodule_proc_open, .proc_read = seq_read, @@ -132,103 +117,17 @@ struct proc_ops _gmodule_proc_fops = { .proc_write = _gmodule_proc_write, .proc_release = _gmodule_proc_release, }; -#else -struct file_operations _gmodule_proc_fops = { - .owner = THIS_MODULE, - .open = _gmodule_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .write = _gmodule_proc_write, - .release = _gmodule_proc_release, -}; -#endif -#else -int -gmodule_vpprintf(char** page_ptr, const char* fmt, va_list args) -{ - *page_ptr += vsprintf(*page_ptr, fmt, args); - return 0; -} - -int -gmodule_pprintf(char** page_ptr, const char* fmt, ...) -{ - int rv; - - va_list args; - va_start(args, fmt); - rv = gmodule_vpprintf(page_ptr, fmt, args); - va_end(args); - return rv; -} - -static char* _proc_buf = NULL; - -int -pprintf(struct seq_file *m, const char* fmt, ...) -{ - int rv; - - va_list args; - va_start(args, fmt); - rv = gmodule_vpprintf(&_proc_buf, fmt, args); - va_end(args); - return rv; -} - -#define PSTART(b) _proc_buf = b -#define PPRINT proc_print -#define PEND(b) (_proc_buf-b) - -static int -_gmodule_pprint(char* buf) -{ - PSTART(buf); - _gmodule->pprint(NULL); - return PEND(buf); -} - -static int -_gmodule_read_proc(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - *eof = 1; - return _gmodule_pprint(page); -} - -static int -_gmodule_write_proc(struct file *file, const char *buffer, - unsigned long count, void *data) -{ - /* Workaround to toggle debugging */ - if(count > 2) { - if(buffer[0] == 'd') { - _dbg_enable = buffer[1] - '0'; - GDBG("Debugging Enabled"); - } - } - return count; -} -#endif static int _gmodule_create_proc(void) { struct proc_dir_entry* ent; -#if PROC_INTERFACE_KERN_VER_3_10 if((ent = proc_create(_gmodule->name, S_IRUGO | S_IWUGO, NULL, &_gmodule_proc_fops)) != NULL) { return 0; } -#else - if((ent = create_proc_entry(_gmodule->name, S_IRUGO | S_IWUGO, NULL)) != NULL) { - ent->read_proc = _gmodule_read_proc; - ent->write_proc = _gmodule_write_proc; - return 0; - } -#endif return -1; } @@ -256,7 +155,6 @@ _gmodule_release(struct inode *inode, struct file *filp) return 0; } -#ifdef HAVE_UNLOCKED_IOCTL static long _gmodule_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) @@ -267,20 +165,7 @@ _gmodule_unlocked_ioctl(struct file *filp, return -1; } } -#else -static int -_gmodule_ioctl(struct inode *inode, struct file *filp, - unsigned int cmd, unsigned long arg) -{ - if(_gmodule->ioctl) { - return _gmodule->ioctl(cmd, arg); - } else { - return -1; - } -} -#endif -#ifdef HAVE_COMPAT_IOCTL static long _gmodule_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { @@ -290,8 +175,6 @@ _gmodule_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return -1; } } -#endif - static int _gmodule_mmap(struct file *filp, struct vm_area_struct *vma) @@ -319,17 +202,11 @@ _gmodule_mmap(struct file *filp, struct vm_area_struct *vma) /* FILE OPERATIONS */ struct file_operations _gmodule_fops = { -#ifdef HAVE_UNLOCKED_IOCTL .unlocked_ioctl = _gmodule_unlocked_ioctl, -#else - .ioctl = _gmodule_ioctl, -#endif .open = _gmodule_open, .release = _gmodule_release, .mmap = _gmodule_mmap, -#ifdef HAVE_COMPAT_IOCTL .compat_ioctl = _gmodule_compat_ioctl, -#endif }; @@ -349,11 +226,7 @@ cleanup_module(void) } /* Finally, remove ourselves from the universe */ -#ifdef GMODULE_CONFIG_DEVFS_FS - if(devfs_handle) devfs_unregister(devfs_handle); -#else unregister_chrdev(_gmodule->major, _gmodule->name); -#endif } int __init @@ -367,21 +240,6 @@ init_module(void) /* Register ourselves */ -#ifdef GMODULE_CONFIG_DEVFS_FS - devfs_handle = devfs_register(NULL, - _gmodule->name, - DEVFS_FL_NONE, - _gmodule->major, - _gmodule->minor, - S_IFCHR | S_IRUGO | S_IWUGO, - &_gmodule_fops, - NULL); - if(!devfs_handle) { - printk(KERN_WARNING "%s: can't register device with devfs", - _gmodule->name); - } - rc = 0; -#else rc = register_chrdev(_gmodule->major, _gmodule->name, &_gmodule_fops); @@ -394,17 +252,12 @@ init_module(void) if(_gmodule->major == 0) { _gmodule->major = rc; } -#endif /* Specific module Initialization */ if(_gmodule->init) { int rc; if((rc = _gmodule->init()) < 0) { -#ifdef GMODULE_CONFIG_DEVFS_FS - if(devfs_handle) devfs_unregister(devfs_handle); -#else unregister_chrdev(_gmodule->major, _gmodule->name); -#endif return rc; } } diff --git a/sdk-6.5.27/systems/bde/linux/include/linux-bde.h b/sdk-6.5.27/systems/bde/linux/include/linux-bde.h index 40b41454b..a65425733 100755 --- a/sdk-6.5.27/systems/bde/linux/include/linux-bde.h +++ b/sdk-6.5.27/systems/bde/linux/include/linux-bde.h @@ -62,21 +62,6 @@ #ifdef __KERNEL__ #include -/* Key stone and Raptor has 2.6.21 but don't have definition */ -#if defined(KEYSTONE) || defined(RAPTOR) -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21)) - #ifdef PHYS_ADDRS_ARE_64BITS - typedef u64 phys_addr_t; - #else - typedef u32 phys_addr_t; - #endif - #endif -#endif -#endif - - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)) -#define LINUX_BDE_DMA_DEVICE_SUPPORT #endif #define LINUX_KERNEL_BDE_NAME "linux-kernel-bde" @@ -262,7 +247,7 @@ extern int lkbde_intr_cb_register(int d, #ifdef BCM_SAND_SUPPORT #include -#if defined(__DUNE_LINUX_BCM_CPU_PCIE__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if defined(__DUNE_LINUX_BCM_CPU_PCIE__) #ifndef _SIMPLE_MEMORY_ALLOCATION_ #define _SIMPLE_MEMORY_ALLOCATION_ 1 #endif diff --git a/sdk-6.5.27/systems/bde/linux/include/linux_dma.h b/sdk-6.5.27/systems/bde/linux/include/linux_dma.h index 27b434cf3..f3c29bf80 100755 --- a/sdk-6.5.27/systems/bde/linux/include/linux_dma.h +++ b/sdk-6.5.27/systems/bde/linux/include/linux_dma.h @@ -29,10 +29,6 @@ #endif /* CONFIG_NONCOHERENT_IO || CONFIG_DMA_NONCOHERENT */ #endif /* __mips__ */ -#if defined(BCM958525) && (LINUX_VERSION_CODE <= KERNEL_VERSION(3,6,5)) -#define REMAP_DMA_NONCACHED -#endif - #ifndef DMA_BIT_MASK #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) #endif diff --git a/sdk-6.5.27/systems/bde/linux/kernel/linux-kernel-bde.c b/sdk-6.5.27/systems/bde/linux/kernel/linux-kernel-bde.c index e27496220..ff8a2b0f1 100644 --- a/sdk-6.5.27/systems/bde/linux/kernel/linux-kernel-bde.c +++ b/sdk-6.5.27/systems/bde/linux/kernel/linux-kernel-bde.c @@ -60,14 +60,6 @@ #define PCI_USE_INT_INTX (0) #define PCI_USE_INT_MSI (1) #define PCI_USE_INT_MSIX (2) -#ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,110)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) -#define msix_table_size(flags) ((flags & PCI_MSIX_FLAGS_QSIZE) + 1) -#endif -#define msi_control_reg(base) (base + PCI_MSI_FLAGS) -#endif -#endif MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("Kernel BDE"); MODULE_LICENSE("GPL"); @@ -81,19 +73,19 @@ MODULE_LICENSE("GPL"); #define BDE_PCIE_MAXPAYLOAD_DEFAULT 256 #endif int maxpayload = BDE_PCIE_MAXPAYLOAD_DEFAULT; -LKM_MOD_PARAM(maxpayload, "i", int, 0); +module_param(maxpayload, int, 0); MODULE_PARM_DESC(maxpayload, "Limit maximum payload size and request size on PCIe devices"); /* Use MSI or MSIX interrupts */ int usemsi = -1; -LKM_MOD_PARAM(usemsi, "i", int, 0); +module_param(usemsi, int, 0); MODULE_PARM_DESC(usemsi, "Use MSI/ MSIX interrupts if supported by kernel"); /* Ignore all recognized devices (for debug purposes) */ int nodevices; -LKM_MOD_PARAM(nodevices, "i", int, 0); +module_param(nodevices, int, 0); MODULE_PARM_DESC(nodevices, "Ignore all recognized devices (default no)"); @@ -116,10 +108,6 @@ int msixcnt = 1; #define IRQF_SHARED SA_SHIRQ #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) -typedef unsigned long resource_size_t; -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) */ - #ifdef BCM_ICS #define BCM_ICS_CMIC_BASE 0x08000000 #else @@ -127,8 +115,8 @@ typedef unsigned long resource_size_t; /* Force interrupt line */ static int forceirq = -1; static uint32_t forceirqubm = 0xffffffff; -LKM_MOD_PARAM(forceirq, "i", int, 0); -LKM_MOD_PARAM(forceirqubm, "i", uint, 0); +module_param(forceirq, int, 0); +module_param(forceirqubm, uint, 0); MODULE_PARM_DESC(forceirq, "Override IRQ line assigned by boot loader"); MODULE_PARM_DESC(forceirqubm, @@ -136,13 +124,13 @@ MODULE_PARM_DESC(forceirqubm, /* Create SPI slave device (cannot be probed) */ static uint32_t spi_devid = 0; -LKM_MOD_PARAM(spi_devid, "i", uint, 0); +module_param(spi_devid, uint, 0); MODULE_PARM_DESC(spi_devid, "Create SPI slave device using this device ID"); /* Select SPI device revision (cannot be probed) */ static uint32_t spi_revid = 1; -LKM_MOD_PARAM(spi_revid, "i", uint, 0); +module_param(spi_revid, uint, 0); MODULE_PARM_DESC(spi_revid, "Select device revision for SPI slave device"); @@ -150,21 +138,21 @@ MODULE_PARM_DESC(spi_revid, /* Debug output */ static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Set debug level (default 0"); /* Use high memory for DMA */ /* module param for probing EB devices. */ static char *eb_bus; -LKM_MOD_PARAM(eb_bus, "s", charp, 0); +module_param(eb_bus, charp, 0); MODULE_PARM_DESC(eb_bus, "List of EB devices on platform. Input format (BA=%x IRQ=%d RD16=%d WR16=%d"); #ifdef KEYSTONE /* Force SPI Frequency */ static int spifreq = 0; -LKM_MOD_PARAM(spifreq, "i", int, 0); +module_param(spifreq, int, 0); MODULE_PARM_DESC(spifreq, "Force SPI Frequency for Keystone CPU (0 for default frequency)"); #endif @@ -173,29 +161,17 @@ MODULE_PARM_DESC(spifreq, /* Periodic timer to prevent stuck interrupt */ static int isrtickms = 1000; -LKM_MOD_PARAM(isrtickms, "i", int, (S_IRUGO | S_IWUSR)); +module_param(isrtickms, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(isrtickms, "Periodic ISR tick in milliseconds."); /* Debug purpose to simulate stuck interrupts */ static int dma_lock = 0; -LKM_MOD_PARAM(dma_lock, "i", int, (S_IRUGO | S_IWUSR)); +module_param(dma_lock, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(dma_lock, "Simulation of stuck interrupts."); /* Compatibility */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) -#define _ISR_RET irqreturn_t -#else -#define _ISR_RET int -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) -#define _ISR_PARAMS(_i,_d,_r) int _i, void *_d -#else -#define _ISR_PARAMS(_i,_d,_r) int _i, void *_d, struct pt_regs *_r -typedef irqreturn_t (*irq_handler_t)(int _i, void *_d, struct pt_regs *_r); -#endif -#define SYNC_IRQ(_i) synchronize_irq(_i) char * ___strtok; char * strtok(char * s,const char * ct) { @@ -215,8 +191,8 @@ char * strtok(char * s,const char * ct) ___strtok = send; return (sbegin); } -LKM_EXPORT_SYM(___strtok); -LKM_EXPORT_SYM(strtok); +EXPORT_SYMBOL(___strtok); +EXPORT_SYMBOL(strtok); /* PCIe capabilities */ #ifndef PCI_CAP_ID_EXP @@ -244,12 +220,6 @@ LKM_EXPORT_SYM(strtok); #define PCI_EXT_CAP_ID_VNDR 0x0b #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) -#define PCI_FIND_DEV(_d, _v, _fr) pci_find_device(_d, _v, _fr) -#else -#define PCI_FIND_DEV(_d, _v, _fr) pci_get_device(_d, _v, _fr) -#endif - #if defined(CONFIG_RESOURCES_64BIT) || defined(CONFIG_PHYS_ADDR_T_64BIT) #define PHYS_ADDR_IS_64BIT #endif @@ -296,9 +266,7 @@ typedef struct bde_ctrl_s { int bus_no; int be_pio; int use_msi; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) struct msix_entry *entries; -#endif int msix_cnt; union { /* Linux PCI device pointer */ @@ -310,9 +278,7 @@ typedef struct bde_ctrl_s { #define pci_device dev._pci_dev #define spi_device dev._spi_dev -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT struct device *dma_dev; -#endif struct memwin_s iowin[BDE_NUM_IOWIN_MAX]; @@ -823,9 +789,7 @@ iproc_cmicd_probe(struct platform_device *pldev) ctrl->isr = NULL; ctrl ->isr_data = NULL; -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT ctrl->dma_dev = &pldev->dev; -#endif /* Let's boogie */ _bde_add_device(); @@ -1886,9 +1850,9 @@ p2p_bridge(void) uint8 bridge_ctrl; uint8 rc_index; - if ((dev = PCI_FIND_DEV(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { if (debug >= 1) gprintk("fixing up PCI-to-PCI bridge\n"); /* Adjust command register */ @@ -1912,7 +1876,7 @@ p2p_bridge(void) /* Avoid DMA data corruption */ if (dev->vendor == HINT_HB4_VENDOR_ID) { /* Fix for HiNT bridge and BCM4704 DMA problem */ - if ((dev = PCI_FIND_DEV(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { /* Reset PrefetchEn (PE) */ pci_write_config_dword(dev, 0x8c, 1); if (debug >= 1) { @@ -1922,7 +1886,7 @@ p2p_bridge(void) } } /* Enable fast back-to-back read/write */ - if ((dev = PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) != NULL) { pci_read_config_word(dev, PCI_COMMAND, &cmd); cmd |= PCI_COMMAND_FAST_BACK; pci_read_config_byte(dev, PCI_BRIDGE_CONTROL, &bridge_ctrl); @@ -1935,19 +1899,19 @@ p2p_bridge(void) for(rc_index = 0; rc_index < MAX_RC_NUM; rc_index++) { dev_on_rc = pci_do_rc_dev_find(rc_index); if (dev_on_rc != NULL ) { - dev = PCI_FIND_DEV(0x184e, 0x1004, NULL); + dev = pci_get_device(0x184e, 0x1004, NULL); if (dev != NULL ) { pci_write_config_dword(dev,0x78,MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } } } - if ((dev = PCI_FIND_DEV(0x14e4, 0xb634, NULL)) != NULL) { + if ((dev = pci_get_device(0x14e4, 0xb634, NULL)) != NULL) { pci_write_config_dword(dev,0x78,MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(PCI_VNDID_PERICOM, PCI_DEVID_PI7C9X130, NULL)) != NULL) { + if ((dev = pci_get_device(PCI_VNDID_PERICOM, PCI_DEVID_PI7C9X130, NULL)) != NULL) { /* * Configure the PCIE cap: Max payload size: 256, Max Read * Request size: 256, disabling relax ordering. @@ -1957,8 +1921,8 @@ p2p_bridge(void) MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(FSL_VENDOR_ID, FSL8548PCIE_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(FSL_VENDOR_ID, FSL2020EPCIE_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(FSL_VENDOR_ID, FSL8548PCIE_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(FSL_VENDOR_ID, FSL2020EPCIE_DEVICE_ID, NULL)) != NULL) { /* * Configure the PCIE cap: Max payload size: 256, Max Read * Request size: 256, disabling relax ordering. @@ -1967,8 +1931,8 @@ p2p_bridge(void) pci_write_config_dword(dev, FSL8548PCIE_DEV_CTRL_REG, MAX_PAYLOAD_256B | MAX_READ_REQ_256B); } - if ((dev = PCI_FIND_DEV(BCM4716_VENDOR_ID, BCM4716PCIE_DEVICE_ID, NULL)) != NULL || - (dev = PCI_FIND_DEV(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, NULL)) != NULL) { + if ((dev = pci_get_device(BCM4716_VENDOR_ID, BCM4716PCIE_DEVICE_ID, NULL)) != NULL || + (dev = pci_get_device(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, NULL)) != NULL) { uint32 tmp, maxpayld, device_bmp=0, mask; unsigned long addr; uint16 tmp16, tmp161; @@ -1977,7 +1941,7 @@ p2p_bridge(void) pcie0 = dev; bus0 = dev->bus->number; - if ((pcie1 = PCI_FIND_DEV(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, pcie0)) != NULL) { + if ((pcie1 = pci_get_device(BCM53000_VENDOR_ID, BCM53000PCIE_DEVICE_ID, pcie0)) != NULL) { bus1 = pcie1->bus->number; } @@ -2074,7 +2038,7 @@ p2p_bridge(void) * The device supports 128, 512, and 1024 max payload sizes. */ dev = NULL; - while ((dev = PCI_FIND_DEV(PCI_VENDOR_ID_PLX, PCI_ANY_ID, dev)) != NULL) { + while ((dev = pci_get_device(PCI_VENDOR_ID_PLX, PCI_ANY_ID, dev)) != NULL) { if ((dev->device == PLX_PEX8608_DEV_ID) || (dev->device == PLX_PEX8617_DEV_ID)) { uint16 ctrl_reg; @@ -2173,7 +2137,6 @@ _device_rescan_validate(struct pci_dev *dev) #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) /** * _pci_msix_table_size - return the number of device's MSI-X table entries * @dev: pointer to the pci_dev data structure of MSI-X device function @@ -2183,45 +2146,17 @@ _pci_msix_table_size(struct pci_dev *dev) { int nr_entries = 0; -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,110)) - u16 control; - int pos; - - pos = pci_find_capability(dev, PCI_CAP_ID_MSIX); - if (pos) { - pci_read_config_word(dev, msi_control_reg(pos), &control); - nr_entries = msix_table_size(control); - } -#else -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) -{ - /* Pass large entry value to enable MSIX to get # of entires */ - struct msix_entry *entries; - entries = kmalloc(sizeof(struct msix_entry) * - PCI_MSIX_FLAGS_QSIZE, GFP_KERNEL); - if (entries != NULL) { - nr_entries = pci_enable_msix(dev, - entries, PCI_MSIX_FLAGS_QSIZE); - pci_disable_msix(dev); - kfree(entries); - } -} -#else nr_entries = pci_msix_vec_count(dev); -#endif if (nr_entries < 0) { nr_entries = 0; } -#endif return nr_entries; } -#endif static int _msi_connect(bde_ctrl_t *ctrl) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) int ret; if (ctrl->use_msi == PCI_USE_INT_MSIX) { int i; @@ -2244,23 +2179,8 @@ _msi_connect(bde_ctrl_t *ctrl) gprintk("MSIX Table size = %d\n", ctrl->msix_cnt); for (i = 0; i < ctrl->msix_cnt; i++) ctrl->entries[i].entry = i; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) ret = pci_enable_msix_range(ctrl->pci_device, ctrl->entries, ctrl->msix_cnt, ctrl->msix_cnt); -#else - ret = pci_enable_msix(ctrl->pci_device, - ctrl->entries, ctrl->msix_cnt); - if (ret > 0) { - /* Not enough vectors available , Retry MSI-X */ - gprintk("Retrying with MSI-X interrupts = %d\n", ret); - ctrl->msix_cnt = ret; - msixcnt = ret; - ret = pci_enable_msix(ctrl->pci_device, - ctrl->entries, ctrl->msix_cnt); - if (ret != 0) - goto er_intx_free; - } -#endif if (ret < 0) { /* Error */ goto er_intx_free; @@ -2269,7 +2189,6 @@ _msi_connect(bde_ctrl_t *ctrl) return 0; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { if (pci_enable_msi(ctrl->pci_device) == 0) { @@ -2285,11 +2204,9 @@ _msi_connect(bde_ctrl_t *ctrl) goto er_intx; } return 0; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) er_intx_free: gprintk("Failed to enable MSI-X interrupts = %d\n", ret); kfree(ctrl->entries); -#endif er_intx: return -1; @@ -2298,7 +2215,6 @@ _msi_connect(bde_ctrl_t *ctrl) static int _msi_disconnect(bde_ctrl_t *ctrl) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { if (ctrl->msix_cnt) { pci_disable_msix(ctrl->pci_device); @@ -2307,7 +2223,6 @@ _msi_disconnect(bde_ctrl_t *ctrl) ctrl->msix_cnt = 0; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { pci_disable_msi(ctrl->pci_device); } else { @@ -2344,7 +2259,6 @@ config_pci_intr_type(struct pci_dev *dev, bde_ctrl_t *ctrl, int iproc) } } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { /* check for support MSIX vector */ ret = _pci_msix_table_size(ctrl->pci_device); @@ -2353,7 +2267,6 @@ config_pci_intr_type(struct pci_dev *dev, bde_ctrl_t *ctrl, int iproc) ctrl->use_msi = PCI_USE_INT_MSI; } } -#endif if (ctrl->use_msi == PCI_USE_INT_MSI) { /* check for support MSI vector */ @@ -2602,7 +2515,7 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } #endif - if ((PCI_FIND_DEV(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { + if ((pci_get_device(BCM4704_VENDOR_ID, BCM4704_DEVICE_ID, NULL)) != NULL) { /* * Decrease the PCI bus priority for the CPU for better overall * system performance. This change significantly reduces the @@ -2620,23 +2533,23 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } } - if ((PCI_FIND_DEV(SIBYTE_PCI_VENDOR_ID, SIBYTE_PCI_DEVICE_ID, NULL)) != NULL) { + if ((pci_get_device(SIBYTE_PCI_VENDOR_ID, SIBYTE_PCI_DEVICE_ID, NULL)) != NULL) { /* * The BCM91125CPCI CPU boards with a PCI-PCI bridge use the same * interrupt line for all switch ships behind the bridge. */ - if (PCI_FIND_DEV(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL) || - PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL) || - PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) { + if (pci_get_device(DC21150_VENDOR_ID, DC21150_DEVICE_ID, NULL) || + pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL) || + pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)) { /* * By default we try to guess the correct IRQ based on the design. * For now we only look at the bridge vendor, but it may be necessary * to look at the switch chip configuration as well. */ if (forceirq == -1) { - if ((PCI_FIND_DEV(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) || + if ((pci_get_device(HINT_HB4_VENDOR_ID, HINT_HB4_DEVICE_ID, NULL)) || ((dev->device == BCM5674_DEVICE_ID) && - (PCI_FIND_DEV(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)))) { + (pci_get_device(PI7C8150_VENDOR_ID, PI7C8150_DEVICE_ID, NULL)))) { forceirq = 58; } else { forceirq = 56; @@ -2645,9 +2558,9 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } } - if (((PCI_FIND_DEV(BCM58525_PCI_VENDOR_ID, BCM58525_PCI_DEVICE_ID, NULL)) != NULL) || - ((PCI_FIND_DEV(BCM58525_PCI_VENDOR_ID, BCM58522_PCI_DEVICE_ID, NULL)) != NULL) || - ((PCI_FIND_DEV(BCM58712_PCI_VENDOR_ID, BCM58712_PCI_DEVICE_ID, NULL)) != NULL) ) { + if (((pci_get_device(BCM58525_PCI_VENDOR_ID, BCM58525_PCI_DEVICE_ID, NULL)) != NULL) || + ((pci_get_device(BCM58525_PCI_VENDOR_ID, BCM58522_PCI_DEVICE_ID, NULL)) != NULL) || + ((pci_get_device(BCM58712_PCI_VENDOR_ID, BCM58712_PCI_DEVICE_ID, NULL)) != NULL) ) { /* BCM58525/BCM58712 CPU boards support 128 Max payload size */ if (maxpayload && maxpayload != 128) { maxpayload = 128; @@ -2841,9 +2754,7 @@ _pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) } -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT ctrl->dma_dev = &dev->dev; -#endif if (debug >= 2) { gprintk("_pci_probe: configured dev:0x%x rev:0x%x with base_addresses: 0x%lx 0x%lx\n", @@ -2908,14 +2819,12 @@ _pci_remove(struct pci_dev* dev) /* Free our interrupt handler, if we have one */ if (ctrl->isr || ctrl->isr2) { #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi >= PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) free_irq(ctrl->entries[i].vector, ctrl); } else -#endif #endif { free_irq(ctrl->iLine, ctrl); @@ -3148,11 +3057,7 @@ _init(void) if (use_msi == PCI_USE_INT_NONE) { /* Compilation flag determines default value */ #ifdef BDE_LINUX_USE_MSIX_INTERRUPT -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) use_msi = PCI_USE_INT_MSIX; -#else - use_msi = PCI_USE_INT_MSI; -#endif #elif defined(BDE_LINUX_USE_MSI_INTERRUPT) use_msi = PCI_USE_INT_MSI; #else @@ -3679,8 +3584,8 @@ _run_isrs(bde_ctrl_t *ctrl) } } -static _ISR_RET -_isr(_ISR_PARAMS(irq, dev_id, iregs)) +static irqreturn_t +_isr(int irq, void *dev_id) { bde_ctrl_t *ctrl = (bde_ctrl_t *) dev_id; @@ -3804,7 +3709,6 @@ _interrupt_connect(int d, if(ret != 0) goto msi_exit; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi == PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) { @@ -3825,7 +3729,6 @@ _interrupt_connect(int d, } } else -#endif #endif { #if defined(IPROC_CMICD) && defined(CONFIG_OF) @@ -3939,7 +3842,7 @@ _interrupt_disconnect(int d) ctrl->fmask = 0; if (ctrl->isr) { /* Primary handler still active */ - SYNC_IRQ(ctrl->iLine); + synchronize_irq(ctrl->iLine); return 0; } } else { @@ -3950,14 +3853,13 @@ _interrupt_disconnect(int d) ctrl->isr_data = NULL; if (ctrl->isr2) { /* Secondary handler still active */ - SYNC_IRQ(ctrl->iLine); + synchronize_irq(ctrl->iLine); return 0; } } if (isr_active) { #ifdef CONFIG_PCI_MSI -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,84)) if (ctrl->use_msi >= PCI_USE_INT_MSIX) { int i; for (i = 0; i < ctrl->msix_cnt; i++) { @@ -3970,7 +3872,6 @@ _interrupt_disconnect(int d) } else #endif -#endif #if defined(IPROC_CMICD) && defined(CONFIG_OF) if (of_find_compatible_node(NULL, NULL, IPROC_CMICX_COMPATIBLE)) { int i; @@ -4345,7 +4246,7 @@ lkbde_mem_write(int d, uint32 addr, uint32 *buf) *((uint32_t*)full_addr) = *buf; return 0; } -LKM_EXPORT_SYM(lkbde_mem_write); +EXPORT_SYMBOL(lkbde_mem_write); int lkbde_mem_read(int d, uint32 addr, uint32 *buf) @@ -4360,7 +4261,7 @@ lkbde_mem_read(int d, uint32 addr, uint32 *buf) *buf = *((uint32_t*)full_addr); return 0; } -LKM_EXPORT_SYM(lkbde_mem_read); +EXPORT_SYMBOL(lkbde_mem_read); #endif /* BCM_SAND_SUPPORT */ static ibde_t _ibde = { @@ -4555,11 +4456,7 @@ lkbde_get_dma_dev(int d) return NULL; } -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT return (void *)_devices[d].dma_dev; -#else - return (void *)_devices[d].pci_device; -#endif } void * @@ -4768,25 +4665,25 @@ lkbde_intr_cb_register(int d, /* * Export functions */ -LKM_EXPORT_SYM(linux_bde_create); -LKM_EXPORT_SYM(linux_bde_destroy); -LKM_EXPORT_SYM(lkbde_get_dev_phys); -LKM_EXPORT_SYM(lkbde_get_dev_virt); -LKM_EXPORT_SYM(lkbde_get_dev_resource); -LKM_EXPORT_SYM(lkbde_get_hw_dev); -LKM_EXPORT_SYM(lkbde_get_dma_dev); -LKM_EXPORT_SYM(lkbde_irq_mask_set); -LKM_EXPORT_SYM(lkbde_irq_mask_get); -LKM_EXPORT_SYM(lkbde_get_dev_phys_hi); -LKM_EXPORT_SYM(lkbde_dev_state_set); -LKM_EXPORT_SYM(lkbde_dev_state_get); -LKM_EXPORT_SYM(lkbde_dev_instid_set); -LKM_EXPORT_SYM(lkbde_dev_instid_get); +EXPORT_SYMBOL(linux_bde_create); +EXPORT_SYMBOL(linux_bde_destroy); +EXPORT_SYMBOL(lkbde_get_dev_phys); +EXPORT_SYMBOL(lkbde_get_dev_virt); +EXPORT_SYMBOL(lkbde_get_dev_resource); +EXPORT_SYMBOL(lkbde_get_hw_dev); +EXPORT_SYMBOL(lkbde_get_dma_dev); +EXPORT_SYMBOL(lkbde_irq_mask_set); +EXPORT_SYMBOL(lkbde_irq_mask_get); +EXPORT_SYMBOL(lkbde_get_dev_phys_hi); +EXPORT_SYMBOL(lkbde_dev_state_set); +EXPORT_SYMBOL(lkbde_dev_state_get); +EXPORT_SYMBOL(lkbde_dev_instid_set); +EXPORT_SYMBOL(lkbde_dev_instid_get); #ifdef BCM_SAND_SUPPORT -LKM_EXPORT_SYM(lkbde_cpu_write); -LKM_EXPORT_SYM(lkbde_cpu_read); -LKM_EXPORT_SYM(lkbde_cpu_pci_register); +EXPORT_SYMBOL(lkbde_cpu_write); +EXPORT_SYMBOL(lkbde_cpu_read); +EXPORT_SYMBOL(lkbde_cpu_pci_register); #endif -LKM_EXPORT_SYM(lkbde_is_dev_managed_by_instance); -LKM_EXPORT_SYM(lkbde_get_inst_devs); -LKM_EXPORT_SYM(lkbde_intr_cb_register); +EXPORT_SYMBOL(lkbde_is_dev_managed_by_instance); +EXPORT_SYMBOL(lkbde_get_inst_devs); +EXPORT_SYMBOL(lkbde_intr_cb_register); diff --git a/sdk-6.5.27/systems/bde/linux/kernel/linux_dma.c b/sdk-6.5.27/systems/bde/linux/kernel/linux_dma.c index e17e4d3c7..a36bb4122 100644 --- a/sdk-6.5.27/systems/bde/linux/kernel/linux_dma.c +++ b/sdk-6.5.27/systems/bde/linux/kernel/linux_dma.c @@ -100,37 +100,10 @@ #endif #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) -#include -#define virt_to_bus virt_to_phys -#define bus_to_virt phys_to_virt -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21)) -#define VIRT_TO_PAGE(p) virt_to_page((void*)(p)) -#else -#define VIRT_TO_PAGE(p) virt_to_page((p)) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) -#define BDE_DMA_MAPPING_ERROR(d, p) dma_mapping_error((d),(p)) -#else -#define BDE_DMA_MAPPING_ERROR(d, p) dma_mapping_error((p)) -#endif - #ifndef KMALLOC_MAX_SIZE #define KMALLOC_MAX_SIZE (1UL << (MAX_ORDER - 1 + PAGE_SHIFT)) #endif -/* Compatibility */ -#ifdef LKM_2_4 -#define MEM_MAP_RESERVE mem_map_reserve -#define MEM_MAP_UNRESERVE mem_map_unreserve -#else /* LKM_2_6 */ -#define MEM_MAP_RESERVE SetPageReserved -#define MEM_MAP_UNRESERVE ClearPageReserved -#endif /* LKM_2_x */ - #ifndef GFP_DMA32 #define GFP_DMA32 0 #endif @@ -147,15 +120,9 @@ static int mem_flags = GFP_ATOMIC | GFP_DMA; #endif #ifdef IPROC_CMICD -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) #ifndef COHERENT_ALLOC_USE_DMA_TO_PHYS #define COHERENT_ALLOC_USE_DMA_TO_PHYS 1 #endif -#else -#ifndef COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define COHERENT_ALLOC_PHYS_IS_DMA_ADDR 1 -#endif -#endif #endif /* IPROC_CMICD */ /* @@ -165,24 +132,15 @@ static int mem_flags = GFP_ATOMIC | GFP_DMA; #ifndef COHERENT_ALLOC_USE_DMA_TO_PHYS #define COHERENT_ALLOC_USE_DMA_TO_PHYS 0 #endif -#ifndef COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define COHERENT_ALLOC_PHYS_IS_DMA_ADDR 0 -#endif #if COHERENT_ALLOC_USE_DMA_TO_PHYS -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0)) #include -#else -#include -#endif #endif /* Macro to get the host physical address when using dma_alloc_coherent() */ #if COHERENT_ALLOC_USE_DMA_TO_PHYS #define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) \ ((_dev) ? dma_to_phys((_dev), (_dma_a)) : virt_to_phys(_kvirt_a)) -#elif COHERENT_ALLOC_PHYS_IS_DMA_ADDR -#define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) (_dma_a) #else #define HOST_PHYS_ADDR(_dev, _dma_a, _kvirt_a) (virt_to_phys(_kvirt_a)) #endif @@ -195,24 +153,24 @@ MODULE_PARM_DESC(dma_debug, /* DMA memory pool size */ static char *dmasize; -LKM_MOD_PARAM(dmasize, "s", charp, 0); +module_param(dmasize, charp, 0); MODULE_PARM_DESC(dmasize, "Specify DMA memory size (default 4MB)"); /* Select DMA memory pool allocation method */ static int dmaalloc = ALLOC_METHOD_DEFAULT; -LKM_MOD_PARAM(dmaalloc, "i", int, 0); +module_param(dmaalloc, int, 0); MODULE_PARM_DESC(dmaalloc, "Select DMA memory allocation method"); /* Use high memory for DMA */ static char *himem; -LKM_MOD_PARAM(himem, "s", charp, 0); +module_param(himem, charp, 0); MODULE_PARM_DESC(himem, "Use high memory for DMA (default no)"); /* Physical high memory address to use for DMA */ static char *himemaddr = 0; -LKM_MOD_PARAM(himemaddr, "s", charp, 0); +module_param(himemaddr, charp, 0); MODULE_PARM_DESC(himemaddr, "Physical address to use for high memory DMA"); @@ -515,7 +473,7 @@ _dma_segment_alloc(size_t size, size_t blk_size) for (page_addr = dseg->blk_ptr[i]; page_addr < dseg->blk_ptr[i] + dseg->blk_size; page_addr += PAGE_SIZE) { - MEM_MAP_RESERVE(VIRT_TO_PAGE(page_addr)); + SetPageReserved(virt_to_page((void*)page_addr)); } } else if (dseg->blk_ptr[i]) { dseg->blk_ptr[i] &= ~3; @@ -548,7 +506,7 @@ _dma_segment_free(dma_segment_t *dseg) for (page_addr = dseg->blk_ptr[i]; page_addr < dseg->blk_ptr[i] + dseg->blk_size; page_addr += PAGE_SIZE) { - MEM_MAP_UNRESERVE(VIRT_TO_PAGE(page_addr)); + ClearPageReserved(virt_to_page((void*)page_addr)); } free_pages(dseg->blk_ptr[i], dseg->blk_order); } @@ -675,12 +633,12 @@ _edk_mpool_alloc(int dev_id, size_t size) (unsigned long)size); return; } - cpu_pbase = virt_to_bus(dma_vbase); + cpu_pbase = virt_to_phys(dma_vbase); /* Use dma_map_single to obtain DMA bus address or IOVA if IOMMU is present. */ if (dev) { pbase = dma_map_single(dev, dma_vbase, size, DMA_BIDIRECTIONAL); - if (BDE_DMA_MAPPING_ERROR(dev, pbase)) { + if (dma_mapping_error(dev, pbase)) { gprintk("Failed to map memory at %p for EDK\n", dma_vbase); _pgfree(dma_vbase); dma_vbase = NULL; @@ -973,7 +931,7 @@ void _dma_per_device_init(int dev_index) _dma_pool_alloc_state == DMA_POOL_MAPPED)) { /* Map RAM virtual address space for DMA usage and obtain DMA bus address or IOVA if iommu is present. */ dma_addr = dma_map_single(dev, _dma_vbase, _dma_mem_size, DMA_BIDIRECTIONAL); - if (BDE_DMA_MAPPING_ERROR(dev, dma_addr)) { + if (dma_mapping_error(dev, dma_addr)) { gprintk("Failed to map DMA buffer pool for device %d at kernel_virt:0x%lx\n", dev_index, (unsigned long)_dma_vbase); if (_dma_pool_alloc_state == DMA_POOL_INITIALIZED) { _mpool_free(); @@ -1169,7 +1127,7 @@ _l2p(int d, void *vaddr) return 0; } - return ((sal_paddr_t)virt_to_bus(vaddr)); + return ((sal_paddr_t)virt_to_phys(vaddr)); } void * @@ -1185,7 +1143,7 @@ _p2l(int d, sal_paddr_t paddr) return (void *)(vaddr + (sal_vaddr_t)(paddr - _dma_pbase)); } - return bus_to_virt(paddr); + return phys_to_virt(paddr); } /* @@ -1294,8 +1252,8 @@ _dma_pprint(struct seq_file *m) */ #ifdef BDE_EDK_SUPPORT -LKM_EXPORT_SYM(lkbde_edk_get_dma_info); +EXPORT_SYMBOL(lkbde_edk_get_dma_info); #endif -LKM_EXPORT_SYM(kmalloc_giant); -LKM_EXPORT_SYM(kfree_giant); -LKM_EXPORT_SYM(lkbde_get_dma_info); +EXPORT_SYMBOL(kmalloc_giant); +EXPORT_SYMBOL(kfree_giant); +EXPORT_SYMBOL(lkbde_get_dma_info); diff --git a/sdk-6.5.27/systems/bde/linux/user/kernel/linux-user-bde.c b/sdk-6.5.27/systems/bde/linux/user/kernel/linux-user-bde.c index e57defe59..3beedcf19 100644 --- a/sdk-6.5.27/systems/bde/linux/user/kernel/linux-user-bde.c +++ b/sdk-6.5.27/systems/bde/linux/user/kernel/linux-user-bde.c @@ -27,9 +27,7 @@ #include #include "linux-user-bde.h" -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) #include -#endif MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("User BDE Helper Module"); @@ -186,23 +184,23 @@ static uint32 *ihost_intr_enable_base = NULL; /* Module parameter for Interruptible timeout */ static int intr_timeout = 0; -LKM_MOD_PARAM(intr_timeout, "i", int, (S_IRUGO | S_IWUSR)); +module_param(intr_timeout, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_timeout, "Interruptible wait timeout in milliseconds for Interrupt to be triggered."); static ulong intr_count = 0; -LKM_MOD_PARAM(intr_count, "intr_count", ulong, (S_IRUGO | S_IWUSR)); +module_param(intr_count, ulong, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_count, "Interrupt count provides information about the number of times the ISR is called."); static ulong intr_timeout_count = 0; -LKM_MOD_PARAM(intr_timeout_count, "intr_timeout_count", ulong, (S_IRUGO | S_IWUSR)); +module_param(intr_timeout_count, ulong, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(intr_timeout_count, "Interrupt timeout count provides information about the number of times the interrupt wait is timeed out."); /* Debug output */ static int debug; -LKM_MOD_PARAM(debug, "i", int, (S_IRUGO | S_IWUSR)); +module_param(debug, int, (S_IRUGO | S_IWUSR)); MODULE_PARM_DESC(debug, "Set debug level (default 0)."); diff --git a/sdk-6.5.27/systems/bde/linux/user/linux-user-bde.c b/sdk-6.5.27/systems/bde/linux/user/linux-user-bde.c index cabcafbce..9c4bb3a32 100644 --- a/sdk-6.5.27/systems/bde/linux/user/linux-user-bde.c +++ b/sdk-6.5.27/systems/bde/linux/user/linux-user-bde.c @@ -65,7 +65,6 @@ extern int bcm_sim_path_get(void); #include #ifdef KEYSTONE -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) #include #include @@ -73,16 +72,13 @@ extern int bcm_sim_path_get(void); #include #define LINUX_SPIDEV_SUPPORT 1 -#else -#define LINUX_SPIDEV_SUPPORT 0 -#endif #else /* !KEYSTONE */ #define LINUX_SPIDEV_SUPPORT 0 #endif /* KEYSTONE */ -#if defined(BCM_ESW_SUPPORT) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) +#if defined(BCM_ESW_SUPPORT) #define CMIC_SPI_SUPPORT 1 #endif #ifndef CMIC_SPI_SUPPORT diff --git a/sdk-6.5.27/systems/linux/kernel/modules/bcm-knet/bcm-knet.c b/sdk-6.5.27/systems/linux/kernel/modules/bcm-knet/bcm-knet.c index 7e717e4e4..9522b820e 100755 --- a/sdk-6.5.27/systems/linux/kernel/modules/bcm-knet/bcm-knet.c +++ b/sdk-6.5.27/systems/linux/kernel/modules/bcm-knet/bcm-knet.c @@ -76,97 +76,97 @@ MODULE_DESCRIPTION("Network Device Driver for Broadcom BCM TxRx API"); MODULE_LICENSE("GPL"); static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (default 0)"); static char *mac_addr = NULL; -LKM_MOD_PARAM(mac_addr, "s", charp, 0); +module_param(mac_addr, charp, 0); MODULE_PARM_DESC(mac_addr, "Ethernet MAC address (default 02:10:18:xx:xx:xx)"); static int rx_buffer_size = 9216; -LKM_MOD_PARAM(rx_buffer_size, "i", int, 0); +module_param(rx_buffer_size, int, 0); MODULE_PARM_DESC(rx_buffer_size, "Size of RX packet buffers (default 9216)"); static int default_mtu = 1500; -LKM_MOD_PARAM(default_mtu, "i", int, 0); +module_param(default_mtu, int, 0); MODULE_PARM_DESC(default_mtu, "Default MTU for KNET network interfaces (default 1500)"); static int rx_sync_retry = 1000; -LKM_MOD_PARAM(rx_sync_retry, "i", int, 0); +module_param(rx_sync_retry, int, 0); MODULE_PARM_DESC(rx_sync_retry, "Retries if chain is incomplete on interrupt (default 10)"); static char *base_dev_name = NULL; -LKM_MOD_PARAM(base_dev_name, "s", charp, 0); +module_param(base_dev_name, charp, 0); MODULE_PARM_DESC(base_dev_name, "Base device name (default bcm0, bcm1, etc.)"); static int rcpu_mode = 0; -LKM_MOD_PARAM(rcpu_mode, "i", int, 0); +module_param(rcpu_mode, int, 0); MODULE_PARM_DESC(rcpu_mode, "Enable RCPU encapsulation (default 0)"); static char *rcpu_dmac = NULL; -LKM_MOD_PARAM(rcpu_dmac, "s", charp, 0); +module_param(rcpu_dmac, charp, 0); MODULE_PARM_DESC(rcpu_dmac, "RCPU destination MAC address (by default use L2 destination MAC address)"); static char *rcpu_smac = NULL; -LKM_MOD_PARAM(rcpu_smac, "s", charp, 0); +module_param(rcpu_smac, charp, 0); MODULE_PARM_DESC(rcpu_smac, "RCPU source MAC address (by default use L2 source MAC address)"); static int rcpu_ethertype = 0xde08; -LKM_MOD_PARAM(rcpu_ethertype, "i", int, 0); +module_param(rcpu_ethertype, int, 0); MODULE_PARM_DESC(rcpu_ethertype, "RCPU EtherType (default DE08h)"); static int rcpu_signature = 0; -LKM_MOD_PARAM(rcpu_signature, "i", int, 0); +module_param(rcpu_signature, int, 0); MODULE_PARM_DESC(rcpu_signature, "RCPU Signature (default is PCI device ID)"); static int rcpu_vlan = 1; -LKM_MOD_PARAM(rcpu_vlan, "i", int, 0); +module_param(rcpu_vlan, int, 0); MODULE_PARM_DESC(rcpu_vlan, "RCPU VLAN ID (default 1)"); static int use_rx_skb = 0; -LKM_MOD_PARAM(use_rx_skb, "i", int, 0); +module_param(use_rx_skb, int, 0); MODULE_PARM_DESC(use_rx_skb, "Use socket buffers for receive operation (default 0)"); static int num_rx_prio = 1; -LKM_MOD_PARAM(num_rx_prio, "i", int, 0); +module_param(num_rx_prio, int, 0); MODULE_PARM_DESC(num_rx_prio, "Number of filter priorities per Rx DMA channel"); static int rx_rate[8] = { 100000, 100000, 100000, 100000, 100000, 100000, 100000, 0 }; -LKM_MOD_PARAM_ARRAY(rx_rate, "1-4i", int, NULL, 0); +module_param_array(rx_rate, int, NULL, 0); MODULE_PARM_DESC(rx_rate, "Rx rate in packets per second (default 100000)"); static int rx_burst[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -LKM_MOD_PARAM_ARRAY(rx_burst, "1-4i", int, NULL, 0); +module_param_array(rx_burst, int, NULL, 0); MODULE_PARM_DESC(rx_burst, "Rx rate burst maximum in packets (default rx_rate/10)"); static int check_rcpu_signature = 0; -LKM_MOD_PARAM(check_rcpu_signature, "i", int, 0); +module_param(check_rcpu_signature, int, 0); MODULE_PARM_DESC(check_rcpu_signature, "Check RCPU Signature for Tx packets from RCPU interfaces"); static int basedev_suspend = 0; -LKM_MOD_PARAM(basedev_suspend, "i", int, 0); +module_param(basedev_suspend, int, 0); MODULE_PARM_DESC(basedev_suspend, "Pause traffic till base device is up (enabled by default in NAPI mode)"); static int mirror_local = 1; -LKM_MOD_PARAM(mirror_local, "i", int, 0); +module_param(mirror_local, int, 0); MODULE_PARM_DESC(mirror_local, "Encapasulate packets based on mirror_to interface configuration, e.g. " "encapsulate non-RCPU packets when mirrored to an RCPU interface " @@ -176,27 +176,27 @@ MODULE_PARM_DESC(mirror_local, * Force to add one layer of VLAN tag to untagged packets on Dune devices */ static int force_tagged = 1; -LKM_MOD_PARAM(force_tagged, "i", int, 0); +module_param(force_tagged, int, 0); MODULE_PARM_DESC(force_tagged, "Always tagged with VLAN tag with spceified VID or VSI(default 1)"); static int ft_tpid=0x8100; -LKM_MOD_PARAM(ft_tpid, "i", int, 0); +module_param(ft_tpid, int, 0); MODULE_PARM_DESC(ft_tpid, "Tag Protocol Identifier (TPID) indicates the frame type (default 0x8100)"); static int ft_pri=0; -LKM_MOD_PARAM(ft_pri, "i", int, 0); +module_param(ft_pri, int, 0); MODULE_PARM_DESC(ft_cfi, "Priority (PRI) indicates the frame priority (default 0)"); static int ft_cfi=0; -LKM_MOD_PARAM(ft_cfi, "i", int, 0); +module_param(ft_cfi, int, 0); MODULE_PARM_DESC(ft_cfi, "Canonical Format Indicator (CFI) indicates whether a MAC address is encapsulated in canonical format over different transmission media (default 0)"); static int ft_vid=0; -LKM_MOD_PARAM(ft_vid, "i", int, 0); +module_param(ft_vid, int, 0); MODULE_PARM_DESC(ft_vid, "VLAN ID (VID) indicates the VLAN to which a frame belongs (default 0)"); @@ -263,30 +263,21 @@ static int dbg_pkt_enable = 0; #if NAPI_SUPPORT static int use_napi = 0; -LKM_MOD_PARAM(use_napi, "i", int, 0); +module_param(use_napi, int, 0); MODULE_PARM_DESC(use_napi, "Use NAPI interface (default 0)"); static int napi_weight = 64; -LKM_MOD_PARAM(napi_weight, "i", int, 0); +module_param(napi_weight, int, 0); MODULE_PARM_DESC(napi_weight, "Weight of NAPI interfaces (default 64)"); -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) -#define bkn_napi_enable(_dev, _napi) netif_poll_enable(_dev) -#define bkn_napi_disable(_dev, _napi) netif_poll_disable(_dev) -#define bkn_napi_schedule(_dev, _napi) netif_rx_schedule(_dev) -#define bkn_napi_schedule_prep(_dev, _napi) netif_rx_schedule_prep(_dev) -#define __bkn_napi_schedule(_dev, _napi) __netif_rx_schedule(_dev) -#define bkn_napi_complete(_dev, _napi) netif_rx_complete(_dev) -#else #define bkn_napi_enable(_dev, _napi) napi_enable(_napi) #define bkn_napi_disable(_dev, _napi) napi_disable(_napi) #define bkn_napi_schedule(_dev, _napi) napi_schedule(_napi) #define bkn_napi_schedule_prep(_dev, _napi) napi_schedule_prep(_napi) #define __bkn_napi_schedule(_dev, _napi) __napi_schedule(_napi) #define bkn_napi_complete(_dev, _napi) napi_complete(_napi) -#endif #else @@ -316,208 +307,7 @@ static int napi_weight = 0; #define PCI_SET_DMA_MASK(pdev, mask) dma_set_mask(&(pdev)->dev, (mask)) #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)) -#define NETDEV_UPDATE_TRANS_START_TIME(dev) dev->trans_start = jiffies -#else -#define NETDEV_UPDATE_TRANS_START_TIME(dev) netif_trans_update(dev) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) -#define skb_copy_to_linear_data(_skb, _pkt, _len) \ - eth_copy_and_sum(_skb, _pkt, _len, 0) -struct napi_struct { int not_used; }; -#define netif_napi_add(_dev, _napi, _poll, _weight) do { \ - (_dev)->poll = _poll; \ - (_dev)->weight = _weight; \ -} while(0) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) -#define SKB_PADTO(_skb,_len) (((_skb = skb_padto(_skb,_len)) == NULL) ? -1 : 0) -#else -#define SKB_PADTO(_skb,_len) skb_padto(_skb,_len) -#endif - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)) -#define skb_header_cloned(_skb) \ - skb_cloned(_skb) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,27) -static inline void *netdev_priv(struct net_device *dev) -{ - return dev->priv; -} -#endif /* KERNEL_VERSION(2,4,27) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23) -/* Special check for MontaVista 2.4.20 MIPS */ -#if !(defined(MAX_USER_RT_PRIO) && defined(CONFIG_MIPS)) -static inline void free_netdev(struct net_device *dev) -{ - kfree(dev); -} -#endif -static inline void netif_poll_disable(struct net_device *dev) -{ - while (test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state)) { - /* No hurry. */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(1); - } -} -static inline void netif_poll_enable(struct net_device *dev) -{ - clear_bit(__LINK_STATE_RX_SCHED, &dev->state); -} -#endif /* KERNEL_VERSION(2,4,23) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,21) -static struct sk_buff *skb_pad(struct sk_buff *skb, int pad) -{ - struct sk_buff *nskb; - - /* If the skbuff is non linear tailroom is always zero.. */ - if(skb_tailroom(skb) >= pad) - { - memset(skb->data+skb->len, 0, pad); - return skb; - } - - nskb = skb_copy_expand(skb, skb_headroom(skb), skb_tailroom(skb) + pad, GFP_ATOMIC); - kfree_skb(skb); - if(nskb) - memset(nskb->data+nskb->len, 0, pad); - return nskb; -} -static inline struct sk_buff *skb_padto(struct sk_buff *skb, unsigned int len) -{ - unsigned int size = skb->len; - if(likely(size >= len)) - return skb; - return skb_pad(skb, len-size); -} -#endif /* KERNEL_VERSION(2,4,21) */ - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) -#define bkn_vlan_hwaccel_put_tag(_skb, _proto, _tci) \ - __vlan_hwaccel_put_tag(_skb, _tci) -#else -#define bkn_vlan_hwaccel_put_tag(_skb, _proto, _tci) \ - __vlan_hwaccel_put_tag(_skb, htons(_proto), _tci) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0) -#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */ -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) -#define bkn_dma_mapping_error(d, a) \ - dma_mapping_error(a) -#define bkn_pci_dma_mapping_error(d, a) \ - pci_dma_mapping_error(a) -#else -#define bkn_dma_mapping_error(d, a) \ - dma_mapping_error(d, a) -#define bkn_pci_dma_mapping_error(d, a) \ - pci_dma_mapping_error(d, a) -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) -enum hwtstamp_tx_types { - HWTSTAMP_TX_OFF, - HWTSTAMP_TX_ON, - HWTSTAMP_TX_ONESTEP_SYNC -}; -enum { - SKBTX_HW_TSTAMP = 1 << 0, - SKBTX_SW_TSTAMP = 1 << 1, - SKBTX_IN_PROGRESS = 1 << 2, -}; -struct skb_shared_hwtstamps { - ktime_t hwtstamp; - ktime_t syststamp; -}; -struct bkn_skb_shared_info { - uint8_t tx_flags; - struct skb_shared_hwtstamps hwtstamps; -}; -#define bkn_skb_shinfo(_skb) ((struct bkn_skb_shared_info *)(unsigned char *)_skb->end) -#define bkn_skb_tx_flags(_skb) bkn_skb_shinfo(_skb)->tx_flags -static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) -{ - return &bkn_skb_shinfo(skb)->hwtstamps; -} -void skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps) -{ -} -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ -} -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) -static inline ktime_t ns_to_ktime(u64 ns) -{ - static const ktime_t ktime; - return ktime; -} -#endif -#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37) #include -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -enum { - SKBTX_HW_TSTAMP = 1 << 0, - SKBTX_SW_TSTAMP = 1 << 1, - SKBTX_IN_PROGRESS = 1 << 2, -}; -#define bkn_skb_tx_flags(_skb) skb_shinfo(_skb)->tx_flags.flags -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ -} -#else -#include - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -#endif - -#define bkn_skb_tx_flags(_skb) skb_shinfo(_skb)->tx_flags -static inline void bkn_skb_tx_timestamp(struct sk_buff *skb) -{ - return skb_tx_timestamp(skb); -} -#endif - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) -#define bkn_dev_net_set(dev, net) -#else -#define bkn_dev_net_set(dev, net) dev_net_set(dev, net) -#endif - -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT -#define BKN_DMA_DEV device -#define BKN_DMA_FROMDEV DMA_FROM_DEVICE -#define BKN_DMA_TODEV DMA_TO_DEVICE -#define BKN_DMA_MAP_SINGLE(d,p,s,r) dma_map_single(d,p,s,r) -#define BKN_DMA_UNMAP_SINGLE(d,a,s,r) dma_unmap_single(d,a,s,r) -#define BKN_DMA_ALLOC_COHERENT(d,s,h) dma_alloc_coherent(d,s,h,GFP_ATOMIC|GFP_DMA32) -#define BKN_DMA_FREE_COHERENT(d,s,a,h) dma_free_coherent(d,s,a,h) -#define BKN_DMA_MAPPING_ERROR(d,a) bkn_dma_mapping_error(d,a) -#else -#define BKN_DMA_DEV pci_dev -#define BKN_DMA_FROMDEV PCI_DMA_FROMDEVICE -#define BKN_DMA_TODEV PCI_DMA_TODEVICE -#define BKN_DMA_MAP_SINGLE(d,p,s,r) pci_map_single(d,p,s,r) -#define BKN_DMA_UNMAP_SINGLE(d,a,s,r) pci_unmap_single(d,a,s,r) -#define BKN_DMA_ALLOC_COHERENT(d,s,h) pci_alloc_consistent(d,s,h) -#define BKN_DMA_FREE_COHERENT(d,s,a,h) pci_free_consistent(d,s,a,h) -#define BKN_DMA_MAPPING_ERROR(d,a) bkn_pci_dma_mapping_error(d,a) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) -#define BKN_NETDEV_TX_BUSY NETDEV_TX_BUSY -#else -#define BKN_NETDEV_TX_BUSY 1 -#endif /* * Get a 16-bit value from packet offset @@ -586,7 +376,7 @@ typedef struct bkn_switch_info_s { int ndev_max; /* Size of indexed array */ struct list_head rxpf_list; /* Associated Rx packet filters */ volatile void *base_addr; /* Base address for PCI register access */ - struct BKN_DMA_DEV *dma_dev; /* Required for DMA memory control */ + struct device *dma_dev; /* Required for DMA memory control */ struct pci_dev *pdev; /* Required for DMA memory control */ struct net_device *dev; /* Base network device */ struct napi_struct napi; /* New NAPI */ @@ -1071,16 +861,6 @@ static knet_hw_tstamp_ioctl_cmd_cb_f knet_hw_tstamp_ioctl_cmd_cb = NULL; * Thread management */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)) -static void -bkn_sleep(int clicks) -{ - wait_queue_head_t wq; - - init_waitqueue_head(&wq); - sleep_on_timeout(&wq, clicks); -} -#else static void bkn_sleep(int clicks) { @@ -1089,7 +869,6 @@ bkn_sleep(int clicks) init_waitqueue_head(&wq); wait_event_timeout(wq, 0, clicks); } -#endif /* * On XGS devices bit 15 fo the Transferred Bytes field in @@ -1978,9 +1757,10 @@ bkn_alloc_dcbs(bkn_switch_info_t *sinfo) rx_ring_size = dcb_size * (MAX_RX_DCBS + 1); sinfo->dcb_mem_size = tx_ring_size + rx_ring_size * sinfo->rx_chans; - sinfo->dcb_mem = BKN_DMA_ALLOC_COHERENT(sinfo->dma_dev, + sinfo->dcb_mem = dma_alloc_coherent(sinfo->dma_dev, sinfo->dcb_mem_size, - &dcb_dma); + &dcb_dma, + GFP_ATOMIC|GFP_DMA32); if (sinfo->dcb_mem == NULL) { gprintk("DCB memory allocation (%d bytes) failed.\n", sinfo->dcb_mem_size); @@ -1995,7 +1775,7 @@ static void bkn_free_dcbs(bkn_switch_info_t *sinfo) { if (sinfo->dcb_mem != NULL) { - BKN_DMA_FREE_COHERENT(sinfo->dma_dev, sinfo->dcb_mem_size, + dma_free_coherent(sinfo->dma_dev, sinfo->dcb_mem_size, sinfo->dcb_mem, (dma_addr_t)sinfo->dcb_dma); sinfo->dcb_mem = NULL; } @@ -2013,9 +1793,9 @@ bkn_clean_tx_dcbs(bkn_switch_info_t *sinfo) if (desc->skb != NULL) { DBG_SKB(("Cleaning Tx SKB from DCB %d.\n", sinfo->tx.dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_TODEV); + DMA_TO_DEVICE); desc->skb_dma = 0; dev_kfree_skb_any(desc->skb); desc->skb = NULL; @@ -2042,9 +1822,9 @@ bkn_clean_rx_dcbs(bkn_switch_info_t *sinfo, int chan) if (desc->skb != NULL) { DBG_SKB(("Cleaning Rx%d SKB from DCB %d.\n", chan, sinfo->rx[chan].dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_FROMDEV); + DMA_FROM_DEVICE); desc->skb_dma = 0; dev_kfree_skb_any(desc->skb); desc->skb = NULL; @@ -2587,10 +2367,10 @@ bkn_rx_refill(bkn_switch_info_t *sinfo, int chan) desc->dma_size = 0; } #endif - desc->skb_dma = BKN_DMA_MAP_SINGLE(sinfo->dma_dev, + desc->skb_dma = dma_map_single(sinfo->dma_dev, skb->data, desc->dma_size, - BKN_DMA_FROMDEV); - if (BKN_DMA_MAPPING_ERROR(sinfo->dma_dev, desc->skb_dma)) { + DMA_FROM_DEVICE); + if (dma_mapping_error(sinfo->dma_dev, desc->skb_dma)) { dev_kfree_skb_any(skb); desc->skb = NULL; break; @@ -4103,13 +3883,13 @@ bkn_do_api_rx(bkn_switch_info_t *sinfo, int chan, int budget) */ if (priv->flags & KCOM_NETIF_F_RCPU_ENCAP) { - bkn_vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); + __vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); } else { if (vlan_proto == ETH_P_8021AD) { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021AD, tci); } else { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021Q, tci); } } @@ -4265,13 +4045,13 @@ bkn_skb_rx_netif_process(bkn_switch_info_t *sinfo, int dest_id, int chan, uint16_t tci = PKT_U16_GET(skb->data, 14); if (priv->flags & KCOM_NETIF_F_RCPU_ENCAP) { - bkn_vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); + __vlan_hwaccel_put_tag(skb, ETH_P_8021Q, tci); } else { if (vlan_proto == ETH_P_8021AD) { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021AD, tci); } else { - bkn_vlan_hwaccel_put_tag + __vlan_hwaccel_put_tag (skb, ETH_P_8021Q, tci); } } @@ -4376,9 +4156,9 @@ bkn_do_skb_rx(bkn_switch_info_t *sinfo, int chan, int budget) skb = desc->skb; DBG_DCB_RX(("Rx%d SKB DMA done (%d).\n", chan, sinfo->rx[chan].dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_FROMDEV); + DMA_FROM_DEVICE); desc->skb_dma = 0; pktlen = dcb[sinfo->dcb_wsize-1] & 0xffff; @@ -4976,7 +4756,7 @@ bkn_resume_tx(bkn_switch_info_t *sinfo) static void bkn_skb_tstamp_copy(struct sk_buff *new_skb, struct sk_buff *skb) { - bkn_skb_tx_flags(new_skb) = bkn_skb_tx_flags(skb); + skb_shinfo(new_skb)->tx_flags = skb_shinfo(skb)->tx_flags; new_skb->sk = skb->sk; return; @@ -5054,7 +4834,6 @@ bkn_hw_tstamp_tx_work(struct work_struct *work) ret = bkn_hw_tstamp_tx_set(sinfo, skb); if (ret < 0) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) ktime_t now; now = ktime_get(); DBG_PTP(("2Step TX Timestamp has not been taken for the current skb (%lld us)\n", @@ -5067,9 +4846,6 @@ bkn_hw_tstamp_tx_work(struct work_struct *work) DBG_PTP(("2Step TX Timestamp fetch took long time %lld us\n", ktime_us_delta(now, tstamp))); } -#else - DBG_PTP(("2Step TX Timestamp has not been taken for the current skb\n")); -#endif } dev_kfree_skb_any(skb); } @@ -5098,23 +4874,21 @@ bkn_do_tx(bkn_switch_info_t *sinfo) } if (desc->skb) { DBG_DCB_TX(("Tx SKB DMA done (%d).\n", sinfo->tx.dirty)); - BKN_DMA_UNMAP_SINGLE(sinfo->dma_dev, + dma_unmap_single(sinfo->dma_dev, desc->skb_dma, desc->dma_size, - BKN_DMA_TODEV); + DMA_TO_DEVICE); if ((KNET_SKB_CB(desc->skb)->hwts == HWTSTAMP_TX_ONESTEP_SYNC) && - (bkn_skb_tx_flags(desc->skb) & SKBTX_IN_PROGRESS)) { + (skb_shinfo(desc->skb)->tx_flags & SKBTX_IN_PROGRESS)) { if (bkn_hw_tstamp_tx_set(sinfo, desc->skb) < 0) { DBG_PTP(("1Step timestamp has not been taken for the current skb.\n")); } - bkn_skb_tx_flags(desc->skb) &= ~SKBTX_IN_PROGRESS; + skb_shinfo(desc->skb)->tx_flags &= ~SKBTX_IN_PROGRESS; } - if (bkn_skb_tx_flags(desc->skb) & SKBTX_IN_PROGRESS) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) + if (skb_shinfo(desc->skb)->tx_flags & SKBTX_IN_PROGRESS) { desc->skb->tstamp = ktime_get(); -#endif skb_queue_tail(&sinfo->tx_ptp_queue, desc->skb); schedule_work(&sinfo->tx_ptp_work); } else { @@ -5902,7 +5676,6 @@ bkn_open(struct net_device *dev) return 0; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) static int bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { @@ -5971,7 +5744,6 @@ bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) if (cmd == SIOCGHWTSTAMP) { config.flags = 0; config.tx_type = priv->tx_hwts; @@ -5979,11 +5751,9 @@ bkn_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; } -#endif return -EINVAL; } -#endif static int bkn_change_mtu(struct net_device *dev, int new_mtu) @@ -5997,45 +5767,6 @@ bkn_change_mtu(struct net_device *dev, int new_mtu) return 0; } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) -static int -bkn_poll(struct net_device *dev, int *budget) -{ - bkn_priv_t *priv = netdev_priv(dev); - bkn_switch_info_t *sinfo = priv->sinfo; - int cur_budget = *budget; - int poll_again = 0; - int rx_dcbs_done; - unsigned long flags; - - spin_lock_irqsave(&sinfo->lock, flags); - - DBG_NAPI(("NAPI poll on %s.\n", dev->name)); - - sinfo->napi_poll_again = 0; - - if (cur_budget > dev->quota) { - cur_budget = dev->quota; - } - - rx_dcbs_done = dev_do_dma(sinfo, cur_budget); - - *budget -= rx_dcbs_done; - cur_budget -= rx_dcbs_done; - dev->quota -= rx_dcbs_done; - - if (sinfo->napi_poll_again || cur_budget <= 0) { - poll_again = 1; - sinfo->napi_not_done++; - } else { - bkn_napi_poll_complete(sinfo); - } - - spin_unlock_irqrestore(&sinfo->lock, flags); - - return poll_again; -} -#else static int bkn_poll(struct napi_struct *napi, int budget) { @@ -6063,7 +5794,6 @@ bkn_poll(struct napi_struct *napi, int budget) return rx_dcbs_done; } -#endif static int bkn_stop(struct net_device *dev) @@ -6300,7 +6030,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) hdrlen = priv->system_headers_size; /* Account for extra OAM-TS header. */ - if ((bkn_skb_tx_flags(skb) & SKBTX_HW_TSTAMP) && + if ((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && (hdrlen > (BKN_DNX_PTCH_2_SIZE))) { /* T_LOCAL_PORT intf will use Module Hdr + PTCH + ITMH + ASE1588 + TSH */ if (device_is_dnx(sinfo)) { @@ -6542,7 +6272,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) } if (pktlen < (60 + taglen + hdrlen)) { pktlen = (60 + taglen + hdrlen); - if (SKB_PADTO(skb, pktlen) != 0) { + if (skb_padto(skb, pktlen) != 0) { DBG_WARN(("Tx drop: skb_padto failed\n")); stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); @@ -6736,7 +6466,7 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) pktlen = skb->len; if (pktlen < (60 + taglen + hdrlen)) { pktlen = (60 + taglen + hdrlen); - if (SKB_PADTO(skb, pktlen) != 0) { + if (skb_padto(skb, pktlen) != 0) { DBG_WARN(("Tx drop: skb_padto failed\n")); stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); @@ -6767,15 +6497,15 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) } /* Do Tx timestamping */ - if (bkn_skb_tx_flags(skb) & SKBTX_HW_TSTAMP) { + if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) { KNET_SKB_CB(skb)->hwts = priv->tx_hwts; if ((priv->port >= 0) && (priv->tx_hwts & HWTSTAMP_TX_ON)) { /* TwoStep Processing of ptp-packets */ KNET_SKB_CB(skb)->port = priv->phys_port; bkn_hw_tstamp_tx_config(sinfo, priv->tx_hwts, hdrlen, skb, meta); - bkn_skb_tx_flags(skb) |= SKBTX_IN_PROGRESS; - bkn_skb_tx_timestamp(skb); + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + skb_tx_timestamp(skb); } else if (priv->tx_hwts & HWTSTAMP_TX_ONESTEP_SYNC) { @@ -6786,8 +6516,8 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) ((priv->port >= 0) ? meta : NULL)); if (KNET_SKB_CB(skb)->ts != 0) { - bkn_skb_tx_flags(skb) |= SKBTX_IN_PROGRESS; - bkn_skb_tx_timestamp(skb); + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + skb_tx_timestamp(skb); } } @@ -6806,10 +6536,10 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) pktlen = pktlen + FCS_SZ; } desc->dma_size = pktlen; - desc->skb_dma = BKN_DMA_MAP_SINGLE(sinfo->dma_dev, + desc->skb_dma = dma_map_single(sinfo->dma_dev, pktdata, desc->dma_size, - BKN_DMA_TODEV); - if (BKN_DMA_MAPPING_ERROR(sinfo->dma_dev, desc->skb_dma)) { + DMA_TO_DEVICE); + if (dma_mapping_error(sinfo->dma_dev, desc->skb_dma)) { stats_flags = u64_stats_update_begin_irqsave(&priv->stats.syncp); u64_stats_inc(&priv->stats.tx_dropped); u64_stats_update_end_irqrestore(&priv->stats.syncp, stats_flags); @@ -6863,10 +6593,10 @@ bkn_tx(struct sk_buff *skb, struct net_device *dev) sinfo->tx.pkts_d_dma_resrc++; bkn_suspend_tx(sinfo); spin_unlock_irqrestore(&sinfo->lock, flags); - return BKN_NETDEV_TX_BUSY; + return NETDEV_TX_BUSY; } - NETDEV_UPDATE_TRANS_START_TIME(dev); + netif_trans_update(dev); spin_unlock_irqrestore(&sinfo->lock, flags); @@ -6909,21 +6639,12 @@ bkn_timer_func(bkn_switch_info_t *sinfo) spin_unlock_irqrestore(&sinfo->lock, flags); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) -static void -bkn_timer(unsigned long context) -{ - bkn_switch_info_t *sinfo = (bkn_switch_info_t *)context; - return bkn_timer_func(sinfo); -} -#else static void bkn_timer(struct timer_list *t) { bkn_switch_info_t *sinfo = from_timer(sinfo, t, timer); return bkn_timer_func(sinfo); } -#endif static void bkn_rx_add_tokens(bkn_switch_info_t *sinfo, int chan) @@ -7000,21 +6721,12 @@ bkn_rxtick_func(bkn_switch_info_t *sinfo) add_timer(&sinfo->rxtick); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) -static void -bkn_rxtick(unsigned long context) -{ - bkn_switch_info_t *sinfo = (bkn_switch_info_t *)context; - return bkn_rxtick_func(sinfo); -} -#else static void bkn_rxtick(struct timer_list *t) { bkn_switch_info_t *sinfo = from_timer(sinfo, t, rxtick); return bkn_rxtick_func(sinfo); } -#endif static void bkn_rx_rate_config(bkn_switch_info_t *sinfo) @@ -7101,13 +6813,7 @@ bkn_create_sinfo(int dev_no) skb_queue_head_init(&sinfo->tx_ptp_queue); INIT_WORK(&sinfo->tx_ptp_work, bkn_hw_tstamp_tx_work); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) - init_timer(&sinfo->timer); - sinfo->timer.data = (unsigned long)sinfo; - sinfo->timer.function = bkn_timer; -#else timer_setup(&sinfo->timer, bkn_timer, 0); -#endif sinfo->timer.expires = jiffies + 1; INIT_LIST_HEAD(&sinfo->tx.api_dcb_list); @@ -7126,13 +6832,7 @@ bkn_create_sinfo(int dev_no) sinfo->rx[0].use_rx_skb = 0; } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) - init_timer(&sinfo->rxtick); - sinfo->rxtick.data = (unsigned long)sinfo; - sinfo->rxtick.function = bkn_rxtick; -#else timer_setup(&sinfo->rxtick, bkn_rxtick, 0); -#endif sinfo->rxtick.expires = jiffies + 1; for (chan = 0; chan < NUM_RX_CHAN; chan++) { @@ -7148,7 +6848,6 @@ bkn_create_sinfo(int dev_no) return sinfo; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) static const struct net_device_ops bkn_netdev_ops = { .ndo_open = bkn_open, .ndo_stop = bkn_stop, @@ -7166,7 +6865,6 @@ static const struct net_device_ops bkn_netdev_ops = { .ndo_poll_controller = bkn_poll_controller, #endif }; -#endif static void bkn_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo) @@ -7183,7 +6881,6 @@ bkn_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo) strscpy(drvinfo->bus_info, "N/A", sizeof(drvinfo->bus_info)); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) static int #if (LINUX_VERSION_CODE < KERNEL_VERSION(6,11,0)) bkn_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) @@ -7262,7 +6959,6 @@ bkn_get_ts_info(struct net_device *dev, struct kernel_ethtool_ts_info *info) return 0; } -#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)) static int @@ -7295,9 +6991,7 @@ bkn_set_link_ksettings(struct net_device *netdev, static const struct ethtool_ops bkn_ethtool_ops = { .get_drvinfo = bkn_get_drvinfo, .get_link = ethtool_op_get_link, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) .get_ts_info = bkn_get_ts_info, -#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)) .get_link_ksettings = bkn_get_link_ksettings, .set_link_ksettings = bkn_set_link_ksettings, @@ -7317,9 +7011,6 @@ bkn_init_ndev(u8 *mac, char *name) DBG_WARN(("Error allocating Ethernet device.\n")); return NULL; } -#ifdef SET_MODULE_OWNER - SET_MODULE_OWNER(dev); -#endif /* Set the device MAC address */ if ((mac[0] | mac[1] | mac[2] | mac[3] | mac[4] | mac[5]) == 0) { @@ -7337,25 +7028,11 @@ bkn_init_ndev(u8 *mac, char *name) if (dev->mtu == 0) { dev->mtu = rx_buffer_size; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) dev->max_mtu = rx_buffer_size; -#endif /* Device vectors */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) dev->netdev_ops = &bkn_netdev_ops; dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; -#else - dev->open = bkn_open; - dev->hard_start_xmit = bkn_tx; - dev->stop = bkn_stop; - dev->set_multicast_list = bkn_set_multicast_list; - dev->do_ioctl = NULL; - dev->change_mtu = bkn_change_mtu; -#ifdef CONFIG_NET_POLL_CONTROLLER - dev->poll_controller = bkn_poll_controller; -#endif -#endif priv = netdev_priv(dev); priv->link_settings.speed = SPEED_UNKNOWN; priv->link_settings.duplex = DUPLEX_UNKNOWN; @@ -7367,7 +7044,7 @@ bkn_init_ndev(u8 *mac, char *name) u64_stats_init(&priv->stats.syncp); u64_stats_init(&priv->hw_stats.syncp); - bkn_dev_net_set(dev, current->nsproxy->net_ns); + dev_net_set(dev, current->nsproxy->net_ns); DBG_VERB(("Created Ethernet device %s.\n", dev->name)); @@ -8454,31 +8131,31 @@ bkn_proc_init(void) { struct proc_dir_entry *entry; - PROC_CREATE(entry, "link", 0666, bkn_proc_root, &bkn_proc_link_file_ops); + entry = proc_create("link", 0666, bkn_proc_root, &bkn_proc_link_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "rate", 0666, bkn_proc_root, &bkn_proc_rate_file_ops); + entry = proc_create("rate", 0666, bkn_proc_root, &bkn_proc_rate_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "dma", 0, bkn_proc_root, &bkn_seq_dma_file_ops); + entry = proc_create("dma", 0, bkn_proc_root, &bkn_seq_dma_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "debug", 0666, bkn_proc_root, &bkn_proc_debug_file_ops); + entry = proc_create("debug", 0666, bkn_proc_root, &bkn_proc_debug_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "stats", 0666, bkn_proc_root, &bkn_proc_stats_file_ops); + entry = proc_create("stats", 0666, bkn_proc_root, &bkn_proc_stats_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "dstats", 0666, bkn_proc_root, &bkn_proc_dstats_file_ops); + entry = proc_create("dstats", 0666, bkn_proc_root, &bkn_proc_dstats_file_ops); if (entry == NULL) { return -1; } - PROC_CREATE(entry, "ptp_stats", 0666, bkn_proc_root, &bkn_proc_ptp_stats_file_ops); + entry = proc_create("ptp_stats", 0666, bkn_proc_root, &bkn_proc_ptp_stats_file_ops); if (entry == NULL) { return -1; } @@ -10605,25 +10282,25 @@ bkn_hw_tstamp_ioctl_cmd_cb_unregister(knet_hw_tstamp_ioctl_cmd_cb_f hw_tstamp_io return 0; } -LKM_EXPORT_SYM(bkn_rx_skb_cb_register); -LKM_EXPORT_SYM(bkn_rx_skb_cb_unregister); -LKM_EXPORT_SYM(bkn_tx_skb_cb_register); -LKM_EXPORT_SYM(bkn_tx_skb_cb_unregister); -LKM_EXPORT_SYM(bkn_filter_cb_register); -LKM_EXPORT_SYM(bkn_filter_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_enable_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_enable_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_disable_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_disable_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_time_get_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_time_get_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_meta_get_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_tx_meta_get_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_ptp_clock_index_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_ptp_clock_index_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_time_upscale_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_time_upscale_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_pre_process_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_rx_pre_process_cb_unregister); -LKM_EXPORT_SYM(bkn_hw_tstamp_ioctl_cmd_cb_register); -LKM_EXPORT_SYM(bkn_hw_tstamp_ioctl_cmd_cb_unregister); +EXPORT_SYMBOL(bkn_rx_skb_cb_register); +EXPORT_SYMBOL(bkn_rx_skb_cb_unregister); +EXPORT_SYMBOL(bkn_tx_skb_cb_register); +EXPORT_SYMBOL(bkn_tx_skb_cb_unregister); +EXPORT_SYMBOL(bkn_filter_cb_register); +EXPORT_SYMBOL(bkn_filter_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_enable_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_enable_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_disable_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_disable_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_time_get_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_time_get_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_meta_get_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_tx_meta_get_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_ptp_clock_index_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_ptp_clock_index_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_time_upscale_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_time_upscale_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_pre_process_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_rx_pre_process_cb_unregister); +EXPORT_SYMBOL(bkn_hw_tstamp_ioctl_cmd_cb_register); +EXPORT_SYMBOL(bkn_hw_tstamp_ioctl_cmd_cb_unregister); diff --git a/sdk-6.5.27/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c b/sdk-6.5.27/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c index b9c77d5f1..282dddca2 100644 --- a/sdk-6.5.27/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c +++ b/sdk-6.5.27/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c @@ -11,7 +11,6 @@ MODULE_AUTHOR("Broadcom Corporation"); MODULE_DESCRIPTION("PTP Clock Driver for Broadcom XGS/DNX Switch"); MODULE_LICENSE("GPL"); -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) #include #include #include @@ -29,29 +28,29 @@ MODULE_LICENSE("GPL"); static int debug; -LKM_MOD_PARAM(debug, "i", int, 0); +module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (default 0)"); static int pci_cos; static int network_transport; -LKM_MOD_PARAM(network_transport, "i", int, 0); +module_param(network_transport, int, 0); MODULE_PARM_DESC(network_transport, "Transport Type (default - Detect from packet)"); static char *base_dev_name = "ptp0"; -LKM_MOD_PARAM(base_dev_name, "s", charp, 0); +module_param(base_dev_name, charp, 0); MODULE_PARM_DESC(base_dev_name, "Base device name (default ptp0, ptp1, etc.)"); static int fw_core; -LKM_MOD_PARAM(fw_core, "i", int, 0); +module_param(fw_core, int, 0); MODULE_PARM_DESC(fw_core, "Firmware core (default 0)"); static int vnptp_l2hdr_vlan_prio; -LKM_MOD_PARAM(vnptp_l2hdr_vlan_prio, "i", int, 0); +module_param(vnptp_l2hdr_vlan_prio, int, 0); MODULE_PARM_DESC(vnptp_l2hdr_vlan_prio, "L2 Hdr Vlan priority"); @@ -75,18 +74,6 @@ MODULE_PARM_DESC(vnptp_l2hdr_vlan_prio, #define DBG_RX_DUMP(_s) do { if (debug & DBG_LVL_RX_DUMP) gprintk _s; } while (0) #define DBG_ERR(_s) do { if (1) gprintk _s; } while (0) - -#ifdef LINUX_BDE_DMA_DEVICE_SUPPORT -#define DMA_DEV device -#define DMA_ALLOC_COHERENT(d,s,h) dma_alloc_coherent(d,s,h,GFP_ATOMIC|GFP_DMA32) -#define DMA_FREE_COHERENT(d,s,a,h) dma_free_coherent(d,s,a,h) -#else -#define DMA_DEV pci_dev -#define DMA_ALLOC_COHERENT(d,s,h) pci_alloc_consistent(d,s,h) -#define DMA_FREE_COHERENT(d,s,a,h) pci_free_consistent(d,s,a,h) -#endif - - #define BKSYNC_PACKLEN_U8 1 #define BKSYNC_PACKLEN_U16 2 #define BKSYNC_PACKLEN_U24 3 @@ -238,11 +225,7 @@ enum (_ptp_msg_type == IEEE1588_MSGTYPE_SYNC)) -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) -#define HWTSTAMP_TX_ONESTEP_SYNC 2 -#else #include -#endif @@ -698,7 +681,7 @@ struct bksync_ptp_priv { volatile bksync_evlog_t *evlog; dma_addr_t dma_mem; int dma_mem_size; - struct DMA_DEV *dma_dev; + struct device *dma_dev; int num_pports; int timekeep_status; u32 mirror_encap_bmp; @@ -2964,9 +2947,10 @@ static void bksync_ptp_fw_data_alloc(void) if (ptp_priv->evlog == NULL) { DBG_ERR(("Allocate memory for event log\n")); - ptp_priv->evlog = DMA_ALLOC_COHERENT(ptp_priv->dma_dev, + ptp_priv->evlog = dma_alloc_coherent(ptp_priv->dma_dev, ptp_priv->dma_mem_size, - &dma_mem); + &dma_mem, + GFP_ATOMIC|GFP_DMA32); } if (ptp_priv->evlog != NULL) { @@ -2984,7 +2968,7 @@ static void bksync_ptp_fw_data_alloc(void) static void bksync_ptp_fw_data_free(void) { if (ptp_priv->evlog != NULL) { - DMA_FREE_COHERENT(ptp_priv->dma_dev, ptp_priv->dma_mem_size, + dma_free_coherent(ptp_priv->dma_dev, ptp_priv->dma_mem_size, (void *)ptp_priv->evlog, ptp_priv->dma_mem); ptp_priv->evlog = NULL; } @@ -3289,8 +3273,6 @@ static int bksync_ptp_remove(void) return 0; } -#endif - @@ -3298,12 +3280,8 @@ static int bksync_ptp_remove(void) static int _pprint(struct seq_file *m) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) pprintf(m, "Broadcom BCM PTP Hardware Clock Module\n"); -#else - pprintf(m, "Broadcom BCM PTP Hardware Clock Module not supported\n"); -#endif return 0; } @@ -3311,24 +3289,16 @@ _pprint(struct seq_file *m) static int _init(void) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) bksync_ptp_register(); return 0; -#else - return -1; -#endif } static int _cleanup(void) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(3,17,0) bksync_ptp_remove(); return 0; -#else - return -1; -#endif } static gmodule_t _gmodule = { diff --git a/sdk-6.5.27/systems/linux/kernel/modules/include/lkm.h b/sdk-6.5.27/systems/linux/kernel/modules/include/lkm.h index 1e5464c6e..5290b5ba5 100644 --- a/sdk-6.5.27/systems/linux/kernel/modules/include/lkm.h +++ b/sdk-6.5.27/systems/linux/kernel/modules/include/lkm.h @@ -17,24 +17,14 @@ #include #include -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) -#error Kernel too old -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32) /* The version kconfig.h became available in. */ #include -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -#if defined(INCLUDE_KNET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) +#if defined(INCLUDE_KNET) #ifdef CONFIG_NF_CONNTRACK_MODULE #include #endif #endif #include -#endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) -#include -#endif #include /* Helper defines for multi-version kernel support */ @@ -50,9 +40,7 @@ #include #include #include -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) #include -#endif #include #include @@ -63,15 +51,8 @@ #include #endif -#define PROC_INTERFACE_KERN_VER_3_10 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) - /* Compatibility Macros */ -#define LKM_MOD_PARAM(n,ot,nt,d) module_param(n,nt,d) -#define LKM_MOD_PARAM_ARRAY(n,ot,nt,c,d) module_param_array(n,nt,c,d) -#define LKM_EXPORT_SYM(s) EXPORT_SYMBOL(s) -#define _free_netdev free_netdev - #ifndef list_for_each_safe #define list_for_each_safe(l,t,i) t = 0; list_for_each((l),(i)) #endif @@ -132,38 +113,4 @@ #define proc_release release #endif -#if PROC_INTERFACE_KERN_VER_3_10 -#define PROC_CREATE(_entry, _name, _acc, _path, _fops) \ - do { \ - _entry = proc_create(_name, _acc, _path, _fops); \ - } while (0) - -#define PROC_CREATE_DATA(_entry, _name, _acc, _path, _fops, _data) \ - do { \ - _entry = proc_create_data(_name, _acc, _path, _fops, _data); \ - } while (0) - -#define PROC_PDE_DATA(_node) PDE_DATA(_node) - -#else -#define PROC_CREATE(_entry, _name, _acc, _path, _fops) \ - do { \ - _entry = create_proc_entry(_name, _acc, _path); \ - if (_entry) { \ - _entry->proc_fops = _fops; \ - } \ - } while (0) - -#define PROC_CREATE_DATA(_entry, _name, _acc, _path, _fops, _data) \ - do { \ - _entry = create_proc_entry(_name, _acc, _path); \ - if (_entry) { \ - _entry->proc_fops = _fops; \ - _entry->data=_data; \ - } \ - } while (0) - -#define PROC_PDE_DATA(_node) PROC_I(_node)->pde->data -#endif - #endif /* __COMMON_LINUX_KRN_LKM_H__ */ diff --git a/sdk-6.5.27/systems/linux/kernel/modules/shared/gmodule.c b/sdk-6.5.27/systems/linux/kernel/modules/shared/gmodule.c index ce668a8d2..054af6aa6 100644 --- a/sdk-6.5.27/systems/linux/kernel/modules/shared/gmodule.c +++ b/sdk-6.5.27/systems/linux/kernel/modules/shared/gmodule.c @@ -67,7 +67,6 @@ gdbg(const char* fmt, ...) /* * Proc FS Utilities */ -#if PROC_INTERFACE_KERN_VER_3_10 int pprintf(struct seq_file *m, const char* fmt, ...) { @@ -122,93 +121,17 @@ struct proc_ops _gmodule_proc_fops = { .proc_write = _gmodule_proc_write, .proc_release = _gmodule_proc_release, }; -#else -int -gmodule_vpprintf(char** page_ptr, const char* fmt, va_list args) -{ - *page_ptr += vsprintf(*page_ptr, fmt, args); - return 0; -} - -int -gmodule_pprintf(char** page_ptr, const char* fmt, ...) -{ - int rv; - - va_list args; - va_start(args, fmt); - rv = gmodule_vpprintf(page_ptr, fmt, args); - va_end(args); - return rv; -} - -static char* _proc_buf = NULL; - -int -pprintf(struct seq_file *m, const char* fmt, ...) -{ - int rv; - - va_list args; - va_start(args, fmt); - rv = gmodule_vpprintf(&_proc_buf, fmt, args); - va_end(args); - return rv; -} - -#define PSTART(b) _proc_buf = b -#define PPRINT proc_print -#define PEND(b) (_proc_buf-b) - -static int -_gmodule_pprint(char* buf) -{ - PSTART(buf); - _gmodule->pprint(NULL); - return PEND(buf); -} - -static int -_gmodule_read_proc(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - *eof = 1; - return _gmodule_pprint(page); -} - -static int -_gmodule_write_proc(struct file *file, const char *buffer, - unsigned long count, void *data) -{ - /* Workaround to toggle debugging */ - if(count > 2) { - if(buffer[0] == 'd') { - _dbg_enable = buffer[1] - '0'; - GDBG("Debugging Enabled"); - } - } - return count; -} -#endif static int _gmodule_create_proc(void) { struct proc_dir_entry* ent; -#if PROC_INTERFACE_KERN_VER_3_10 if((ent = proc_create(_gmodule->name, S_IRUGO | S_IWUGO, NULL, &_gmodule_proc_fops)) != NULL) { return 0; } -#else - if((ent = create_proc_entry(_gmodule->name, S_IRUGO | S_IWUGO, NULL)) != NULL) { - ent->read_proc = _gmodule_read_proc; - ent->write_proc = _gmodule_write_proc; - return 0; - } -#endif return -1; }