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

Commit 7ff65cde authored by David S. Miller's avatar David S. Miller
Browse files


Jett Kirsher says:

====================
This series contains updates to e1000e and ixgbe.
 ...
Alexander Duyck (5):
  ixgbe: Simplify logic for getting traffic class from user priority
  ixgbe: Cleanup unpacking code for DCB
  ixgbe: Populate the prio_tc_map in ixgbe_setup_tc
  ixgbe: Add function for obtaining FCoE TC based on FCoE user priority
  ixgbe: Merge FCoE set_num and cache_ring calls into RSS/DCB config
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents ac1ae5f3 d411a936
Loading
Loading
Loading
Loading
+8 −6
Original line number Original line Diff line number Diff line
@@ -1677,16 +1677,18 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
			e_dbg("ANYSTATE  -> DOWN\n");
			e_dbg("ANYSTATE  -> DOWN\n");
		} else {
		} else {
			/*
			/*
			 * Check several times, if Sync and Config
			 * Check several times, if SYNCH bit and CONFIG
			 * both are consistently 1 then simply ignore
			 * bit both are consistently 1 then simply ignore
			 * the Invalid bit and restart Autoneg
			 * the IV bit and restart Autoneg
			 */
			 */
			for (i = 0; i < AN_RETRY_COUNT; i++) {
			for (i = 0; i < AN_RETRY_COUNT; i++) {
				udelay(10);
				udelay(10);
				rxcw = er32(RXCW);
				rxcw = er32(RXCW);
				if ((rxcw & E1000_RXCW_IV) &&
				if ((rxcw & E1000_RXCW_SYNCH) &&
				    !((rxcw & E1000_RXCW_SYNCH) &&
				    (rxcw & E1000_RXCW_C))
				      (rxcw & E1000_RXCW_C))) {
					continue;

				if (rxcw & E1000_RXCW_IV) {
					mac->serdes_has_link = false;
					mac->serdes_has_link = false;
					mac->serdes_link_state =
					mac->serdes_link_state =
					    e1000_serdes_link_down;
					    e1000_serdes_link_down;
+1 −0
Original line number Original line Diff line number Diff line
@@ -514,6 +514,7 @@ extern void e1000e_set_interrupt_capability(struct e1000_adapter *adapter);
extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter);
extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter);
extern void e1000e_get_hw_control(struct e1000_adapter *adapter);
extern void e1000e_get_hw_control(struct e1000_adapter *adapter);
extern void e1000e_release_hw_control(struct e1000_adapter *adapter);
extern void e1000e_release_hw_control(struct e1000_adapter *adapter);
extern void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr);


extern unsigned int copybreak;
extern unsigned int copybreak;


+2 −3
Original line number Original line Diff line number Diff line
@@ -1897,7 +1897,6 @@ static int e1000_set_coalesce(struct net_device *netdev,
			      struct ethtool_coalesce *ec)
			      struct ethtool_coalesce *ec)
{
{
	struct e1000_adapter *adapter = netdev_priv(netdev);
	struct e1000_adapter *adapter = netdev_priv(netdev);
	struct e1000_hw *hw = &adapter->hw;


	if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) ||
	if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) ||
	    ((ec->rx_coalesce_usecs > 4) &&
	    ((ec->rx_coalesce_usecs > 4) &&
@@ -1916,9 +1915,9 @@ static int e1000_set_coalesce(struct net_device *netdev,
	}
	}


	if (adapter->itr_setting != 0)
	if (adapter->itr_setting != 0)
		ew32(ITR, 1000000000 / (adapter->itr * 256));
		e1000e_write_itr(adapter, adapter->itr);
	else
	else
		ew32(ITR, 0);
		e1000e_write_itr(adapter, 0);


	return 0;
	return 0;
}
}
+28 −4
Original line number Original line Diff line number Diff line
@@ -2473,6 +2473,30 @@ set_itr_now:
	}
	}
}
}


/**
 * e1000e_write_itr - write the ITR value to the appropriate registers
 * @adapter: address of board private structure
 * @itr: new ITR value to program
 *
 * e1000e_write_itr determines if the adapter is in MSI-X mode
 * and, if so, writes the EITR registers with the ITR value.
 * Otherwise, it writes the ITR value into the ITR register.
 **/
void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr)
{
	struct e1000_hw *hw = &adapter->hw;
	u32 new_itr = itr ? 1000000000 / (itr * 256) : 0;

	if (adapter->msix_entries) {
		int vector;

		for (vector = 0; vector < adapter->num_vectors; vector++)
			writel(new_itr, hw->hw_addr + E1000_EITR_82574(vector));
	} else {
		ew32(ITR, new_itr);
	}
}

/**
/**
 * e1000_alloc_queues - Allocate memory for all rings
 * e1000_alloc_queues - Allocate memory for all rings
 * @adapter: board private structure to initialize
 * @adapter: board private structure to initialize
@@ -3059,7 +3083,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
	/* irq moderation */
	/* irq moderation */
	ew32(RADV, adapter->rx_abs_int_delay);
	ew32(RADV, adapter->rx_abs_int_delay);
	if ((adapter->itr_setting != 0) && (adapter->itr != 0))
	if ((adapter->itr_setting != 0) && (adapter->itr != 0))
		ew32(ITR, 1000000000 / (adapter->itr * 256));
		e1000e_write_itr(adapter, adapter->itr);


	ctrl_ext = er32(CTRL_EXT);
	ctrl_ext = er32(CTRL_EXT);
	/* Auto-Mask interrupts upon ICR access */
	/* Auto-Mask interrupts upon ICR access */
@@ -3486,14 +3510,14 @@ void e1000e_reset(struct e1000_adapter *adapter)
				dev_info(&adapter->pdev->dev,
				dev_info(&adapter->pdev->dev,
					"Interrupt Throttle Rate turned off\n");
					"Interrupt Throttle Rate turned off\n");
				adapter->flags2 |= FLAG2_DISABLE_AIM;
				adapter->flags2 |= FLAG2_DISABLE_AIM;
				ew32(ITR, 0);
				e1000e_write_itr(adapter, 0);
			}
			}
		} else if (adapter->flags2 & FLAG2_DISABLE_AIM) {
		} else if (adapter->flags2 & FLAG2_DISABLE_AIM) {
			dev_info(&adapter->pdev->dev,
			dev_info(&adapter->pdev->dev,
				 "Interrupt Throttle Rate turned on\n");
				 "Interrupt Throttle Rate turned on\n");
			adapter->flags2 &= ~FLAG2_DISABLE_AIM;
			adapter->flags2 &= ~FLAG2_DISABLE_AIM;
			adapter->itr = 20000;
			adapter->itr = 20000;
			ew32(ITR, 1000000000 / (adapter->itr * 256));
			e1000e_write_itr(adapter, adapter->itr);
		}
		}
	}
	}


@@ -4576,7 +4600,7 @@ link_up:
			    adapter->gorc - adapter->gotc) / 10000;
			    adapter->gorc - adapter->gotc) / 10000;
		u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000;
		u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000;


		ew32(ITR, 1000000000 / (itr * 256));
		e1000e_write_itr(adapter, itr);
	}
	}


	/* Cause software interrupt to ensure Rx ring is cleaned */
	/* Cause software interrupt to ensure Rx ring is cleaned */
+1 −0
Original line number Original line Diff line number Diff line
@@ -707,6 +707,7 @@ extern u8 ixgbe_fcoe_setapp(struct ixgbe_adapter *adapter, u8 up);
extern int ixgbe_fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type);
extern int ixgbe_fcoe_get_wwn(struct net_device *netdev, u64 *wwn, int type);
extern int ixgbe_fcoe_get_hbainfo(struct net_device *netdev,
extern int ixgbe_fcoe_get_hbainfo(struct net_device *netdev,
				  struct netdev_fcoe_hbainfo *info);
				  struct netdev_fcoe_hbainfo *info);
extern u8 ixgbe_fcoe_get_tc(struct ixgbe_adapter *adapter);
#endif /* IXGBE_FCOE */
#endif /* IXGBE_FCOE */


static inline struct netdev_queue *txring_txq(const struct ixgbe_ring *ring)
static inline struct netdev_queue *txring_txq(const struct ixgbe_ring *ring)
Loading