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

Commit 2387e3b5 authored by David S. Miller's avatar David S. Miller
Browse files


Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates 2014-11-11

This series contains updates to i40e, i40evf and ixgbe.

Kamil updated the i40e and i40evf driver to poll the firmware slower
since we were polling faster than the firmware could respond.

Shannon updates i40e to add a check to keep the service_task from
running the periodic tasks more than once per second, while still
allowing quick action to service the events.

Jesse cleans up the throttle rate code by fixing the minimum interrupt
throttle rate and removing some unused defines.

Mitch makes the early init admin queue message receive code more robust
by handling messages in a loop and ignoring those that we are not
interested in.  This also gets rid of some scary log messages that
really do not indicate a problem.

Don provides several ixgbe patches, first fixes an issue with x540
completion timeout where on topologies including few levels of PCIe
switching for x540 can run into an unexpected completion error.  Cleans
up the functionality in ixgbe_ndo_set_vf_vlan() in preparation for
future work.  Adds support for x550 MAC's to the driver.

v2:
 - Remove code comment in patch 01 of the series, based on feedback from
   David Liaght
 - Updated the "goto" to "break" statements in patch 06 of the series,
   based on feedback from Sergei Shtylyov
 - Initialized the variable err due to the possibility of use before
   being assigned a value in patch 07 of the series
 - Added patch "ixgbe: add helper function for setting RSS key in
   preparation of X550" since it is needed for the addition of X550 MAC
   support
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 8bca81d9 d1b849b9
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -269,7 +269,8 @@ struct i40e_pf {
	u16 msg_enable;
	char misc_int_name[IFNAMSIZ + 9];
	u16 adminq_work_limit; /* num of admin receive queue desc to process */
	int service_timer_period;
	unsigned long service_timer_period;
	unsigned long service_timer_previous;
	struct timer_list service_timer;
	struct work_struct service_task;

+2 −4
Original line number Diff line number Diff line
@@ -853,7 +853,6 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
	 */
	if (!details->async && !details->postpone) {
		u32 total_delay = 0;
		u32 delay_len = 10;

		do {
			/* AQ designers suggest use of head for better
@@ -861,9 +860,8 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
			 */
			if (i40e_asq_done(hw))
				break;
			/* ugh! delay while spin_lock */
			udelay(delay_len);
			total_delay += delay_len;
			usleep_range(1000, 2000);
			total_delay++;
		} while (total_delay < hw->aq.asq_cmd_timeout);
	}

+1 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ static inline int i40e_aq_rc_to_posix(u16 aq_rc)

/* general information */
#define I40E_AQ_LARGE_BUF	512
#define I40E_ASQ_CMD_TIMEOUT	100000  /* usecs */
#define I40E_ASQ_CMD_TIMEOUT	100  /* msecs */

void i40e_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,
				       u16 opcode);
+4 −7
Original line number Diff line number Diff line
@@ -1575,11 +1575,9 @@ static int i40e_set_coalesce(struct net_device *netdev,
	} else if (ec->rx_coalesce_usecs == 0) {
		vsi->rx_itr_setting = ec->rx_coalesce_usecs;
		if (ec->use_adaptive_rx_coalesce)
			netif_info(pf, drv, netdev,
				   "Rx-secs=0, need to disable adaptive-Rx for a complete disable\n");
			netif_info(pf, drv, netdev, "rx-usecs=0, need to disable adaptive-rx for a complete disable\n");
	} else {
		netif_info(pf, drv, netdev,
			   "Invalid value, Rx-usecs range is 0, 8-8160\n");
		netif_info(pf, drv, netdev, "Invalid value, rx-usecs range is 0-8160\n");
		return -EINVAL;
	}

@@ -1589,11 +1587,10 @@ static int i40e_set_coalesce(struct net_device *netdev,
	} else if (ec->tx_coalesce_usecs == 0) {
		vsi->tx_itr_setting = ec->tx_coalesce_usecs;
		if (ec->use_adaptive_tx_coalesce)
			netif_info(pf, drv, netdev,
				   "Tx-secs=0, need to disable adaptive-Tx for a complete disable\n");
			netif_info(pf, drv, netdev, "tx-usecs=0, need to disable adaptive-tx for a complete disable\n");
	} else {
		netif_info(pf, drv, netdev,
			   "Invalid value, Tx-usecs range is 0, 8-8160\n");
			   "Invalid value, tx-usecs range is 0-8160\n");
		return -EINVAL;
	}

+10 −4
Original line number Diff line number Diff line
@@ -5449,7 +5449,7 @@ static void i40e_check_hang_subtask(struct i40e_pf *pf)
}

/**
 * i40e_watchdog_subtask - Check and bring link up
 * i40e_watchdog_subtask - periodic checks not using event driven response
 * @pf: board private structure
 **/
static void i40e_watchdog_subtask(struct i40e_pf *pf)
@@ -5461,6 +5461,15 @@ static void i40e_watchdog_subtask(struct i40e_pf *pf)
	    test_bit(__I40E_CONFIG_BUSY, &pf->state))
		return;

	/* make sure we don't do these things too often */
	if (time_before(jiffies, (pf->service_timer_previous +
				  pf->service_timer_period)))
		return;
	pf->service_timer_previous = jiffies;

	i40e_check_hang_subtask(pf);
	i40e_link_event(pf);

	/* Update the stats for active netdevs so the network stack
	 * can look at updated numbers whenever it cares to
	 */
@@ -6325,15 +6334,12 @@ static void i40e_service_task(struct work_struct *work)
	i40e_vc_process_vflr_event(pf);
	i40e_watchdog_subtask(pf);
	i40e_fdir_reinit_subtask(pf);
	i40e_check_hang_subtask(pf);
	i40e_sync_filters_subtask(pf);
#ifdef CONFIG_I40E_VXLAN
	i40e_sync_vxlan_filters_subtask(pf);
#endif
	i40e_clean_adminq_subtask(pf);

	i40e_link_event(pf);

	i40e_service_event_complete(pf);

	/* If the tasks have taken longer than one timer cycle or there
Loading