diff --git a/Readme.md b/Readme.md index c4eccff9049d..1a6e666b4124 100644 --- a/Readme.md +++ b/Readme.md @@ -1,7 +1,7 @@ # Toshiba Electronic Devices & Storage Corporation TC956X PCIe Ethernet Host Driver -Release Date: 15 Jun 2022 +Release Date: 08 Aug 2022 -Release Version: V_01-00-52 : Limited-tested version +Release Version: V_01-00-53 : Limited-tested version TC956X PCIe EMAC driver is based on "Fedora 30, kernel-5.4.19". @@ -530,3 +530,7 @@ TC956X PCIe EMAC driver is based on "Fedora 30, kernel-5.4.19". ## TC956X_Host_Driver_20220615_V_01-00-52: 1. Added debugfs support for module specific register dump. + +## TC956X_Host_Driver_20220808_V_01-00-53: +1. For IPA offload path, disable RBU interrupt when RBU interrupt occurs. + Interrupt should be enabled back in IPA SW. diff --git a/tc956x_pci.c b/tc956x_pci.c index ca1481db19ae..79686f266871 100644 --- a/tc956x_pci.c +++ b/tc956x_pci.c @@ -165,6 +165,8 @@ * VERSION : 01-00-51 * 15 Jun 2022 : 1. Version update * VERSION : 01-00-52 + * 08 Aug 2022 : 1. Version update + * VERSION : 01-00-53 */ #include @@ -231,7 +233,7 @@ unsigned int mac1_en_lp_pause_frame_cnt = DISABLE; unsigned int mac_power_save_at_link_down = DISABLE; -static const struct tc956x_version tc956x_drv_version = {0, 1, 0, 0, 5, 2}; +static const struct tc956x_version tc956x_drv_version = {0, 1, 0, 0, 5, 3}; static int tc956xmac_pm_usage_counter; /* Device Usage Counter */ struct mutex tc956x_pm_suspend_lock; /* This mutex is shared between all available EMAC ports. */ diff --git a/tc956xmac.h b/tc956xmac.h index 0a4bf7e70bf0..00a6fa21f33a 100644 --- a/tc956xmac.h +++ b/tc956xmac.h @@ -155,6 +155,8 @@ * 15 Jun 2022 : 1. Added debugfs support for module specific register dump * 2. Version update. * VERSION : 01-00-52 + * 08 Aug 2022 : 1. Version update + * VERSION : 01-00-53 */ #ifndef __TC956XMAC_H__ @@ -210,7 +212,7 @@ #define IRQ_DEV_NAME(x) (((x) == RM_PF0_ID) ? ("eth0") : ("eth1")) #define WOL_IRQ_DEV_NAME(x) (((x) == RM_PF0_ID) ? ("eth0_wol") : ("eth1_wol")) -#define DRV_MODULE_VERSION "V_01-00-52" +#define DRV_MODULE_VERSION "V_01-00-53" #define TC956X_FW_MAX_SIZE (64*1024) #define ATR_AXI4_SLV_BASE 0x0800 diff --git a/tc956xmac_main.c b/tc956xmac_main.c index 3f4a1da02722..a660ae998ae6 100644 --- a/tc956xmac_main.c +++ b/tc956xmac_main.c @@ -129,6 +129,8 @@ * VERSION : 01-00-51 * 15 Jun 2022 : 1. Added debugfs support for module specific register dump * VERSION : 01-00-52 + * 08 Aug 2022 : 1. Disable RBU interrupt on RBU interrupt occurance. IPA SW should enable it back. + * VERSION : 01-00-53 */ #include @@ -7445,7 +7447,7 @@ static irqreturn_t tc956xmac_interrupt(int irq, void *dev_id) u32 queues_count; u32 queue; bool xmac; - u32 val = 0; + u32 val = 0, value = 0; uint32_t uiIntSts, uiIntclr = 0; xmac = priv->plat->has_gmac4 || priv->plat->has_xgmac; @@ -7519,6 +7521,15 @@ static irqreturn_t tc956xmac_interrupt(int irq, void *dev_id) uiIntclr |= XGMAC_AIS; } writel(uiIntclr, (priv->ioaddr + XGMAC_DMA_CH_STATUS(queue))); + + /* Disable RBU interrupt on RBU interrupt occurance. IPA SW should enable it back */ + value = readl(priv->ioaddr + XGMAC_DMA_CH_INT_EN(queue)); + if ( ((uiIntclr & XGMAC_RBU) == XGMAC_RBU) && (value & XGMAC_RBUE)) { + value = readl(priv->ioaddr + XGMAC_DMA_CH_INT_EN(queue)); + value &= ~XGMAC_RBUE; + writel(value, priv->ioaddr + XGMAC_DMA_CH_INT_EN(queue)); + printk("***RBU INT disabled***XGMAC_DMA_CH_INT_EN[%d]***** :0x%x\n", queue, readl(priv->ioaddr + XGMAC_DMA_CH_INT_EN(queue))); + } } }