This commit is contained in:
lean 2022-03-21 14:30:17 +08:00
commit 679ae72af7
52 changed files with 488 additions and 272 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.10 = .104 LINUX_VERSION-5.10 = .107
LINUX_KERNEL_HASH-5.10.104 = 394a9267ea8e24d0f0cfaad3439bf43abe7bcf6479dc9548e485b48a0ac562f1 LINUX_KERNEL_HASH-5.10.107 = c467c3077946370fb26c9277313b601d6c48bb557abc889f4892caf627fcdfea

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.15 = .29 LINUX_VERSION-5.15 = .30
LINUX_KERNEL_HASH-5.15.29 = 5905e684602c47ae95746d4003cb834335e5451aca4ac7c3013f15dd49ed876e LINUX_KERNEL_HASH-5.15.30 = 254ea2fe08f0aa07e4f7fffe95d12463df7fa6ff8a9ba72f321da15e50fa7132

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.4 = .185 LINUX_VERSION-5.4 = .186
LINUX_KERNEL_HASH-5.4.185 = d15fe9da679bfb624f35f127a17559f6d037ad37a313cf5fd22ce155401f3787 LINUX_KERNEL_HASH-5.4.186 = 61f7cd24cb8a38d41891d9066c1dfd14a688a9dff7f485922e385654ea8b39b9

View File

@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/LGA1150/ntfs3-oot.git PKG_SOURCE_URL:=https://github.com/LGA1150/ntfs3-oot.git
PKG_SOURCE_DATE:=2021-07-05 PKG_SOURCE_DATE:=2021-07-05
PKG_SOURCE_VERSION:=46d199e7d7302879b23ad20097ba53b152257288 PKG_SOURCE_VERSION:=46d199e7d7302879b23ad20097ba53b152257288
PKG_MIRROR_HASH:=0c2ab3d15e5900c35b7cef3dcafb814991e8d98ef6ff715650b9c0b686364b81 PKG_MIRROR_HASH:=f07253ec864887c121177fc5b358c21249af0483e4dab0d5157410db618c0990
PKG_MAINTAINER:= PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-only PKG_LICENSE:=GPL-2.0-only

View File

@ -7,11 +7,9 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8125 PKG_NAME:=r8125
PKG_VERSION:=9.007.01 PKG_VERSION:=9.008.00
PKG_RELEASE:=$(AUTORELEASE) PKG_RELEASE:=$(AUTORELEASE)
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define KernelPackage/r8125 define KernelPackage/r8125
@ -26,20 +24,8 @@ define Package/r8125/description
This package contains a driver for Realtek r8125 chipsets. This package contains a driver for Realtek r8125 chipsets.
endef endef
R8125_MAKEOPTS= -C $(PKG_BUILD_DIR) \
PATH="$(TARGET_PATH)" \
ARCH="$(LINUX_KARCH)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
TARGET="$(HAL_TARGET)" \
TOOLPREFIX="$(KERNEL_CROSS)" \
TOOLPATH="$(KERNEL_CROSS)" \
KERNELPATH="$(LINUX_DIR)" \
KERNELDIR="$(LINUX_DIR)" \
LDOPTS=" " \
DOMULTI=1
define Build/Compile define Build/Compile
$(MAKE) $(R8125_MAKEOPTS) modules +$(KERNEL_MAKE) M=$(PKG_BUILD_DIR) modules
endef endef
$(eval $(call KernelPackage,r8125)) $(eval $(call KernelPackage,r8125))

View File

@ -4,7 +4,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -4,7 +4,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free
@ -363,12 +363,12 @@ do { \
#define RSS_SUFFIX "" #define RSS_SUFFIX ""
#endif #endif
#define RTL8125_VERSION "9.007.01" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX #define RTL8125_VERSION "9.008.00" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX
#define MODULENAME "r8125" #define MODULENAME "r8125"
#define PFX MODULENAME ": " #define PFX MODULENAME ": "
#define GPL_CLAIM "\ #define GPL_CLAIM "\
r8125 Copyright (C) 2021 Realtek NIC software team <nicfae@realtek.com> \n \ r8125 Copyright (C) 2022 Realtek NIC software team <nicfae@realtek.com> \n \
This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>. \n \ This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>. \n \
This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>. \n" This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>. \n"
@ -413,7 +413,7 @@ This is free software, and you are welcome to redistribute it under certain cond
#endif #endif
#define Reserved2_data 7 #define Reserved2_data 7
#define RX_DMA_BURST 7 /* Maximum PCI burst, '6' is 1024 */ #define RX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */
#define TX_DMA_BURST_unlimited 7 #define TX_DMA_BURST_unlimited 7
#define TX_DMA_BURST_1024 6 #define TX_DMA_BURST_1024 6
#define TX_DMA_BURST_512 5 #define TX_DMA_BURST_512 5
@ -456,12 +456,17 @@ This is free software, and you are welcome to redistribute it under certain cond
#define RTL8125_LINK_TIMEOUT (1 * HZ) #define RTL8125_LINK_TIMEOUT (1 * HZ)
#define RTL8125_ESD_TIMEOUT (2 * HZ) #define RTL8125_ESD_TIMEOUT (2 * HZ)
#define NUM_TX_DESC 1024 /* Number of Tx descriptor registers */ #define MAX_NUM_TX_DESC 1024 /* Maximum number of Tx descriptor registers */
#define NUM_RX_DESC 1024 /* Number of Rx descriptor registers */ #define MAX_NUM_RX_DESC 1024 /* Maximum number of Rx descriptor registers */
#define MIN_NUM_TX_DESC 256 /* Minimum number of Tx descriptor registers */
#define MIN_NUM_RX_DESC 256 /* Minimum number of Rx descriptor registers */
#define NUM_TX_DESC MAX_NUM_TX_DESC /* Number of Tx descriptor registers */
#define NUM_RX_DESC MAX_NUM_RX_DESC /* Number of Rx descriptor registers */
#define RX_BUF_SIZE 0x05F3 /* 0x05F3 = 1522bye + 1 */ #define RX_BUF_SIZE 0x05F3 /* 0x05F3 = 1522bye + 1 */
#define R8125_TX_RING_BYTES (NUM_TX_DESC * sizeof(struct TxDesc))
#define R8125_RX_RING_BYTES (NUM_RX_DESC * sizeof(struct RxDesc))
#define R8125_MAX_TX_QUEUES (2) #define R8125_MAX_TX_QUEUES (2)
#define R8125_MAX_RX_QUEUES (4) #define R8125_MAX_RX_QUEUES (4)
#define R8125_MAX_QUEUES R8125_MAX_RX_QUEUES #define R8125_MAX_QUEUES R8125_MAX_RX_QUEUES
@ -545,6 +550,9 @@ This is free software, and you are welcome to redistribute it under certain cond
#define RTK_LPA_ADVERTISE_5000FULL 0x40 #define RTK_LPA_ADVERTISE_5000FULL 0x40
#define RTK_LPA_ADVERTISE_10000FULL 0x800 #define RTK_LPA_ADVERTISE_10000FULL 0x800
#define RTK_EEE_ADVERTISE_2500FULL 0x01
#define RTK_LPA_EEE_ADVERTISE_2500FULL 0x01
/* Tx NO CLOSE */ /* Tx NO CLOSE */
#define MAX_TX_NO_CLOSE_DESC_PTR_V2 0x10000 #define MAX_TX_NO_CLOSE_DESC_PTR_V2 0x10000
#define TX_NO_CLOSE_SW_PTR_MASK_V2 0x1FFFF #define TX_NO_CLOSE_SW_PTR_MASK_V2 0x1FFFF
@ -1745,9 +1753,10 @@ struct rtl8125_tx_ring {
u32 index; u32 index;
u32 cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */ u32 cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */
u32 dirty_tx; u32 dirty_tx;
u32 num_tx_desc; /* Number of Tx descriptor registers */
struct TxDesc *TxDescArray; /* 256-aligned Tx descriptor ring */ struct TxDesc *TxDescArray; /* 256-aligned Tx descriptor ring */
dma_addr_t TxPhyAddr; dma_addr_t TxPhyAddr;
struct ring_info tx_skb[NUM_TX_DESC]; /* Tx data buffers */ struct ring_info tx_skb[MAX_NUM_TX_DESC]; /* Tx data buffers */
u32 NextHwDesCloPtr; u32 NextHwDesCloPtr;
u32 BeginHwDesCloPtr; u32 BeginHwDesCloPtr;
@ -1763,10 +1772,11 @@ struct rtl8125_rx_ring {
u32 index; u32 index;
u32 cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */ u32 cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */
u32 dirty_rx; u32 dirty_rx;
u32 num_rx_desc; /* Number of Rx descriptor registers */
struct RxDesc *RxDescArray; /* 256-aligned Rx descriptor ring */ struct RxDesc *RxDescArray; /* 256-aligned Rx descriptor ring */
u64 RxDescPhyAddr[NUM_RX_DESC]; /* Rx desc physical address*/ u64 RxDescPhyAddr[MAX_NUM_RX_DESC]; /* Rx desc physical address*/
dma_addr_t RxPhyAddr; dma_addr_t RxPhyAddr;
struct sk_buff *Rx_skbuff[NUM_RX_DESC]; /* Rx data buffers */ struct sk_buff *Rx_skbuff[MAX_NUM_RX_DESC]; /* Rx data buffers */
u16 rdsar_reg; /* Receive Descriptor Start Address */ u16 rdsar_reg; /* Receive Descriptor Start Address */
}; };
@ -2031,8 +2041,8 @@ struct rtl8125_private {
//struct RxDesc *RxDescArray; /* 256-aligned Rx descriptor ring */ //struct RxDesc *RxDescArray; /* 256-aligned Rx descriptor ring */
//dma_addr_t TxPhyAddr; //dma_addr_t TxPhyAddr;
//dma_addr_t RxPhyAddr; //dma_addr_t RxPhyAddr;
//struct sk_buff *Rx_skbuff[NUM_RX_DESC]; /* Rx data buffers */ //struct sk_buff *Rx_skbuff[MAX_NUM_RX_DESC]; /* Rx data buffers */
//struct ring_info tx_skb[NUM_TX_DESC]; /* Tx data buffers */ //struct ring_info tx_skb[MAX_NUM_TX_DESC]; /* Tx data buffers */
unsigned rx_buf_sz; unsigned rx_buf_sz;
u16 HwSuppNumTxQueues; u16 HwSuppNumTxQueues;
u16 HwSuppNumRxQueues; u16 HwSuppNumRxQueues;
@ -2118,12 +2128,17 @@ struct rtl8125_private {
u16 sw_ram_code_ver; u16 sw_ram_code_ver;
u16 hw_ram_code_ver; u16 hw_ram_code_ver;
u8 RequireRduNonStopPatch;
u8 rtk_enable_diag; u8 rtk_enable_diag;
u8 ShortPacketSwChecksum; u8 ShortPacketSwChecksum;
u8 UseSwPaddingShortPkt; u8 UseSwPaddingShortPkt;
void *ShortPacketEmptyBuffer;
dma_addr_t ShortPacketEmptyBufferPhy;
u8 RequireAdcBiasPatch; u8 RequireAdcBiasPatch;
u16 AdcBiasPatchIoffset; u16 AdcBiasPatchIoffset;
@ -2278,7 +2293,6 @@ struct rtl8125_private {
#endif #endif
u8 InitRxDescType; u8 InitRxDescType;
u16 RxDescLength; //V1 16 Byte V2 32 Bytes u16 RxDescLength; //V1 16 Byte V2 32 Bytes
u32 RxDescRingLength;
u8 HwSuppPtpVer; u8 HwSuppPtpVer;
u8 EnablePtp; u8 EnablePtp;

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8168 is the Linux device driver released for Realtek Gigabit Ethernet # r8168 is the Linux device driver released for Realtek Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free
@ -344,6 +344,7 @@ static struct net_device_stats *rtl8125_get_stats(struct net_device *dev);
static int rtl8125_rx_interrupt(struct net_device *, struct rtl8125_private *, struct rtl8125_rx_ring *, napi_budget); static int rtl8125_rx_interrupt(struct net_device *, struct rtl8125_private *, struct rtl8125_rx_ring *, napi_budget);
static int rtl8125_tx_interrupt(struct rtl8125_tx_ring *ring, int budget); static int rtl8125_tx_interrupt(struct rtl8125_tx_ring *ring, int budget);
static int rtl8125_tx_interrupt_with_vector(struct rtl8125_private *tp, const int message_id, int budget); static int rtl8125_tx_interrupt_with_vector(struct rtl8125_private *tp, const int message_id, int budget);
static void rtl8125_wait_for_quiescence(struct net_device *dev);
static int rtl8125_change_mtu(struct net_device *dev, int new_mtu); static int rtl8125_change_mtu(struct net_device *dev, int new_mtu);
static void rtl8125_down(struct net_device *dev); static void rtl8125_down(struct net_device *dev);
@ -725,7 +726,7 @@ static int proc_get_driver_variable(struct seq_file *m, void *v)
seq_printf(m, "chipset\t%d\n", tp->chipset); seq_printf(m, "chipset\t%d\n", tp->chipset);
seq_printf(m, "chipset_name\t%s\n", rtl_chip_info[tp->chipset].name); seq_printf(m, "chipset_name\t%s\n", rtl_chip_info[tp->chipset].name);
seq_printf(m, "mtu\t%d\n", dev->mtu); seq_printf(m, "mtu\t%d\n", dev->mtu);
seq_printf(m, "NUM_RX_DESC\t0x%x\n", NUM_RX_DESC); seq_printf(m, "NUM_RX_DESC\t0x%x\n", tp->rx_ring[0].num_rx_desc);
seq_printf(m, "cur_rx0\t0x%x\n", tp->rx_ring[0].cur_rx); seq_printf(m, "cur_rx0\t0x%x\n", tp->rx_ring[0].cur_rx);
seq_printf(m, "dirty_rx0\t0x%x\n", tp->rx_ring[0].dirty_rx); seq_printf(m, "dirty_rx0\t0x%x\n", tp->rx_ring[0].dirty_rx);
seq_printf(m, "cur_rx1\t0x%x\n", tp->rx_ring[1].cur_rx); seq_printf(m, "cur_rx1\t0x%x\n", tp->rx_ring[1].cur_rx);
@ -734,7 +735,7 @@ static int proc_get_driver_variable(struct seq_file *m, void *v)
seq_printf(m, "dirty_rx2\t0x%x\n", tp->rx_ring[2].dirty_rx); seq_printf(m, "dirty_rx2\t0x%x\n", tp->rx_ring[2].dirty_rx);
seq_printf(m, "cur_rx3\t0x%x\n", tp->rx_ring[3].cur_rx); seq_printf(m, "cur_rx3\t0x%x\n", tp->rx_ring[3].cur_rx);
seq_printf(m, "dirty_rx3\t0x%x\n", tp->rx_ring[3].dirty_rx); seq_printf(m, "dirty_rx3\t0x%x\n", tp->rx_ring[3].dirty_rx);
seq_printf(m, "NUM_TX_DESC\t0x%x\n", NUM_TX_DESC); seq_printf(m, "NUM_TX_DESC\t0x%x\n", tp->tx_ring[0].num_tx_desc);
seq_printf(m, "cur_tx0\t0x%x\n", tp->tx_ring[0].cur_tx); seq_printf(m, "cur_tx0\t0x%x\n", tp->tx_ring[0].cur_tx);
seq_printf(m, "dirty_tx0\t0x%x\n", tp->tx_ring[0].dirty_tx); seq_printf(m, "dirty_tx0\t0x%x\n", tp->tx_ring[0].dirty_tx);
seq_printf(m, "cur_tx1\t0x%x\n", tp->tx_ring[1].cur_tx); seq_printf(m, "cur_tx1\t0x%x\n", tp->tx_ring[1].cur_tx);
@ -773,6 +774,7 @@ static int proc_get_driver_variable(struct seq_file *m, void *v)
seq_printf(m, "rtk_enable_diag\t0x%x\n", tp->rtk_enable_diag); seq_printf(m, "rtk_enable_diag\t0x%x\n", tp->rtk_enable_diag);
seq_printf(m, "ShortPacketSwChecksum\t0x%x\n", tp->ShortPacketSwChecksum); seq_printf(m, "ShortPacketSwChecksum\t0x%x\n", tp->ShortPacketSwChecksum);
seq_printf(m, "UseSwPaddingShortPkt\t0x%x\n", tp->UseSwPaddingShortPkt); seq_printf(m, "UseSwPaddingShortPkt\t0x%x\n", tp->UseSwPaddingShortPkt);
seq_printf(m, "RequireRduNonStopPatch\t0x%x\n", tp->RequireRduNonStopPatch);
seq_printf(m, "RequireAdcBiasPatch\t0x%x\n", tp->RequireAdcBiasPatch); seq_printf(m, "RequireAdcBiasPatch\t0x%x\n", tp->RequireAdcBiasPatch);
seq_printf(m, "AdcBiasPatchIoffset\t0x%x\n", tp->AdcBiasPatchIoffset); seq_printf(m, "AdcBiasPatchIoffset\t0x%x\n", tp->AdcBiasPatchIoffset);
seq_printf(m, "RequireAdjustUpsTxLinkPulseTiming\t0x%x\n", tp->RequireAdjustUpsTxLinkPulseTiming); seq_printf(m, "RequireAdjustUpsTxLinkPulseTiming\t0x%x\n", tp->RequireAdjustUpsTxLinkPulseTiming);
@ -1166,6 +1168,7 @@ static int proc_get_driver_variable(char *page, char **start,
"rtk_enable_diag\t0x%x\n" "rtk_enable_diag\t0x%x\n"
"ShortPacketSwChecksum\t0x%x\n" "ShortPacketSwChecksum\t0x%x\n"
"UseSwPaddingShortPkt\t0x%x\n" "UseSwPaddingShortPkt\t0x%x\n"
"RequireRduNonStopPatch\t0x%x\n"
"RequireAdcBiasPatch\t0x%x\n" "RequireAdcBiasPatch\t0x%x\n"
"AdcBiasPatchIoffset\t0x%x\n" "AdcBiasPatchIoffset\t0x%x\n"
"RequireAdjustUpsTxLinkPulseTiming\t0x%x\n" "RequireAdjustUpsTxLinkPulseTiming\t0x%x\n"
@ -1233,7 +1236,7 @@ static int proc_get_driver_variable(char *page, char **start,
tp->chipset, tp->chipset,
rtl_chip_info[tp->chipset].name, rtl_chip_info[tp->chipset].name,
dev->mtu, dev->mtu,
NUM_RX_DESC, tp->rx_ring[0].num_rx_desc,
tp->rx_ring[0].cur_rx, tp->rx_ring[0].cur_rx,
tp->rx_ring[0].dirty_rx, tp->rx_ring[0].dirty_rx,
tp->rx_ring[1].cur_rx, tp->rx_ring[1].cur_rx,
@ -1242,7 +1245,7 @@ static int proc_get_driver_variable(char *page, char **start,
tp->rx_ring[2].dirty_rx, tp->rx_ring[2].dirty_rx,
tp->rx_ring[3].cur_rx, tp->rx_ring[3].cur_rx,
tp->rx_ring[3].dirty_rx, tp->rx_ring[3].dirty_rx,
NUM_TX_DESC, tp->tx_ring[0].num_tx_desc,
tp->tx_ring[0].cur_tx, tp->tx_ring[0].cur_tx,
tp->tx_ring[0].dirty_tx, tp->tx_ring[0].dirty_tx,
tp->tx_ring[1].cur_tx, tp->tx_ring[1].cur_tx,
@ -1281,6 +1284,7 @@ static int proc_get_driver_variable(char *page, char **start,
tp->rtk_enable_diag, tp->rtk_enable_diag,
tp->ShortPacketSwChecksum, tp->ShortPacketSwChecksum,
tp->UseSwPaddingShortPkt, tp->UseSwPaddingShortPkt,
tp->RequireRduNonStopPatch,
tp->RequireAdcBiasPatch, tp->RequireAdcBiasPatch,
tp->AdcBiasPatchIoffset, tp->AdcBiasPatchIoffset,
tp->RequireAdjustUpsTxLinkPulseTiming, tp->RequireAdjustUpsTxLinkPulseTiming,
@ -3205,6 +3209,13 @@ rtl8125_hw_set_timer_int_8125(struct rtl8125_private *tp,
{ {
switch (tp->HwSuppIntMitiVer) { switch (tp->HwSuppIntMitiVer) {
case 4: case 4:
#ifdef ENABLE_LIB_SUPPORT
if (message_id < R8125_MAX_RX_QUEUES_VEC_V3)
timer_intmiti_val = 0;
#else
if (tp->EnableRss && (message_id < R8125_MAX_RX_QUEUES_VEC_V3))
timer_intmiti_val = 0;
#endif //ENABLE_LIB_SUPPORT
if (message_id < R8125_MAX_RX_QUEUES_VEC_V3) //ROK if (message_id < R8125_MAX_RX_QUEUES_VEC_V3) //ROK
RTL_W8(tp,INT_MITI_V2_0_RX + 8 * message_id, timer_intmiti_val); RTL_W8(tp,INT_MITI_V2_0_RX + 8 * message_id, timer_intmiti_val);
else if (message_id == 16) //TOK else if (message_id == 16) //TOK
@ -4682,6 +4693,8 @@ rtl8125_rx_desc_opts2(struct rtl8125_private *tp,
return desc->opts2; return desc->opts2;
} }
#ifdef CONFIG_R8125_VLAN
static void static void
rtl8125_clear_rx_desc_opts2(struct rtl8125_private *tp, rtl8125_clear_rx_desc_opts2(struct rtl8125_private *tp,
struct RxDesc *desc) struct RxDesc *desc)
@ -4692,8 +4705,6 @@ rtl8125_clear_rx_desc_opts2(struct rtl8125_private *tp,
desc->opts2 = 0; desc->opts2 = 0;
} }
#ifdef CONFIG_R8125_VLAN
static inline u32 static inline u32
rtl8125_tx_vlan_tag(struct rtl8125_private *tp, rtl8125_tx_vlan_tag(struct rtl8125_private *tp,
struct sk_buff *skb) struct sk_buff *skb)
@ -5189,7 +5200,7 @@ static const char rtl8125_gstrings[][ETH_GSTRING_LEN] = {
"tdu", "tdu",
"rdu", "rdu",
}; };
#endif //#LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22) #endif //LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22) #if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
@ -5197,7 +5208,7 @@ static int rtl8125_get_stats_count(struct net_device *dev)
{ {
return ARRAY_SIZE(rtl8125_gstrings); return ARRAY_SIZE(rtl8125_gstrings);
} }
#endif //#LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22) #endif //LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
#else #else
static int rtl8125_get_sset_count(struct net_device *dev, int sset) static int rtl8125_get_sset_count(struct net_device *dev, int sset)
{ {
@ -5210,6 +5221,66 @@ static int rtl8125_get_sset_count(struct net_device *dev, int sset)
} }
#endif #endif
static void
rtl8125_set_ring_size(struct rtl8125_private *tp, u32 rx, u32 tx)
{
int i;
for (i = 0; i < tp->num_rx_rings; i++)
tp->rx_ring[i].num_rx_desc = rx;
for (i = 0; i < tp->num_tx_rings; i++)
tp->tx_ring[i].num_tx_desc = tx;
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
static void rtl8125_get_ringparam(struct net_device *dev,
struct ethtool_ringparam *ring)
{
struct rtl8125_private *tp = netdev_priv(dev);
ring->rx_max_pending = MAX_NUM_TX_DESC;
ring->tx_max_pending = MAX_NUM_RX_DESC;;
ring->rx_pending = tp->rx_ring[0].num_rx_desc;
ring->tx_pending = tp->tx_ring[0].num_tx_desc;
}
static int rtl8125_set_ringparam(struct net_device *dev,
struct ethtool_ringparam *ring)
{
struct rtl8125_private *tp = netdev_priv(dev);
u32 new_rx_count, new_tx_count;
int rc = 0;
if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
return -EINVAL;
new_tx_count = clamp_t(u32, ring->tx_pending,
MIN_NUM_TX_DESC, MAX_NUM_TX_DESC);
new_rx_count = clamp_t(u32, ring->rx_pending,
MIN_NUM_RX_DESC, MAX_NUM_RX_DESC);
if ((new_rx_count == tp->rx_ring[0].num_rx_desc) &&
(new_tx_count == tp->tx_ring[0].num_tx_desc)) {
/* nothing to do */
return 0;
}
if (netif_running(dev)) {
rtl8125_wait_for_quiescence(dev);
rtl8125_close(dev);
}
rtl8125_set_ring_size(tp, new_rx_count, new_tx_count);
if (netif_running(dev))
rc = rtl8125_open(dev);
return rc;
}
#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22) #if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
static void static void
rtl8125_get_ethtool_stats(struct net_device *dev, rtl8125_get_ethtool_stats(struct net_device *dev,
@ -5282,7 +5353,7 @@ rtl8125_get_strings(struct net_device *dev,
break; break;
} }
} }
#endif //#LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22) #endif //LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
static int rtl_get_eeprom_len(struct net_device *dev) static int rtl_get_eeprom_len(struct net_device *dev)
{ {
@ -5413,7 +5484,10 @@ static int rtl8125_enable_eee(struct rtl8125_private *tp)
SetMcuAccessRegBit(tp, 0xEB62, (BIT_2|BIT_1)); SetMcuAccessRegBit(tp, 0xEB62, (BIT_2|BIT_1));
SetEthPhyOcpBit(tp, 0xA432, BIT_4); SetEthPhyOcpBit(tp, 0xA432, BIT_4);
SetEthPhyOcpBit(tp, 0xA5D0, eee_adv_t); ClearAndSetEthPhyOcpBit(tp,
0xA5D0,
MDIO_EEE_100TX | MDIO_EEE_1000T,
eee_adv_t);
ClearEthPhyOcpBit(tp, 0xA6D4, BIT_0); ClearEthPhyOcpBit(tp, 0xA6D4, BIT_0);
ClearEthPhyOcpBit(tp, 0xA6D8, BIT_4); ClearEthPhyOcpBit(tp, 0xA6D8, BIT_4);
@ -5427,7 +5501,10 @@ static int rtl8125_enable_eee(struct rtl8125_private *tp)
SetMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0)); SetMcuAccessRegBit(tp, 0xE040, (BIT_1|BIT_0));
SetEthPhyOcpBit(tp, 0xA5D0, eee_adv_t); ClearAndSetEthPhyOcpBit(tp,
0xA5D0,
MDIO_EEE_100TX | MDIO_EEE_1000T,
eee_adv_t);
if (eee->advertised & SUPPORTED_2500baseX_Full) if (eee->advertised & SUPPORTED_2500baseX_Full)
SetEthPhyOcpBit(tp, 0xA6D4, BIT_0); SetEthPhyOcpBit(tp, 0xA6D4, BIT_0);
else else
@ -5587,10 +5664,16 @@ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata)
/* Get advertisement EEE */ /* Get advertisement EEE */
val = mdio_direct_read_phy_ocp(tp, 0xA5D0); val = mdio_direct_read_phy_ocp(tp, 0xA5D0);
adv = mmd_eee_adv_to_ethtool_adv_t(val); adv = mmd_eee_adv_to_ethtool_adv_t(val);
val = mdio_direct_read_phy_ocp(tp, 0xA6D4);
if (val & RTK_EEE_ADVERTISE_2500FULL)
adv |= ADVERTISED_2500baseX_Full;
/* Get LP advertisement EEE */ /* Get LP advertisement EEE */
val = mdio_direct_read_phy_ocp(tp, 0xA5D2); val = mdio_direct_read_phy_ocp(tp, 0xA5D2);
lp = mmd_eee_adv_to_ethtool_adv_t(val); lp = mmd_eee_adv_to_ethtool_adv_t(val);
val = mdio_direct_read_phy_ocp(tp, 0xA6D0);
if (val & RTK_LPA_EEE_ADVERTISE_2500FULL)
lp |= ADVERTISED_2500baseX_Full;
/* Get EEE Tx LPI timer*/ /* Get EEE Tx LPI timer*/
tx_lpi_timer = RTL_R16(tp, EEE_TXIDLE_TIMER_8125); tx_lpi_timer = RTL_R16(tp, EEE_TXIDLE_TIMER_8125);
@ -5691,17 +5774,21 @@ static const struct ethtool_ops rtl8125_ethtool_ops = {
.get_drvinfo = rtl8125_get_drvinfo, .get_drvinfo = rtl8125_get_drvinfo,
.get_regs_len = rtl8125_get_regs_len, .get_regs_len = rtl8125_get_regs_len,
.get_link = ethtool_op_get_link, .get_link = ethtool_op_get_link,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
.get_ringparam = rtl8125_get_ringparam,
.set_ringparam = rtl8125_set_ringparam,
#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0) #if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
.get_settings = rtl8125_get_settings, .get_settings = rtl8125_get_settings,
.set_settings = rtl8125_set_settings, .set_settings = rtl8125_set_settings,
#else #else
.get_link_ksettings = rtl8125_get_settings, .get_link_ksettings = rtl8125_get_settings,
.set_link_ksettings = rtl8125_set_settings, .set_link_ksettings = rtl8125_set_settings,
#endif #endif //LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
.get_pauseparam = rtl8125_get_pauseparam, .get_pauseparam = rtl8125_get_pauseparam,
.set_pauseparam = rtl8125_set_pauseparam, .set_pauseparam = rtl8125_set_pauseparam,
#endif #endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
.get_msglevel = rtl8125_get_msglevel, .get_msglevel = rtl8125_get_msglevel,
.set_msglevel = rtl8125_set_msglevel, .set_msglevel = rtl8125_set_msglevel,
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) #if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
@ -5714,8 +5801,8 @@ static const struct ethtool_ops rtl8125_ethtool_ops = {
#ifdef NETIF_F_TSO #ifdef NETIF_F_TSO
.get_tso = ethtool_op_get_tso, .get_tso = ethtool_op_get_tso,
.set_tso = ethtool_op_set_tso, .set_tso = ethtool_op_set_tso,
#endif #endif //NETIF_F_TSO
#endif #endif //LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
.get_regs = rtl8125_get_regs, .get_regs = rtl8125_get_regs,
.get_wol = rtl8125_get_wol, .get_wol = rtl8125_get_wol,
.set_wol = rtl8125_set_wol, .set_wol = rtl8125_set_wol,
@ -5724,12 +5811,12 @@ static const struct ethtool_ops rtl8125_ethtool_ops = {
.get_stats_count = rtl8125_get_stats_count, .get_stats_count = rtl8125_get_stats_count,
#else #else
.get_sset_count = rtl8125_get_sset_count, .get_sset_count = rtl8125_get_sset_count,
#endif #endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
.get_ethtool_stats = rtl8125_get_ethtool_stats, .get_ethtool_stats = rtl8125_get_ethtool_stats,
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
#ifdef ETHTOOL_GPERMADDR #ifdef ETHTOOL_GPERMADDR
.get_perm_addr = ethtool_op_get_perm_addr, .get_perm_addr = ethtool_op_get_perm_addr,
#endif #endif //ETHTOOL_GPERMADDR
#endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) #endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
.get_eeprom = rtl_get_eeprom, .get_eeprom = rtl_get_eeprom,
.get_eeprom_len = rtl_get_eeprom_len, .get_eeprom_len = rtl_get_eeprom_len,
@ -5740,7 +5827,7 @@ static const struct ethtool_ops rtl8125_ethtool_ops = {
.get_rxfh_key_size = rtl8125_get_rxfh_key_size, .get_rxfh_key_size = rtl8125_get_rxfh_key_size,
.get_rxfh = rtl8125_get_rxfh, .get_rxfh = rtl8125_get_rxfh,
.set_rxfh = rtl8125_set_rxfh, .set_rxfh = rtl8125_set_rxfh,
#endif #endif //ENABLE_RSS_SUPPORT
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
#ifdef ENABLE_PTP_SUPPORT #ifdef ENABLE_PTP_SUPPORT
.get_ts_info = rtl8125_get_ts_info, .get_ts_info = rtl8125_get_ts_info,
@ -6174,38 +6261,92 @@ rtl8125_set_mac_mcu_8125a_2(struct net_device *dev)
{ {
struct rtl8125_private *tp = netdev_priv(dev); struct rtl8125_private *tp = netdev_priv(dev);
static const u16 mcu_patch_code_8125a_2[] = { static const u16 mcu_patch_code_8125a_2[] = {
0xE010, 0xE026, 0xE036, 0xE05C, 0xE05E, 0xE060, 0xE0C9, 0xE0D2, 0xE0D4, 0xE010, 0xE012, 0xE022, 0xE024, 0xE029, 0xE02B, 0xE094, 0xE09D, 0xE09F,
0xE0DF, 0xE0EA, 0xE0FB, 0xE101, 0xE106, 0xE10B, 0xE10D, 0x9996, 0x49D1, 0xE0AA, 0xE0B5, 0xE0C6, 0xE0CC, 0xE0D1, 0xE0D6, 0xE0D8, 0xC602, 0xBE00,
0xF005, 0x49D4, 0xF10A, 0x49D8, 0xF108, 0xC00F, 0x7100, 0x209C, 0x249C, 0x0000, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609,
0xC009, 0x9900, 0xE004, 0xC006, 0x1900, 0x9900, 0xC602, 0xBE00, 0x5A48, 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8,
0xE0C2, 0x0004, 0xE10A, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xC602, 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12,
0xB406, 0xC609, 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8,
0xE906, 0xCDE8, 0xC724, 0xC624, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0, 0x49E0, 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2,
0xF1FE, 0x76E6, 0x486D, 0x4868, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0, 0x49E0, 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858,
0xF1FE, 0xC615, 0x9EE2, 0x1E01, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE, 0x76E6, 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8,
0x486F, 0x9EE4, 0x1E03, 0x9EE0, 0x76E0, 0x49E0, 0xF1FE, 0x7196, 0xC702, 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137,
0xBF00, 0x5A44, 0xEB0E, 0x0070, 0x00C3, 0xC602, 0xBE00, 0x0000, 0xC602, 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A,
0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, 0x49D5, 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125,
0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9, 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA,
0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA,
0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2,
0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137, 0xE030, 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA,
0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, 0x49D8, 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0,
0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, 0xC528, 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C,
0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, 0x48DB, 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA,
0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, 0x4859, 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A,
0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, 0xF003, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA,
0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, 0xC608, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00,
0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, 0x1200, 0x07DC, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7,
0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, 0xC010, 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092,
0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, 0xC607, 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8,
0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, 0x4826, 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF,
0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, 0x07DC, 0xC102, 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, 0x9CCA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, 0xE0C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, 0x1BFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486,
0x0B15, 0x090E, 0x1139
}; };
rtl8125_hw_disable_mac_mcu_bps(dev); rtl8125_hw_disable_mac_mcu_bps(dev);
@ -6215,13 +6356,14 @@ rtl8125_set_mac_mcu_8125a_2(struct net_device *dev)
rtl8125_mac_ocp_write(tp, 0xFC26, 0x8000); rtl8125_mac_ocp_write(tp, 0xFC26, 0x8000);
rtl8125_mac_ocp_write(tp, 0xFC2A, 0x0540); rtl8125_mac_ocp_write(tp, 0xFC2A, 0x0540);
rtl8125_mac_ocp_write(tp, 0xFC2E, 0x0A06);
rtl8125_mac_ocp_write(tp, 0xFC30, 0x0EB8); rtl8125_mac_ocp_write(tp, 0xFC30, 0x0EB8);
rtl8125_mac_ocp_write(tp, 0xFC32, 0x3A5C); rtl8125_mac_ocp_write(tp, 0xFC32, 0x3A5C);
rtl8125_mac_ocp_write(tp, 0xFC34, 0x10A8); rtl8125_mac_ocp_write(tp, 0xFC34, 0x10A8);
rtl8125_mac_ocp_write(tp, 0xFC40, 0x0D54); rtl8125_mac_ocp_write(tp, 0xFC40, 0x0D54);
rtl8125_mac_ocp_write(tp, 0xFC42, 0x0E24); rtl8125_mac_ocp_write(tp, 0xFC42, 0x0E24);
rtl8125_mac_ocp_write(tp, 0xFC48, 0x3072); rtl8125_mac_ocp_write(tp, 0xFC48, 0x307A);
} }
static void static void
@ -6235,8 +6377,8 @@ rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
{ {
struct rtl8125_private *tp = netdev_priv(dev); struct rtl8125_private *tp = netdev_priv(dev);
static const u16 mcu_patch_code_8125b_2[] = { static const u16 mcu_patch_code_8125b_2[] = {
0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE05F, 0xE061, 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE062,
0xE063, 0xE065, 0xE067, 0xE069, 0xE06B, 0xE06D, 0xE06F, 0x740A, 0x4846, 0xE064, 0xE066, 0xE068, 0xE06A, 0xE06C, 0xE06E, 0xE070, 0x740A, 0x4846,
0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0, 0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0,
0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0,
0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C,
@ -6246,10 +6388,10 @@ rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E, 0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E,
0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602, 0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602,
0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2, 0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2,
0xC5C3, 0xBD00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
0xC602, 0xBE00, 0x0000 0x0000, 0xC602, 0xBE00, 0x0000
}; };
rtl8125_hw_disable_mac_mcu_bps(dev); rtl8125_hw_disable_mac_mcu_bps(dev);
@ -6264,9 +6406,9 @@ rtl8125_set_mac_mcu_8125b_2(struct net_device *dev)
rtl8125_mac_ocp_write(tp, 0xFC2E, 0x12DA); rtl8125_mac_ocp_write(tp, 0xFC2E, 0x12DA);
rtl8125_mac_ocp_write(tp, 0xFC30, 0x4A20); rtl8125_mac_ocp_write(tp, 0xFC30, 0x4A20);
rtl8125_mac_ocp_write(tp, 0xFC32, 0x47A0); rtl8125_mac_ocp_write(tp, 0xFC32, 0x47A0);
//rtl8125_mac_ocp_write(tp, 0xFC34, 0x0A46); rtl8125_mac_ocp_write(tp, 0xFC34, 0x0A46);
rtl8125_mac_ocp_write(tp, 0xFC48, 0x003F); rtl8125_mac_ocp_write(tp, 0xFC48, 0x007F);
} }
static void static void
@ -6499,12 +6641,16 @@ rtl8125_hw_ephy_config(struct net_device *dev)
case CFG_METHOD_5: case CFG_METHOD_5:
case CFG_METHOD_7: case CFG_METHOD_7:
rtl8125_ephy_write(tp, 0x0B, 0xA908); rtl8125_ephy_write(tp, 0x0B, 0xA908);
rtl8125_ephy_write(tp, 0x1E, 0x20EB);
rtl8125_ephy_write(tp, 0x22, 0x0023); rtl8125_ephy_write(tp, 0x22, 0x0023);
rtl8125_ephy_write(tp, 0x1E, 0x28EB); rtl8125_ephy_write(tp, 0x02, 0x60C2);
rtl8125_ephy_write(tp, 0x29, 0xFF00);
rtl8125_ephy_write(tp, 0x4B, 0xA908); rtl8125_ephy_write(tp, 0x4B, 0xA908);
rtl8125_ephy_write(tp, 0x62, 0x0023);
rtl8125_ephy_write(tp, 0x5E, 0x28EB); rtl8125_ephy_write(tp, 0x5E, 0x28EB);
rtl8125_ephy_write(tp, 0x62, 0x0023);
rtl8125_ephy_write(tp, 0x42, 0x60C2);
rtl8125_ephy_write(tp, 0x69, 0xFF00);
break; break;
} }
} }
@ -10547,12 +10693,12 @@ rtl8125_init_software_variable(struct net_device *dev)
tp->EnableRss = 1; tp->EnableRss = 1;
} }
#endif #endif
if (tp->EnableRss)
rtl8125_init_rss(tp);
#endif #endif
rtl8125_setup_mqs_reg(tp); rtl8125_setup_mqs_reg(tp);
rtl8125_set_ring_size(tp, NUM_RX_DESC, NUM_TX_DESC);
switch (tp->mcfg) { switch (tp->mcfg) {
case CFG_METHOD_4: case CFG_METHOD_4:
case CFG_METHOD_5: case CFG_METHOD_5:
@ -10565,19 +10711,6 @@ rtl8125_init_software_variable(struct net_device *dev)
tp->EnablePtp = 1; tp->EnablePtp = 1;
#endif #endif
tp->InitRxDescType = RX_DESC_RING_TYPE_1;
if (tp->EnableRss || tp->EnablePtp)
tp->InitRxDescType = RX_DESC_RING_TYPE_3;
tp->RxDescLength = RX_DESC_LEN_TYPE_1;
if (tp->InitRxDescType == RX_DESC_RING_TYPE_3)
tp->RxDescLength = RX_DESC_LEN_TYPE_3;
tp->RxDescRingLength = NUM_RX_DESC * tp->RxDescLength;
tp->rtl8125_rx_config = rtl_chip_info[tp->chipset].RCR_Cfg;
if (tp->InitRxDescType == RX_DESC_RING_TYPE_3)
tp->rtl8125_rx_config |= EnableRxDescV3;
//init interrupt //init interrupt
switch (tp->mcfg) { switch (tp->mcfg) {
case CFG_METHOD_4: case CFG_METHOD_4:
@ -10649,6 +10782,31 @@ rtl8125_init_software_variable(struct net_device *dev)
timer_count_v2 = (timer_count / 0x100); timer_count_v2 = (timer_count / 0x100);
#ifndef ENABLE_LIB_SUPPORT
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
case CFG_METHOD_7:
if (tp->HwSuppIsrVer == 2) {
tp->RequireRduNonStopPatch = 1;
tp->EnableRss = 0;
}
break;
}
#endif
tp->InitRxDescType = RX_DESC_RING_TYPE_1;
if (tp->EnableRss || tp->EnablePtp)
tp->InitRxDescType = RX_DESC_RING_TYPE_3;
tp->RxDescLength = RX_DESC_LEN_TYPE_1;
if (tp->InitRxDescType == RX_DESC_RING_TYPE_3)
tp->RxDescLength = RX_DESC_LEN_TYPE_3;
tp->rtl8125_rx_config = rtl_chip_info[tp->chipset].RCR_Cfg;
if (tp->InitRxDescType == RX_DESC_RING_TYPE_3)
tp->rtl8125_rx_config |= EnableRxDescV3;
tp->NicCustLedValue = RTL_R16(tp, CustomLED); tp->NicCustLedValue = RTL_R16(tp, CustomLED);
tp->wol_opts = rtl8125_get_hw_wol(tp); tp->wol_opts = rtl8125_get_hw_wol(tp);
@ -10689,6 +10847,11 @@ rtl8125_init_software_variable(struct net_device *dev)
} }
tp->ptp_master_mode = enable_ptp_master_mode; tp->ptp_master_mode = enable_ptp_master_mode;
#ifdef ENABLE_RSS_SUPPORT
if (tp->EnableRss)
rtl8125_init_rss(tp);
#endif
} }
static void static void
@ -12113,12 +12276,12 @@ static int rtl8125_poll(napi_ptr napi, napi_budget budget)
unsigned int work_done = 0; unsigned int work_done = 0;
int i; int i;
for (i = 0; i < tp->num_rx_rings; i++)
work_done += rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[i], budget);
for (i = 0; i < tp->num_tx_rings; i++) for (i = 0; i < tp->num_tx_rings; i++)
rtl8125_tx_interrupt(&tp->tx_ring[i], budget); rtl8125_tx_interrupt(&tp->tx_ring[i], budget);
for (i = 0; i < tp->num_rx_rings; i++)
work_done += rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[i], budget);
RTL_NAPI_QUOTA_UPDATE(dev, work_done, budget); RTL_NAPI_QUOTA_UPDATE(dev, work_done, budget);
if (work_done < work_to_do) { if (work_done < work_to_do) {
@ -12156,10 +12319,10 @@ static int rtl8125_poll_msix_ring(napi_ptr napi, napi_budget budget)
unsigned int work_done = 0; unsigned int work_done = 0;
const int message_id = r8125napi->index; const int message_id = r8125napi->index;
work_done += rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[message_id], budget);
rtl8125_tx_interrupt_with_vector(tp, message_id, budget); rtl8125_tx_interrupt_with_vector(tp, message_id, budget);
work_done += rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[message_id], budget);
RTL_NAPI_QUOTA_UPDATE(dev, work_done, budget); RTL_NAPI_QUOTA_UPDATE(dev, work_done, budget);
if (work_done < work_to_do) { if (work_done < work_to_do) {
@ -12682,8 +12845,10 @@ static int rtl8125_alloc_tx_desc(struct rtl8125_private *tp)
for (i = 0; i < tp->num_tx_rings; i++) { for (i = 0; i < tp->num_tx_rings; i++) {
ring = &tp->tx_ring[i]; ring = &tp->tx_ring[i];
ring->TxDescArray = dma_alloc_coherent(&pdev->dev, R8125_TX_RING_BYTES, ring->TxDescArray = dma_alloc_coherent(&pdev->dev,
&ring->TxPhyAddr, GFP_KERNEL); (ring->num_tx_desc * sizeof(struct TxDesc)),
&ring->TxPhyAddr,
GFP_KERNEL);
if (!ring->TxDescArray) if (!ring->TxDescArray)
return -1; return -1;
@ -12700,8 +12865,10 @@ static int rtl8125_alloc_rx_desc(struct rtl8125_private *tp)
for (i = 0; i < tp->num_rx_rings; i++) { for (i = 0; i < tp->num_rx_rings; i++) {
ring = &tp->rx_ring[i]; ring = &tp->rx_ring[i];
ring->RxDescArray = dma_alloc_coherent(&pdev->dev, tp->RxDescRingLength, ring->RxDescArray = dma_alloc_coherent(&pdev->dev,
&ring->RxPhyAddr, GFP_KERNEL); (ring->num_rx_desc * tp->RxDescLength),
&ring->RxPhyAddr,
GFP_KERNEL);
if (!ring->RxDescArray) if (!ring->RxDescArray)
return -1; return -1;
@ -12710,6 +12877,24 @@ static int rtl8125_alloc_rx_desc(struct rtl8125_private *tp)
return 0; return 0;
} }
static int rtl8125_alloc_patch_mem(struct rtl8125_private *tp)
{
struct pci_dev *pdev = tp->pci_dev;
if (tp->RequireRduNonStopPatch) {
tp->ShortPacketEmptyBuffer = dma_alloc_coherent(&pdev->dev,
SHORT_PACKET_PADDING_BUF_SIZE,
&tp->ShortPacketEmptyBufferPhy,
GFP_KERNEL);
if (!tp->ShortPacketEmptyBuffer)
return -1;
memset(tp->ShortPacketEmptyBuffer, 0x0, SHORT_PACKET_PADDING_BUF_SIZE);
}
return 0;
}
static void rtl8125_free_tx_desc(struct rtl8125_private *tp) static void rtl8125_free_tx_desc(struct rtl8125_private *tp)
{ {
struct rtl8125_tx_ring *ring; struct rtl8125_tx_ring *ring;
@ -12719,7 +12904,9 @@ static void rtl8125_free_tx_desc(struct rtl8125_private *tp)
for (i = 0; i < tp->num_tx_rings; i++) { for (i = 0; i < tp->num_tx_rings; i++) {
ring = &tp->tx_ring[i]; ring = &tp->tx_ring[i];
if (ring->TxDescArray) { if (ring->TxDescArray) {
dma_free_coherent(&pdev->dev, R8125_TX_RING_BYTES, ring->TxDescArray, dma_free_coherent(&pdev->dev,
(ring->num_tx_desc * sizeof(struct TxDesc)),
ring->TxDescArray,
ring->TxPhyAddr); ring->TxPhyAddr);
ring->TxDescArray = NULL; ring->TxDescArray = NULL;
} }
@ -12735,18 +12922,35 @@ static void rtl8125_free_rx_desc(struct rtl8125_private *tp)
for (i = 0; i < tp->num_rx_rings; i++) { for (i = 0; i < tp->num_rx_rings; i++) {
ring = &tp->rx_ring[i]; ring = &tp->rx_ring[i];
if (ring->RxDescArray) { if (ring->RxDescArray) {
dma_free_coherent(&pdev->dev, tp->RxDescRingLength, ring->RxDescArray, dma_free_coherent(&pdev->dev,
(ring->num_rx_desc * tp->RxDescLength),
ring->RxDescArray,
ring->RxPhyAddr); ring->RxPhyAddr);
ring->RxDescArray = NULL; ring->RxDescArray = NULL;
} }
} }
} }
static void rtl8125_free_patch_mem(struct rtl8125_private *tp)
{
struct pci_dev *pdev = tp->pci_dev;
if (tp->ShortPacketEmptyBuffer) {
dma_free_coherent(&pdev->dev,
SHORT_PACKET_PADDING_BUF_SIZE,
tp->ShortPacketEmptyBuffer,
tp->ShortPacketEmptyBufferPhy);
tp->ShortPacketEmptyBuffer = NULL;
}
}
static void rtl8125_free_alloc_resources(struct rtl8125_private *tp) static void rtl8125_free_alloc_resources(struct rtl8125_private *tp)
{ {
rtl8125_free_rx_desc(tp); rtl8125_free_rx_desc(tp);
rtl8125_free_tx_desc(tp); rtl8125_free_tx_desc(tp);
rtl8125_free_patch_mem(tp);
} }
#ifdef ENABLE_USE_FIRMWARE_FILE #ifdef ENABLE_USE_FIRMWARE_FILE
@ -12798,6 +13002,10 @@ int rtl8125_open(struct net_device *dev)
if (retval < 0) if (retval < 0)
goto err_free_all_allocated_mem; goto err_free_all_allocated_mem;
retval = rtl8125_alloc_patch_mem(tp);
if (retval < 0)
goto err_free_all_allocated_mem;
retval = rtl8125_alloc_irq(tp); retval = rtl8125_alloc_irq(tp);
if (retval < 0) if (retval < 0)
goto err_free_all_allocated_mem; goto err_free_all_allocated_mem;
@ -13192,6 +13400,12 @@ rtl8125_hw_config(struct net_device *dev)
rtl8125_hw_clear_int_miti(dev); rtl8125_hw_clear_int_miti(dev);
if (tp->RequireRduNonStopPatch &&
tp->ShortPacketEmptyBuffer) {
RTL_W32(tp, RSS_INDIRECTION_TBL_8125_V2, ((u64)tp->ShortPacketEmptyBufferPhy & DMA_BIT_MASK(32)));
RTL_W32(tp, RSS_INDIRECTION_TBL_8125_V2 + 4, ((u64)tp->ShortPacketEmptyBufferPhy >> 32));
}
if (tp->use_timer_interrrupt && if (tp->use_timer_interrrupt &&
(tp->HwCurrIsrVer == 2) && (tp->HwCurrIsrVer == 2) &&
(tp->HwSuppIntMitiVer == 4) && (tp->HwSuppIntMitiVer == 4) &&
@ -13490,7 +13704,7 @@ _rtl8125_rx_clear(struct rtl8125_private *tp, struct rtl8125_rx_ring *ring)
{ {
int i; int i;
for (i = 0; i < NUM_RX_DESC; i++) { for (i = 0; i < ring->num_rx_desc; i++) {
if (ring->Rx_skbuff[i]) { if (ring->Rx_skbuff[i]) {
rtl8125_free_rx_skb(tp, rtl8125_free_rx_skb(tp,
ring, ring,
@ -13522,7 +13736,7 @@ rtl8125_rx_fill(struct rtl8125_private *tp,
u32 cur; u32 cur;
for (cur = start; end - cur > 0; cur++) { for (cur = start; end - cur > 0; cur++) {
int ret, i = cur % NUM_RX_DESC; int ret, i = cur % ring->num_rx_desc;
if (ring->Rx_skbuff[i]) if (ring->Rx_skbuff[i])
continue; continue;
@ -13582,9 +13796,9 @@ rtl8125_tx_desc_init(struct rtl8125_private *tp)
for (i = 0; i < tp->num_tx_rings; i++) { for (i = 0; i < tp->num_tx_rings; i++) {
struct rtl8125_tx_ring *ring = &tp->tx_ring[i]; struct rtl8125_tx_ring *ring = &tp->tx_ring[i];
memset(ring->TxDescArray, 0x0, R8125_TX_RING_BYTES); memset(ring->TxDescArray, 0x0, (ring->num_tx_desc * sizeof(struct TxDesc)));
ring->TxDescArray[NUM_TX_DESC - 1].opts1 = cpu_to_le32(RingEnd); ring->TxDescArray[ring->num_tx_desc - 1].opts1 = cpu_to_le32(RingEnd);
} }
} }
@ -13595,7 +13809,8 @@ rtl8125_rx_desc_init(struct rtl8125_private *tp)
for (i = 0; i < tp->num_rx_rings; i++) { for (i = 0; i < tp->num_rx_rings; i++) {
struct rtl8125_rx_ring *ring = &tp->rx_ring[i]; struct rtl8125_rx_ring *ring = &tp->rx_ring[i];
memset(ring->RxDescArray, 0x0, tp->RxDescRingLength); memset(ring->RxDescArray, 0x0,
(ring->num_rx_desc * tp->RxDescLength));
} }
} }
@ -13612,17 +13827,17 @@ rtl8125_init_ring(struct net_device *dev)
for (i = 0; i < tp->num_tx_rings; i++) { for (i = 0; i < tp->num_tx_rings; i++) {
struct rtl8125_tx_ring *ring = &tp->tx_ring[i]; struct rtl8125_tx_ring *ring = &tp->tx_ring[i];
memset(ring->tx_skb, 0x0, NUM_TX_DESC * sizeof(struct ring_info)); memset(ring->tx_skb, 0x0, sizeof(ring->tx_skb));
} }
for (i = 0; i < tp->num_rx_rings; i++) { for (i = 0; i < tp->num_rx_rings; i++) {
struct rtl8125_rx_ring *ring = &tp->rx_ring[i]; struct rtl8125_rx_ring *ring = &tp->rx_ring[i];
memset(ring->Rx_skbuff, 0x0, NUM_RX_DESC * sizeof(struct sk_buff *)); memset(ring->Rx_skbuff, 0x0, sizeof(ring->Rx_skbuff));
if (rtl8125_rx_fill(tp, ring, dev, 0, NUM_RX_DESC, 0) != NUM_RX_DESC) if (rtl8125_rx_fill(tp, ring, dev, 0, ring->num_rx_desc, 0) != ring->num_rx_desc)
goto err_out; goto err_out;
rtl8125_mark_as_last_descriptor(tp, rtl8125_get_rxdesc(tp, ring->RxDescArray, NUM_RX_DESC - 1)); rtl8125_mark_as_last_descriptor(tp, rtl8125_get_rxdesc(tp, ring->RxDescArray, ring->num_rx_desc - 1));
} }
return 0; return 0;
@ -13659,7 +13874,7 @@ rtl8125_tx_clear_range(struct rtl8125_private *tp,
#endif #endif
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
unsigned int entry = (start + i) % NUM_TX_DESC; unsigned int entry = (start + i) % ring->num_tx_desc;
struct ring_info *tx_skb = ring->tx_skb + entry; struct ring_info *tx_skb = ring->tx_skb + entry;
unsigned int len = tx_skb->len; unsigned int len = tx_skb->len;
@ -13684,7 +13899,7 @@ rtl8125_tx_clear(struct rtl8125_private *tp)
for (i = 0; i < tp->num_tx_rings; i++) { for (i = 0; i < tp->num_tx_rings; i++) {
struct rtl8125_tx_ring *ring = &tp->tx_ring[i]; struct rtl8125_tx_ring *ring = &tp->tx_ring[i];
rtl8125_tx_clear_range(tp, ring, ring->dirty_tx, NUM_TX_DESC); rtl8125_tx_clear_range(tp, ring, ring->dirty_tx, ring->num_tx_desc);
ring->cur_tx = ring->dirty_tx = 0; ring->cur_tx = ring->dirty_tx = 0;
} }
} }
@ -13976,11 +14191,14 @@ rtl8125_tx_timeout(struct net_device *dev)
} }
static u32 static u32
rtl8125_get_txd_opts1(u32 opts1, u32 len, unsigned int entry) rtl8125_get_txd_opts1(struct rtl8125_tx_ring *ring,
u32 opts1,
u32 len,
unsigned int entry)
{ {
u32 status = opts1 | len; u32 status = opts1 | len;
if (entry == NUM_TX_DESC - 1) if (entry == ring->num_tx_desc - 1)
status |= RingEnd; status |= RingEnd;
return status; return status;
@ -14006,7 +14224,7 @@ rtl8125_xmit_frags(struct rtl8125_private *tp,
u32 status, len; u32 status, len;
void *addr; void *addr;
entry = (entry + 1) % NUM_TX_DESC; entry = (entry + 1) % ring->num_tx_desc;
txd = ring->TxDescArray + entry; txd = ring->TxDescArray + entry;
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) #if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
@ -14032,7 +14250,7 @@ rtl8125_xmit_frags(struct rtl8125_private *tp,
} }
/* anti gcc 2.95.3 bugware (sic) */ /* anti gcc 2.95.3 bugware (sic) */
status = rtl8125_get_txd_opts1(opts[0], len, entry); status = rtl8125_get_txd_opts1(ring, opts[0], len, entry);
txd->addr = cpu_to_le64(mapping); txd->addr = cpu_to_le64(mapping);
@ -14045,7 +14263,7 @@ rtl8125_xmit_frags(struct rtl8125_private *tp,
//second txd //second txd
addr += len; addr += len;
len = 1; len = 1;
entry = (entry + 1) % NUM_TX_DESC; entry = (entry + 1) % ring->num_tx_desc;
txd = ring->TxDescArray + entry; txd = ring->TxDescArray + entry;
cur_frag += 1; cur_frag += 1;
@ -14062,7 +14280,7 @@ rtl8125_xmit_frags(struct rtl8125_private *tp,
} }
/* anti gcc 2.95.3 bugware (sic) */ /* anti gcc 2.95.3 bugware (sic) */
status = rtl8125_get_txd_opts1(opts[0], len, entry); status = rtl8125_get_txd_opts1(ring, opts[0], len, entry);
if (cur_frag == (nr_frags - 1) || LsoPatchEnabled == TRUE) { if (cur_frag == (nr_frags - 1) || LsoPatchEnabled == TRUE) {
//ring->tx_skb[entry].skb = skb; //ring->tx_skb[entry].skb = skb;
status |= LastFrag; status |= LastFrag;
@ -14376,7 +14594,7 @@ rtl8125_tso_csum(struct sk_buff *skb,
static bool rtl8125_tx_slots_avail(struct rtl8125_private *tp, static bool rtl8125_tx_slots_avail(struct rtl8125_private *tp,
struct rtl8125_tx_ring *ring) struct rtl8125_tx_ring *ring)
{ {
unsigned int slots_avail = READ_ONCE(ring->dirty_tx) + NUM_TX_DESC unsigned int slots_avail = READ_ONCE(ring->dirty_tx) + ring->num_tx_desc
- READ_ONCE(ring->cur_tx); - READ_ONCE(ring->cur_tx);
/* A skbuff with nr_frags needs nr_frags+1 entries in the tx queue */ /* A skbuff with nr_frags needs nr_frags+1 entries in the tx queue */
@ -14400,7 +14618,7 @@ rtl8125_start_xmit(struct sk_buff *skb,
struct rtl8125_tx_ring *ring; struct rtl8125_tx_ring *ring;
bool stop_queue; bool stop_queue;
assert(queue_mapping < tp->num_tx_queues); assert(queue_mapping < tp->num_tx_rings);
ring = &tp->tx_ring[queue_mapping]; ring = &tp->tx_ring[queue_mapping];
@ -14414,7 +14632,7 @@ rtl8125_start_xmit(struct sk_buff *skb,
goto err_stop; goto err_stop;
} }
entry = ring->cur_tx % NUM_TX_DESC; entry = ring->cur_tx % ring->num_tx_desc;
txd = ring->TxDescArray + entry; txd = ring->TxDescArray + entry;
if (!EnableTxNoClose) { if (!EnableTxNoClose) {
@ -14448,7 +14666,7 @@ rtl8125_start_xmit(struct sk_buff *skb,
opts[0] |= FirstFrag | LastFrag; opts[0] |= FirstFrag | LastFrag;
} }
opts[0] = rtl8125_get_txd_opts1(opts[0], len, entry); opts[0] = rtl8125_get_txd_opts1(ring, opts[0], len, entry);
mapping = dma_map_single(tp_to_dev(tp), skb->data, len, DMA_TO_DEVICE); mapping = dma_map_single(tp_to_dev(tp), skb->data, len, DMA_TO_DEVICE);
if (unlikely(dma_mapping_error(tp_to_dev(tp), mapping))) { if (unlikely(dma_mapping_error(tp_to_dev(tp), mapping))) {
if (unlikely(net_ratelimit())) if (unlikely(net_ratelimit()))
@ -14559,7 +14777,7 @@ rtl8125_tx_interrupt(struct rtl8125_tx_ring *ring, int budget)
} }
while (tx_left > 0) { while (tx_left > 0) {
unsigned int entry = dirty_tx % NUM_TX_DESC; unsigned int entry = dirty_tx % ring->num_tx_desc;
struct ring_info *tx_skb = ring->tx_skb + entry; struct ring_info *tx_skb = ring->tx_skb + entry;
if (!EnableTxNoClose && if (!EnableTxNoClose &&
@ -14767,14 +14985,14 @@ rtl8125_rx_interrupt(struct net_device *dev,
assert(dev != NULL); assert(dev != NULL);
assert(tp != NULL); assert(tp != NULL);
if ((ring->RxDescArray == NULL)) if (ring->RxDescArray == NULL)
goto rx_out; goto rx_out;
rx_quota = RTL_RX_QUOTA(budget); rx_quota = RTL_RX_QUOTA(budget);
cur_rx = ring->cur_rx; cur_rx = ring->cur_rx;
entry = cur_rx % NUM_RX_DESC; entry = cur_rx % ring->num_rx_desc;
desc = rtl8125_get_rxdesc(tp, ring->RxDescArray, entry); desc = rtl8125_get_rxdesc(tp, ring->RxDescArray, entry);
rx_left = NUM_RX_DESC + ring->dirty_rx - cur_rx; rx_left = ring->num_rx_desc + ring->dirty_rx - cur_rx;
rx_left = rtl8125_rx_quota(rx_left, (u32)rx_quota); rx_left = rtl8125_rx_quota(rx_left, (u32)rx_quota);
for (; rx_left > 0; rx_left--) { for (; rx_left > 0; rx_left--) {
@ -14834,7 +15052,7 @@ process_pkt:
unsigned int entry_next; unsigned int entry_next;
struct sk_buff *skb_next; struct sk_buff *skb_next;
entry_next = (cur_rx + 1) % NUM_RX_DESC; entry_next = (cur_rx + 1) % ring->num_rx_desc;
desc_next = (struct RxDescV3 *)rtl8125_get_rxdesc(tp, ring->RxDescArray, entry_next); desc_next = (struct RxDescV3 *)rtl8125_get_rxdesc(tp, ring->RxDescArray, entry_next);
rmb(); rmb();
status_next = le32_to_cpu(desc_next->RxDescNormalDDWord4.opts1); status_next = le32_to_cpu(desc_next->RxDescNormalDDWord4.opts1);
@ -14910,7 +15128,7 @@ process_pkt:
} }
cur_rx++; cur_rx++;
entry = cur_rx % NUM_RX_DESC; entry = cur_rx % ring->num_rx_desc;
desc = rtl8125_get_rxdesc(tp, ring->RxDescArray, entry); desc = rtl8125_get_rxdesc(tp, ring->RxDescArray, entry);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,37) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,37)
prefetch(desc); prefetch(desc);
@ -14932,7 +15150,7 @@ process_pkt:
* after refill ? * after refill ?
* - how do others driver handle this condition (Uh oh...). * - how do others driver handle this condition (Uh oh...).
*/ */
if ((ring->dirty_rx + NUM_RX_DESC == ring->cur_rx) && netif_msg_intr(tp)) if ((ring->dirty_rx + ring->num_rx_desc == ring->cur_rx) && netif_msg_intr(tp))
printk(KERN_EMERG "%s: Rx buffers exhausted\n", dev->name); printk(KERN_EMERG "%s: Rx buffers exhausted\n", dev->name);
rx_out: rx_out:
@ -14972,7 +15190,7 @@ static irqreturn_t rtl8125_interrupt(int irq, void *dev_instance)
if (!status) if (!status)
break; break;
if ((status == 0xFFFFFFFF)) if (status == 0xFFFFFFFF)
break; break;
if (!(status & (tp->intr_mask | tp->timer_intr_mask))) if (!(status & (tp->intr_mask | tp->timer_intr_mask)))
@ -15038,14 +15256,15 @@ static irqreturn_t rtl8125_interrupt(int irq, void *dev_instance)
if (status & tp->intr_mask) if (status & tp->intr_mask)
tp->keep_intr_cnt = RTK_KEEP_INTERRUPT_COUNT; tp->keep_intr_cnt = RTK_KEEP_INTERRUPT_COUNT;
for (i = 0; i < tp->num_tx_rings; i++)
rtl8125_tx_interrupt(&tp->tx_ring[i], ~(u32)0);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[0], &budget); rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[0], &budget);
#else #else
rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[0], budget); rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[0], budget);
#endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) #endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
for (i = 0; i < tp->num_tx_rings; i++)
rtl8125_tx_interrupt(&tp->tx_ring[i], ~(u32)0);
#ifdef ENABLE_DASH_SUPPORT #ifdef ENABLE_DASH_SUPPORT
if (tp->DASH) { if (tp->DASH) {
struct net_device *dev = tp->dev; struct net_device *dev = tp->dev;
@ -15101,6 +15320,8 @@ static irqreturn_t rtl8125_interrupt_msix(int irq, void *dev_instance)
printk(KERN_INFO "%s: interrupt message id %d in poll_msix\n", printk(KERN_INFO "%s: interrupt message id %d in poll_msix\n",
dev->name, message_id); dev->name, message_id);
#else #else
rtl8125_tx_interrupt_with_vector(tp, message_id, ~(u32)0);
if (message_id < tp->num_rx_rings) { if (message_id < tp->num_rx_rings) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[message_id], &budget); rtl8125_rx_interrupt(dev, tp, &tp->rx_ring[message_id], &budget);
@ -15109,8 +15330,6 @@ static irqreturn_t rtl8125_interrupt_msix(int irq, void *dev_instance)
#endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) #endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
} }
rtl8125_tx_interrupt_with_vector(tp, message_id, ~(u32)0);
rtl8125_enable_hw_interrupt_v2(tp, message_id); rtl8125_enable_hw_interrupt_v2(tp, message_id);
#endif #endif

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8168 is the Linux device driver released for Realtek Gigabit Ethernet # r8168 is the Linux device driver released for Realtek Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -5,7 +5,7 @@
# r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet # r8125 is the Linux device driver released for Realtek 2.5Gigabit Ethernet
# controllers with PCI-Express interface. # controllers with PCI-Express interface.
# #
# Copyright(c) 2021 Realtek Semiconductor Corp. All rights reserved. # Copyright(c) 2022 Realtek Semiconductor Corp. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free # under the terms of the GNU General Public License as published by the Free

View File

@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ncurses PKG_NAME:=ncurses
PKG_VERSION:=6.2 PKG_VERSION:=6.3
PKG_RELEASE:=2 PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME) PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
PKG_HASH:=30306e0c76e0f9f1f0de987cf1c82a5c21e1ce6568b9227f7da5b71cbea86c9d PKG_HASH:=97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=README PKG_LICENSE_FILES:=README
@ -128,6 +128,8 @@ ifneq ($(HOST_OS),FreeBSD)
r/rxvt-unicode \ r/rxvt-unicode \
s/screen \ s/screen \
s/screen-256color \ s/screen-256color \
t/tmux \
t/tmux-256color \
v/vt100 \ v/vt100 \
v/vt102 \ v/vt102 \
x/xterm \ x/xterm \

View File

@ -1,6 +1,6 @@
--- a/misc/terminfo.src --- a/misc/terminfo.src
+++ b/misc/terminfo.src +++ b/misc/terminfo.src
@@ -6145,6 +6145,172 @@ rxvt-cygwin-native|rxvt terminal emulato @@ -6616,6 +6616,172 @@ rxvt-cygwin-native|rxvt terminal emulato
rxvt-16color|rxvt with 16 colors like aixterm, rxvt-16color|rxvt with 16 colors like aixterm,
ncv#32, use=ibm+16color, use=rxvt, ncv#32, use=ibm+16color, use=rxvt,

View File

@ -1,22 +1,22 @@
--- a/misc/terminfo.src --- a/misc/terminfo.src
+++ b/misc/terminfo.src +++ b/misc/terminfo.src
@@ -4513,6 +4513,7 @@ xterm-xfree86|xterm terminal emulator (X @@ -4815,6 +4815,7 @@ xterm+nofkeys|building block for xterm f
# This version reflects the current xterm features. # This version reflects the current xterm features.
xterm-new|modern xterm terminal emulator, xterm-new|modern xterm terminal emulator,
npc, npc,
+ kbs=\177, + kbs=\177,
kcbt=\E[Z, kent=\EOM, use=ecma+index, use=ansi+rep, kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
use=ecma+strikeout, use=xterm+keypad, use=vt420+lrmm, use=ansi+rep, use=ecma+strikeout, use=xterm+pcfkeys,
use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux, use=xterm+nofkeys,
@@ -5943,6 +5944,7 @@ mlterm-256color|mlterm 3.0 with xterm 25 @@ -6416,6 +6417,7 @@ mlterm-256color|mlterm 3.0 with xterm 25
rxvt-basic|rxvt terminal base (X Window System), rxvt-basic|rxvt terminal base (X Window System),
OTbs, am, bce, eo, mir, msgr, xenl, xon, XT, OTbs, am, bce, eo, mir, msgr, xenl, xon, XT,
cols#80, it#8, lines#24, cols#80, it#8, lines#24,
+ kbs=\177, + kbs=\177,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
@@ -5953,7 +5955,7 @@ rxvt-basic|rxvt terminal base (X Window @@ -6425,7 +6427,7 @@ rxvt-basic|rxvt terminal base (X Window
enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
ind=\n, is1=\E[?47l\E=\E[?1l, ind=\n, is1=\E[?47l\E=\E[?1l,
@ -25,7 +25,7 @@
kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
rmul=\E[24m, rmul=\E[24m,
@@ -7454,6 +7456,7 @@ dumb-emacs-ansi|Emacs dumb terminal with @@ -8060,6 +8062,7 @@ dumb-emacs-ansi|Emacs dumb terminal with
screen|VT 100/ANSI X3.64 virtual terminal, screen|VT 100/ANSI X3.64 virtual terminal,
OTbs, OTpt, am, km, mir, msgr, xenl, G0, OTbs, OTpt, am, km, mir, msgr, xenl, G0,
colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
@ -33,16 +33,16 @@
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
yzz{{||}}~~, yzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
@@ -7465,7 +7468,7 @@ screen|VT 100/ANSI X3.64 virtual termina @@ -8071,7 +8074,7 @@ screen|VT 100/ANSI X3.64 virtual termina
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
- ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z, - ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z,
+ ind=\n, indn=\E[%p1%dS, is2=\E)0, kcbt=\E[Z, + ind=\n, indn=\E[%p1%dS, is2=\E)0, kcbt=\E[Z,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
@@ -7594,6 +7597,7 @@ screen.xterm-r6|screen customized for X1 @@ -8199,6 +8202,7 @@ screen.xterm-r6|screen customized for X1
# on Solaris because Sun's curses implementation gets confused. # on Solaris because Sun's curses implementation gets confused.
screen.teraterm|disable ncv in teraterm, screen.teraterm|disable ncv in teraterm,
ncv#127, ncv#127,

View File

@ -15,7 +15,7 @@ Subject: [PATCH] ncurses 5.9 - patch 20141206
--- a/ncurses/base/MKlib_gen.sh --- a/ncurses/base/MKlib_gen.sh
+++ b/ncurses/base/MKlib_gen.sh +++ b/ncurses/base/MKlib_gen.sh
@@ -502,11 +502,22 @@ sed -n -f $ED1 \ @@ -511,11 +511,22 @@ sed -n -f $ED1 \
-e 's/gen_$//' \ -e 's/gen_$//' \
-e 's/ / /g' >>$TMP -e 's/ / /g' >>$TMP
@ -39,6 +39,6 @@ Subject: [PATCH] ncurses 5.9 - patch 20141206
- -e 's/^ //' \ - -e 's/^ //' \
- -e 's/_Bool/NCURSES_BOOL/g' \ - -e 's/_Bool/NCURSES_BOOL/g' \
+| sed -f $ED1 \ +| sed -f $ED1 \
| $AWK -f $AW2 \ | "$AWK" -f $AW2 \
| sed -f $ED3 \ | sed -f $ED3 \
| sed \ | sed \

View File

@ -1,22 +1,22 @@
--- a/aclocal.m4 --- a/aclocal.m4
+++ b/aclocal.m4 +++ b/aclocal.m4
@@ -454,7 +454,7 @@ AC_REQUIRE([CF_PROG_AR]) @@ -505,7 +505,7 @@ AC_CACHE_CHECK(for options to update arc
;;
(*)
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvD -curv curv -crv crv -cqv cqv -rv rv
do
AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ # check if $ARFLAGS already contains this choice
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvD -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice
--- a/configure --- a/configure
+++ b/configure +++ b/configure
@@ -4751,7 +4751,7 @@ if test "${cf_cv_ar_flags+set}" = set; t @@ -5072,7 +5072,7 @@ else
else ;;
(*)
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvD -curv curv -crv crv -cqv cqv -rv rv
do
cf_cv_ar_flags=unknown # check if $ARFLAGS already contains this choice
- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvD -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice

View File

@ -1,6 +1,6 @@
--- a/misc/terminfo.src --- a/misc/terminfo.src
+++ b/misc/terminfo.src +++ b/misc/terminfo.src
@@ -5802,12 +5802,11 @@ konsole-xf3x|KDE console window with key @@ -6240,12 +6240,11 @@ konsole-xf3x|KDE console window with key
# The value for kbs (see konsole-vt100) reflects local customization rather # The value for kbs (see konsole-vt100) reflects local customization rather
# than the settings used for XFree86 xterm. # than the settings used for XFree86 xterm.
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm, konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,

View File

@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
#include <linux/personality.h> #include <linux/personality.h>
#include <linux/preempt.h> #include <linux/preempt.h>
#include <linux/printk.h> #include <linux/printk.h>
@@ -137,6 +138,10 @@ static int c_show(struct seq_file *m, vo @@ -140,6 +141,10 @@ static int c_show(struct seq_file *m, vo
{ {
int i, j; int i, j;
bool compat = personality(current->personality) == PER_LINUX32; bool compat = personality(current->personality) == PER_LINUX32;
@ -29,7 +29,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
for_each_online_cpu(i) { for_each_online_cpu(i) {
struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i); struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i);
@@ -197,6 +202,26 @@ static int c_show(struct seq_file *m, vo @@ -200,6 +205,26 @@ static int c_show(struct seq_file *m, vo
seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr)); seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr));
} }

View File

@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
gpiod_err(desc, gpiod_err(desc,
"%s: tried to set a GPIO tied to an IRQ as output\n", "%s: tried to set a GPIO tied to an IRQ as output\n",
__func__); __func__);
@@ -3250,8 +3252,8 @@ int gpiochip_lock_as_irq(struct gpio_chi @@ -3260,8 +3262,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
} }
/* To be valid for IRQ the line needs to be input or open drain */ /* To be valid for IRQ the line needs to be input or open drain */

View File

@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -509,8 +509,8 @@ @@ -510,8 +510,8 @@
msi-controller; msi-controller;
msi-parent = <&pcie0>; msi-parent = <&pcie0>;

View File

@ -13,7 +13,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -560,6 +560,7 @@ @@ -561,6 +561,7 @@
&dsi1 { &dsi1 {
interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -17,7 +17,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -308,6 +308,14 @@ @@ -309,6 +309,14 @@
#reset-cells = <1>; #reset-cells = <1>;
}; };
@ -32,7 +32,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
hdmi0: hdmi@7ef00700 { hdmi0: hdmi@7ef00700 {
compatible = "brcm,bcm2711-hdmi0"; compatible = "brcm,bcm2711-hdmi0";
reg = <0x7ef00700 0x300>, reg = <0x7ef00700 0x300>,
@@ -336,6 +344,11 @@ @@ -337,6 +345,11 @@
<&clk_27MHz>; <&clk_27MHz>;
clock-names = "hdmi", "bvb", "audio", "cec"; clock-names = "hdmi", "bvb", "audio", "cec";
resets = <&dvp 0>; resets = <&dvp 0>;
@ -44,7 +44,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
ddc = <&ddc0>; ddc = <&ddc0>;
dmas = <&dma 10>; dmas = <&dma 10>;
dma-names = "audio-rx"; dma-names = "audio-rx";
@@ -380,6 +393,11 @@ @@ -381,6 +394,11 @@
<&dvp 0>, <&dvp 0>,
<&clk_27MHz>; <&clk_27MHz>;
resets = <&dvp 1>; resets = <&dvp 1>;

View File

@ -12,7 +12,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -314,6 +314,7 @@ @@ -315,6 +315,7 @@
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <1>; #interrupt-cells = <1>;

View File

@ -12,7 +12,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -353,7 +353,6 @@ @@ -354,7 +354,6 @@
ddc = <&ddc0>; ddc = <&ddc0>;
dmas = <&dma 10>; dmas = <&dma 10>;
dma-names = "audio-rx"; dma-names = "audio-rx";
@ -20,7 +20,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
status = "disabled"; status = "disabled";
}; };
@@ -401,7 +400,6 @@ @@ -402,7 +401,6 @@
"wakeup", "hpd-connected", "hpd-removed"; "wakeup", "hpd-connected", "hpd-removed";
dmas = <&dma 17>; dmas = <&dma 17>;
dma-names = "audio-rx"; dma-names = "audio-rx";

View File

@ -21,7 +21,7 @@ Signed-off-by: Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -300,6 +300,14 @@ @@ -301,6 +301,14 @@
status = "disabled"; status = "disabled";
}; };

View File

@ -34,7 +34,7 @@ Signed-off-by: Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com>
maxItems: 1 maxItems: 1
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -301,7 +301,7 @@ @@ -302,7 +302,7 @@
}; };
vec: vec@7ec13000 { vec: vec@7ec13000 {

View File

@ -15,7 +15,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -359,7 +359,7 @@ @@ -360,7 +360,7 @@
interrupt-names = "cec-tx", "cec-rx", "cec-low", interrupt-names = "cec-tx", "cec-rx", "cec-low",
"wakeup", "hpd-connected", "hpd-removed"; "wakeup", "hpd-connected", "hpd-removed";
ddc = <&ddc0>; ddc = <&ddc0>;
@ -24,7 +24,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
dma-names = "audio-rx"; dma-names = "audio-rx";
status = "disabled"; status = "disabled";
}; };
@@ -406,7 +406,7 @@ @@ -407,7 +407,7 @@
<9>, <10>, <11>; <9>, <10>, <11>;
interrupt-names = "cec-tx", "cec-rx", "cec-low", interrupt-names = "cec-tx", "cec-rx", "cec-low",
"wakeup", "hpd-connected", "hpd-removed"; "wakeup", "hpd-connected", "hpd-removed";

View File

@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/arch/arm/boot/dts/bcm2711.dtsi --- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -304,7 +304,7 @@ @@ -305,7 +305,7 @@
compatible = "brcm,bcm2711-vec"; compatible = "brcm,bcm2711-vec";
reg = <0x7ec13000 0x1000>; reg = <0x7ec13000 0x1000>;
clocks = <&clocks BCM2835_CLOCK_VEC>; clocks = <&clocks BCM2835_CLOCK_VEC>;
@ -23,7 +23,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
status = "disabled"; status = "disabled";
}; };
@@ -1114,7 +1114,3 @@ @@ -1115,7 +1115,3 @@
&usb { &usb {
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
}; };

View File

@ -65,7 +65,7 @@
mtk_flow_get_dsa_port(struct net_device **dev) mtk_flow_get_dsa_port(struct net_device **dev)
{ {
#if IS_ENABLED(CONFIG_NET_DSA) #if IS_ENABLED(CONFIG_NET_DSA)
@@ -254,6 +291,9 @@ mtk_flow_offload_replace(struct mtk_eth @@ -251,6 +288,9 @@ mtk_flow_offload_replace(struct mtk_eth
case FLOW_DISSECTOR_KEY_IPV4_ADDRS: case FLOW_DISSECTOR_KEY_IPV4_ADDRS:
offload_type = MTK_PPE_PKT_TYPE_IPV4_HNAPT; offload_type = MTK_PPE_PKT_TYPE_IPV4_HNAPT;
break; break;
@ -75,7 +75,7 @@
default: default:
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
@@ -289,6 +329,17 @@ mtk_flow_offload_replace(struct mtk_eth @@ -286,6 +326,17 @@ mtk_flow_offload_replace(struct mtk_eth
mtk_flow_set_ipv4_addr(&foe, &data, false); mtk_flow_set_ipv4_addr(&foe, &data, false);
} }
@ -93,7 +93,7 @@
flow_action_for_each(i, act, &rule->action) { flow_action_for_each(i, act, &rule->action) {
if (act->id != FLOW_ACTION_MANGLE) if (act->id != FLOW_ACTION_MANGLE)
continue; continue;
@@ -301,6 +352,9 @@ mtk_flow_offload_replace(struct mtk_eth @@ -289,6 +349,9 @@ mtk_flow_offload_replace(struct mtk_eth
case FLOW_ACT_MANGLE_HDR_TYPE_IP4: case FLOW_ACT_MANGLE_HDR_TYPE_IP4:
err = mtk_flow_mangle_ipv4(act, &data); err = mtk_flow_mangle_ipv4(act, &data);
break; break;

View File

@ -22,11 +22,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
net/dsa/switch.c | 39 ++++++++++++++++++++++++++------------- net/dsa/switch.c | 39 ++++++++++++++++++++++++++-------------
1 file changed, 26 insertions(+), 13 deletions(-) 1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/net/dsa/switch.c b/net/dsa/switch.c
index a44035872cff..659fd979cc0a 100644
--- a/net/dsa/switch.c --- a/net/dsa/switch.c
+++ b/net/dsa/switch.c +++ b/net/dsa/switch.c
@@ -104,23 +104,12 @@ static int dsa_switch_bridge_join(struct dsa_switch *ds, @@ -104,23 +104,12 @@ static int dsa_switch_bridge_join(struct
return 0; return 0;
} }
@ -52,7 +50,7 @@ index a44035872cff..659fd979cc0a 100644
/* If the bridge was vlan_filtering, the bridge core doesn't trigger an /* If the bridge was vlan_filtering, the bridge core doesn't trigger an
* event for changing vlan_filtering setting upon slave ports leaving * event for changing vlan_filtering setting upon slave ports leaving
* it. That is a good thing, because that lets us handle it and also * it. That is a good thing, because that lets us handle it and also
@@ -153,6 +142,30 @@ static int dsa_switch_bridge_leave(struct dsa_switch *ds, @@ -153,6 +142,30 @@ static int dsa_switch_bridge_leave(struc
if (err && err != EOPNOTSUPP) if (err && err != EOPNOTSUPP)
return err; return err;
} }
@ -83,6 +81,3 @@ index a44035872cff..659fd979cc0a 100644
return 0; return 0;
} }
--
2.34.1

View File

@ -39,11 +39,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
net/dsa/switch.c | 8 +++++--- net/dsa/switch.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-) 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/net/dsa/switch.c b/net/dsa/switch.c
index 659fd979cc0a..2fe2f328d2d2 100644
--- a/net/dsa/switch.c --- a/net/dsa/switch.c
+++ b/net/dsa/switch.c +++ b/net/dsa/switch.c
@@ -162,9 +162,11 @@ static int dsa_switch_bridge_leave(struct dsa_switch *ds, @@ -162,9 +162,11 @@ static int dsa_switch_bridge_leave(struc
info->sw_index, info->port, info->sw_index, info->port,
info->br); info->br);
@ -58,6 +56,3 @@ index 659fd979cc0a..2fe2f328d2d2 100644
return 0; return 0;
} }
--
2.34.1

View File

@ -3338,6 +3338,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MICROCHIP_T1_PHY is not set # CONFIG_MICROCHIP_T1_PHY is not set
# CONFIG_MICROSEMI_PHY is not set # CONFIG_MICROSEMI_PHY is not set
# CONFIG_MIGRATION is not set # CONFIG_MIGRATION is not set
CONFIG_HARDEN_BRANCH_HISTORY=y
CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y
CONFIG_MII=y CONFIG_MII=y
# CONFIG_MIKROTIK is not set # CONFIG_MIKROTIK is not set
# CONFIG_MIKROTIK_RB532 is not set # CONFIG_MIKROTIK_RB532 is not set

View File

@ -32,6 +32,15 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
lib1funcs.o ashldi3.o bswapsdi2.o \ lib1funcs.o ashldi3.o bswapsdi2.o \
--- a/arch/arm/kernel/vmlinux.lds.S --- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S
@@ -75,7 +75,7 @@ SECTIONS
. = ALIGN(4);
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
__start___ex_table = .;
- ARM_MMU_KEEP(*(__ex_table))
+ KEEP(*(__ex_table))
__stop___ex_table = .;
}
@@ -100,24 +100,24 @@ SECTIONS @@ -100,24 +100,24 @@ SECTIONS
} }
.init.arch.info : { .init.arch.info : {
@ -63,14 +72,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/arm/include/asm/vmlinux.lds.h --- a/arch/arm/include/asm/vmlinux.lds.h
+++ b/arch/arm/include/asm/vmlinux.lds.h +++ b/arch/arm/include/asm/vmlinux.lds.h
@@ -23,19 +23,19 @@ @@ -42,13 +42,13 @@
#define ARM_MMU_DISCARD(x)
#else
#define ARM_MMU_KEEP(x)
-#define ARM_MMU_DISCARD(x) x
+#define ARM_MMU_DISCARD(x) KEEP(x)
#endif
#define PROC_INFO \ #define PROC_INFO \
. = ALIGN(4); \ . = ALIGN(4); \
__proc_info_begin = .; \ __proc_info_begin = .; \
@ -86,7 +88,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
__idmap_text_end = .; \ __idmap_text_end = .; \
#define ARM_DISCARD \ #define ARM_DISCARD \
@@ -96,12 +96,12 @@ @@ -109,12 +109,12 @@
. = ALIGN(8); \ . = ALIGN(8); \
.ARM.unwind_idx : { \ .ARM.unwind_idx : { \
__start_unwind_idx = .; \ __start_unwind_idx = .; \
@ -101,20 +103,21 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
__stop_unwind_tab = .; \ __stop_unwind_tab = .; \
} }
@@ -112,14 +112,14 @@ @@ -126,7 +126,7 @@
#define ARM_VECTORS \ __vectors_lma = .; \
__vectors_start = .; \ OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) { \
.vectors 0xffff0000 : AT(__vectors_start) { \ .vectors { \
- *(.vectors) \ - *(.vectors) \
+ KEEP(*(.vectors)) \ + KEEP(*(.vectors)) \
} \ } \
. = __vectors_start + SIZEOF(.vectors); \ .vectors.bhb.loop8 { \
__vectors_end = .; \ *(.vectors.bhb.loop8) \
@@ -144,7 +144,7 @@
\ \
__stubs_start = .; \ __stubs_lma = .; \
.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { \ .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) { \
- *(.stubs) \ - *(.stubs) \
+ KEEP(*(.stubs)) \ + KEEP(*(.stubs)) \
} \ } \
. = __stubs_start + SIZEOF(.stubs); \ ARM_LMA(__stubs, .stubs); \
__stubs_end = .; \ . = __stubs_lma + SIZEOF(.stubs); \

View File

@ -92,7 +92,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
bool bool
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -419,16 +419,16 @@ config BCH_CONST_T @@ -418,16 +418,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed # Textsearch support is select'ed if needed
# #
config TEXTSEARCH config TEXTSEARCH

View File

@ -11,7 +11,7 @@
that can be interpreted by the ASN.1 stream decoder and used to that can be interpreted by the ASN.1 stream decoder and used to
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -590,7 +590,7 @@ config LIBFDT @@ -589,7 +589,7 @@ config LIBFDT
bool bool
config OID_REGISTRY config OID_REGISTRY

View File

@ -92,7 +92,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
bool bool
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -439,16 +439,16 @@ config BCH_CONST_T @@ -438,16 +438,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed # Textsearch support is select'ed if needed
# #
config TEXTSEARCH config TEXTSEARCH

View File

@ -92,7 +92,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
bool bool
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -402,16 +402,16 @@ config BCH_CONST_T @@ -401,16 +401,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed # Textsearch support is select'ed if needed
# #
config TEXTSEARCH config TEXTSEARCH

View File

@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/mips/Kconfig --- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig +++ b/arch/mips/Kconfig
@@ -1164,6 +1164,10 @@ config SYNC_R4K @@ -1162,6 +1162,10 @@ config SYNC_R4K
config MIPS_MACHINE config MIPS_MACHINE
def_bool n def_bool n

View File

@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
#define JFFS2_NODE_ACCURATE 0x2000 #define JFFS2_NODE_ACCURATE 0x2000
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -316,6 +316,12 @@ config ZSTD_DECOMPRESS @@ -315,6 +315,12 @@ config ZSTD_DECOMPRESS
source "lib/xz/Kconfig" source "lib/xz/Kconfig"

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
@@ -187,6 +187,9 @@ mtk_flow_offload_replace(struct mtk_eth @@ -224,6 +224,9 @@ mtk_flow_offload_replace(struct mtk_eth
int hash; int hash;
int i; int i;

View File

@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
#define JFFS2_NODE_ACCURATE 0x2000 #define JFFS2_NODE_ACCURATE 0x2000
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -336,6 +336,12 @@ config ZSTD_DECOMPRESS @@ -335,6 +335,12 @@ config ZSTD_DECOMPRESS
source "lib/xz/Kconfig" source "lib/xz/Kconfig"

View File

@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
#define JFFS2_NODE_ACCURATE 0x2000 #define JFFS2_NODE_ACCURATE 0x2000
--- a/lib/Kconfig --- a/lib/Kconfig
+++ b/lib/Kconfig +++ b/lib/Kconfig
@@ -303,6 +303,12 @@ config ZSTD_DECOMPRESS @@ -302,6 +302,12 @@ config ZSTD_DECOMPRESS
source "lib/xz/Kconfig" source "lib/xz/Kconfig"