Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e62534d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: emac: Set default interrupt coalesce value"

parents 1bac567a 9066c1d4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ struct emac_hw {
	u32                     rtc_ref_clkrate;
	spinlock_t              ptp_lock;

	u32                 irq_mod;
	u32                 preamble;
	unsigned long       flags;
};
@@ -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 */
+3 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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;
}
+1 −0
Original line number Diff line number Diff line
@@ -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));
+4 −0
Original line number Diff line number Diff line
@@ -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;