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

Commit 35d499ee authored by David S. Miller's avatar David S. Miller
Browse files


Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates

This series contains updates to igb, ixgbe, ixgbevf, i40e and i40evf.

Anjali provides a i40e/i40evf patch to add Energy Efficient Ethernet
Low Power Idle stats and a fix for i40e to change the string
"Side Band" to "Sideband" for consistency.

Mitch provides 2 patches for i40evf to fix if the driver encounters
an error while communicating with the PF driver, do not shut down the
admin queue unconditionally.  Add an error message when the admin
queue message never completes and fix formatting on another message
that was unnecessarily wrapped.

Mark provides a ixgbe patch and five ixgbevf patches.  Fix a possible
infinite recursion when an adapter is removed and registers all read
as all one's in ixgbe_clear_vmdq_generic() and ixgbe_clear_rar_generic().
Converts macros to static inline functions to align kernel coding standard
and prepare for adding Live Error Recovery (LER) to ixgbevf.  Change the
ethtool register test to use the normal register accessor functions and
eliminate macors used for calling register test functions to make error
exits more clear.  Checks all register reads for adapter removal by checking
the status register after any register read that returns all F's since the
status register will never return 0xFFFFFFFF unless the adapter is removed.

Jacob implements SIOCGHWTSTAMP ioctl for igb which enables user processes
to read the current hardware stamp config settings non-destructively.

Todd adds the initial register read and write for surprise removal (LER)
for igb.

Christian Engelmayer fixes an igb memory leak in the igb_get_module_eeprom()
error handling path.

Ken Ichikawa provides a fix for igb, specifically for 82575 hardware to
specify -1 to the phc_index for ethtool's get_ts_info, otherwise a wrong
value will be set to the phc_index.

Christopher Paasch fixes a null pointer dereference in igb and makes sure
to unset the HAS_MSIX flag when the driver falls back to MSI only.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 0b8c7f6f b709323d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -114,6 +114,11 @@ static struct i40e_stats i40e_gstrings_stats[] = {
	I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests),
	I40E_PF_STAT("tx_hwtstamp_timeouts", tx_hwtstamp_timeouts),
	I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared),
	/* LPI stats */
	I40E_PF_STAT("tx_lpi_status", stats.tx_lpi_status),
	I40E_PF_STAT("rx_lpi_status", stats.rx_lpi_status),
	I40E_PF_STAT("tx_lpi_count", stats.tx_lpi_count),
	I40E_PF_STAT("rx_lpi_count", stats.rx_lpi_count),
};

#define I40E_QUEUE_STATS_LEN(n) \
+16 −1
Original line number Diff line number Diff line
@@ -740,6 +740,7 @@ void i40e_update_stats(struct i40e_vsi *vsi)
	u32 rx_page, rx_buf;
	u64 rx_p, rx_b;
	u64 tx_p, tx_b;
	u32 val;
	int i;
	u16 q;

@@ -972,6 +973,20 @@ void i40e_update_stats(struct i40e_vsi *vsi)
		i40e_stat_update32(hw, I40E_GLPRT_RJC(hw->port),
				   pf->stat_offsets_loaded,
				   &osd->rx_jabber, &nsd->rx_jabber);

		val = rd32(hw, I40E_PRTPM_EEE_STAT);
		nsd->tx_lpi_status =
			       (val & I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_MASK) >>
				I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_SHIFT;
		nsd->rx_lpi_status =
			       (val & I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_MASK) >>
				I40E_PRTPM_EEE_STAT_RX_LPI_STATUS_SHIFT;
		i40e_stat_update32(hw, I40E_PRTPM_TLPIC,
				   pf->stat_offsets_loaded,
				   &osd->tx_lpi_count, &nsd->tx_lpi_count);
		i40e_stat_update32(hw, I40E_PRTPM_RLPIC,
				   pf->stat_offsets_loaded,
				   &osd->rx_lpi_count, &nsd->rx_lpi_count);
	}

	pf->stat_offsets_loaded = true;
@@ -6381,7 +6396,7 @@ static int i40e_sw_init(struct i40e_pf *pf)
			pf->flags |= I40E_FLAG_FD_SB_ENABLED;
		} else {
			dev_info(&pf->pdev->dev,
				 "Flow Director Side Band mode Disabled in MFP mode\n");
				 "Flow Director Sideband mode Disabled in MFP mode\n");
		}
		pf->fdir_pf_filter_count =
				 pf->hw.func_caps.fd_filters_guaranteed;
+5 −0
Original line number Diff line number Diff line
@@ -1014,6 +1014,11 @@ struct i40e_hw_port_stats {
	u64 tx_size_big;		/* ptc9522 */
	u64 mac_short_packet_dropped;	/* mspdc */
	u64 checksum_error;		/* xec */
	/* EEE LPI */
	bool tx_lpi_status;
	bool rx_lpi_status;
	u64 tx_lpi_count;		/* etlpic */
	u64 rx_lpi_count;		/* erlpic */
};

/* Checksum and Shadow RAM pointers */
+5 −0
Original line number Diff line number Diff line
@@ -1020,6 +1020,11 @@ struct i40e_hw_port_stats {
	u64 tx_size_big;		/* ptc9522 */
	u64 mac_short_packet_dropped;	/* mspdc */
	u64 checksum_error;		/* xec */
	/* EEE LPI */
	bool tx_lpi_status;
	bool rx_lpi_status;
	u64 tx_lpi_count;		/* etlpic */
	u64 rx_lpi_count;		/* erlpic */
};

/* Checksum and Shadow RAM pointers */
+4 −5
Original line number Diff line number Diff line
@@ -1968,8 +1968,7 @@ static void i40evf_init_task(struct work_struct *work)
		}
		err = i40evf_send_api_ver(adapter);
		if (err) {
			dev_err(&pdev->dev, "Unable to send to PF (%d)\n",
				err);
			dev_err(&pdev->dev, "Unable to send to PF (%d)\n", err);
			i40evf_shutdown_adminq(hw);
			goto err;
		}
@@ -1977,8 +1976,10 @@ static void i40evf_init_task(struct work_struct *work)
		goto restart;
		break;
	case __I40EVF_INIT_VERSION_CHECK:
		if (!i40evf_asq_done(hw))
		if (!i40evf_asq_done(hw)) {
			dev_err(&pdev->dev, "Admin queue command never completed.\n");
			goto err;
		}

		/* aq msg sent, awaiting reply */
		err = i40evf_verify_api_ver(adapter);
@@ -2133,8 +2134,6 @@ static void i40evf_init_task(struct work_struct *work)
	kfree(adapter->vf_res);
	adapter->vf_res = NULL;
err:
	if (hw->aq.asq.count)
		i40evf_shutdown_adminq(hw); /* ignore error */
	/* Things went into the weeds, so try again later */
	if (++adapter->aq_wait_count > I40EVF_AQ_MAX_ERR) {
		dev_err(&pdev->dev, "Failed to communicate with PF; giving up.\n");
Loading