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

Commit 0c19d6af authored by Peter P Waskiewicz Jr's avatar Peter P Waskiewicz Jr Committed by David S. Miller
Browse files

ixgbe: Fix usage of second flags bitmap when using LRO/RSC



A second set of feature flag bits was added, and the hardware RSC engine
flags were moved there.  However, the code itself didn't make the move
completely to use the new bitmap.

Signed-off-by: default avatarPeter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Acked-by: default avatarMallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8f9a7167
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -1999,13 +1999,13 @@ static int ixgbe_set_flags(struct net_device *netdev, u32 data)


	ethtool_op_set_flags(netdev, data);
	ethtool_op_set_flags(netdev, data);


	if (!(adapter->flags & IXGBE_FLAG2_RSC_CAPABLE))
	if (!(adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE))
		return 0;
		return 0;


	/* if state changes we need to update adapter->flags and reset */
	/* if state changes we need to update adapter->flags and reset */
	if ((!!(data & ETH_FLAG_LRO)) != 
	if ((!!(data & ETH_FLAG_LRO)) != 
	    (!!(adapter->flags & IXGBE_FLAG2_RSC_ENABLED))) {
	    (!!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED))) {
		adapter->flags ^= IXGBE_FLAG2_RSC_ENABLED;
		adapter->flags2 ^= IXGBE_FLAG2_RSC_ENABLED;
		if (netif_running(netdev))
		if (netif_running(netdev))
			ixgbe_reinit_locked(adapter);
			ixgbe_reinit_locked(adapter);
		else
		else
+6 −6
Original line number Original line Diff line number Diff line
@@ -780,7 +780,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
		prefetch(next_rxd);
		prefetch(next_rxd);
		cleaned_count++;
		cleaned_count++;


		if (adapter->flags & IXGBE_FLAG2_RSC_CAPABLE)
		if (adapter->flags2 & IXGBE_FLAG2_RSC_CAPABLE)
			rsc_count = ixgbe_get_rsc_count(rx_desc);
			rsc_count = ixgbe_get_rsc_count(rx_desc);


		if (rsc_count) {
		if (rsc_count) {
@@ -2036,7 +2036,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
			IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype);
			IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype);
		}
		}
	} else {
	} else {
		if (!(adapter->flags & IXGBE_FLAG2_RSC_ENABLED) &&
		if (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) &&
		    (netdev->mtu <= ETH_DATA_LEN))
		    (netdev->mtu <= ETH_DATA_LEN))
			rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
			rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
		else
		else
@@ -2165,7 +2165,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
		IXGBE_WRITE_REG(hw, IXGBE_RDRXCTL, rdrxctl);
		IXGBE_WRITE_REG(hw, IXGBE_RDRXCTL, rdrxctl);
	}
	}


	if (adapter->flags & IXGBE_FLAG2_RSC_ENABLED) {
	if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) {
		/* Enable 82599 HW-RSC */
		/* Enable 82599 HW-RSC */
		for (i = 0; i < adapter->num_rx_queues; i++) {
		for (i = 0; i < adapter->num_rx_queues; i++) {
			j = adapter->rx_ring[i].reg_idx;
			j = adapter->rx_ring[i].reg_idx;
@@ -3812,8 +3812,8 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
		adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82598;
		adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82598;
	} else if (hw->mac.type == ixgbe_mac_82599EB) {
	} else if (hw->mac.type == ixgbe_mac_82599EB) {
		adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82599;
		adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82599;
		adapter->flags |= IXGBE_FLAG2_RSC_CAPABLE;
		adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE;
		adapter->flags |= IXGBE_FLAG2_RSC_ENABLED;
		adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
		adapter->flags |= IXGBE_FLAG_FDIR_HASH_CAPABLE;
		adapter->flags |= IXGBE_FLAG_FDIR_HASH_CAPABLE;
		adapter->ring_feature[RING_F_FDIR].indices =
		adapter->ring_feature[RING_F_FDIR].indices =
		                                         IXGBE_MAX_FDIR_INDICES;
		                                         IXGBE_MAX_FDIR_INDICES;
@@ -5618,7 +5618,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
	if (pci_using_dac)
	if (pci_using_dac)
		netdev->features |= NETIF_F_HIGHDMA;
		netdev->features |= NETIF_F_HIGHDMA;


	if (adapter->flags & IXGBE_FLAG2_RSC_ENABLED)
	if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED)
		netdev->features |= NETIF_F_LRO;
		netdev->features |= NETIF_F_LRO;


	/* make sure the EEPROM is good */
	/* make sure the EEPROM is good */