Loading drivers/net/ethernet/msm/emac/emac.h +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,7 @@ struct emac_hw { u32 rtc_ref_clkrate; spinlock_t ptp_lock; u32 irq_mod; u32 preamble; unsigned long flags; }; Loading Loading @@ -284,6 +285,9 @@ struct emac_hw { #define EMAC_DEF_TX_DESCS 512 #define EMAC_DEF_RX_DESCS 256 #define EMAC_DEF_RX_IRQ_MOD 250 #define EMAC_DEF_TX_IRQ_MOD 250 #define EMAC_WATCHDOG_TIME (5 * HZ) /* RRD */ Loading drivers/net/ethernet/msm/emac/emac_ethtool.c +3 −5 Original line number Diff line number Diff line Loading @@ -368,14 +368,11 @@ static int emac_get_intr_coalesce(struct net_device *netdev, { struct emac_adapter *adpt = netdev_priv(netdev); struct emac_hw *hw = &adpt->hw; u32 val; val = emac_reg_r32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT); /* irq moderator timers have resolution of 2us */ ec->tx_coalesce_usecs = ((val & IRQ_MODERATOR_INIT_BMSK) >> ec->tx_coalesce_usecs = ((hw->irq_mod & IRQ_MODERATOR_INIT_BMSK) >> IRQ_MODERATOR_INIT_SHFT) * 2; ec->rx_coalesce_usecs = ((val & IRQ_MODERATOR2_INIT_BMSK) >> ec->rx_coalesce_usecs = ((hw->irq_mod & IRQ_MODERATOR2_INIT_BMSK) >> IRQ_MODERATOR2_INIT_SHFT) * 2; return 0; Loading @@ -395,6 +392,7 @@ static int emac_set_intr_coalesce(struct net_device *netdev, IRQ_MODERATOR_INIT_BMSK; emac_reg_w32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT, val); hw->irq_mod = val; return 0; } Loading drivers/net/ethernet/msm/emac/emac_hw.c +1 −0 Original line number Diff line number Diff line Loading @@ -1193,6 +1193,7 @@ void emac_hw_start_mac(struct emac_hw *hw) /* enable interrupt read clear, low power sleep mode and the irq moderators */ emac_reg_w32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT, hw->irq_mod); emac_reg_w32(hw, EMAC, EMAC_DMA_MAS_CTRL, (INT_RD_CLR_EN | LPW_MODE | IRQ_MODERATOR_EN | IRQ_MODERATOR2_EN)); Loading drivers/net/ethernet/msm/emac/emac_main.c +4 −0 Original line number Diff line number Diff line Loading @@ -2067,6 +2067,10 @@ static void emac_init_adapter(struct emac_adapter *adpt) memset(hw->rss_idt, 0x0, sizeof(hw->rss_idt)); memset(hw->rss_key, 0x0, sizeof(hw->rss_key)); /* irq moderator */ hw->irq_mod = ((EMAC_DEF_RX_IRQ_MOD / 2) << IRQ_MODERATOR2_INIT_SHFT) | ((EMAC_DEF_TX_IRQ_MOD / 2) << IRQ_MODERATOR_INIT_SHFT); /* others */ hw->preamble = EMAC_PREAMBLE_DEF; adpt->wol = EMAC_WOL_MAGIC | EMAC_WOL_PHY; Loading Loading
drivers/net/ethernet/msm/emac/emac.h +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,7 @@ struct emac_hw { u32 rtc_ref_clkrate; spinlock_t ptp_lock; u32 irq_mod; u32 preamble; unsigned long flags; }; Loading Loading @@ -284,6 +285,9 @@ struct emac_hw { #define EMAC_DEF_TX_DESCS 512 #define EMAC_DEF_RX_DESCS 256 #define EMAC_DEF_RX_IRQ_MOD 250 #define EMAC_DEF_TX_IRQ_MOD 250 #define EMAC_WATCHDOG_TIME (5 * HZ) /* RRD */ Loading
drivers/net/ethernet/msm/emac/emac_ethtool.c +3 −5 Original line number Diff line number Diff line Loading @@ -368,14 +368,11 @@ static int emac_get_intr_coalesce(struct net_device *netdev, { struct emac_adapter *adpt = netdev_priv(netdev); struct emac_hw *hw = &adpt->hw; u32 val; val = emac_reg_r32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT); /* irq moderator timers have resolution of 2us */ ec->tx_coalesce_usecs = ((val & IRQ_MODERATOR_INIT_BMSK) >> ec->tx_coalesce_usecs = ((hw->irq_mod & IRQ_MODERATOR_INIT_BMSK) >> IRQ_MODERATOR_INIT_SHFT) * 2; ec->rx_coalesce_usecs = ((val & IRQ_MODERATOR2_INIT_BMSK) >> ec->rx_coalesce_usecs = ((hw->irq_mod & IRQ_MODERATOR2_INIT_BMSK) >> IRQ_MODERATOR2_INIT_SHFT) * 2; return 0; Loading @@ -395,6 +392,7 @@ static int emac_set_intr_coalesce(struct net_device *netdev, IRQ_MODERATOR_INIT_BMSK; emac_reg_w32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT, val); hw->irq_mod = val; return 0; } Loading
drivers/net/ethernet/msm/emac/emac_hw.c +1 −0 Original line number Diff line number Diff line Loading @@ -1193,6 +1193,7 @@ void emac_hw_start_mac(struct emac_hw *hw) /* enable interrupt read clear, low power sleep mode and the irq moderators */ emac_reg_w32(hw, EMAC, EMAC_IRQ_MOD_TIM_INIT, hw->irq_mod); emac_reg_w32(hw, EMAC, EMAC_DMA_MAS_CTRL, (INT_RD_CLR_EN | LPW_MODE | IRQ_MODERATOR_EN | IRQ_MODERATOR2_EN)); Loading
drivers/net/ethernet/msm/emac/emac_main.c +4 −0 Original line number Diff line number Diff line Loading @@ -2067,6 +2067,10 @@ static void emac_init_adapter(struct emac_adapter *adpt) memset(hw->rss_idt, 0x0, sizeof(hw->rss_idt)); memset(hw->rss_key, 0x0, sizeof(hw->rss_key)); /* irq moderator */ hw->irq_mod = ((EMAC_DEF_RX_IRQ_MOD / 2) << IRQ_MODERATOR2_INIT_SHFT) | ((EMAC_DEF_TX_IRQ_MOD / 2) << IRQ_MODERATOR_INIT_SHFT); /* others */ hw->preamble = EMAC_PREAMBLE_DEF; adpt->wol = EMAC_WOL_MAGIC | EMAC_WOL_PHY; Loading