diff options
Diffstat (limited to 'drivers/net/ethernet/intel/iavf/iavf_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/iavf/iavf_main.c | 54 | 
1 files changed, 15 insertions, 39 deletions
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 166832a4213a..c6dff0963053 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -1,6 +1,8 @@  // SPDX-License-Identifier: GPL-2.0  /* Copyright(c) 2013 - 2018 Intel Corporation. */ +#include <linux/net/intel/libie/rx.h> +  #include "iavf.h"  #include "iavf_prototype.h"  /* All iavf tracepoints are defined by the include below, which must @@ -45,6 +47,8 @@ MODULE_DEVICE_TABLE(pci, iavf_pci_tbl);  MODULE_ALIAS("i40evf");  MODULE_AUTHOR("Intel Corporation, <[email protected]>");  MODULE_DESCRIPTION("Intel(R) Ethernet Adaptive Virtual Function Network Driver"); +MODULE_IMPORT_NS(LIBETH); +MODULE_IMPORT_NS(LIBIE);  MODULE_LICENSE("GPL v2");  static const struct net_device_ops iavf_netdev_ops; @@ -714,40 +718,10 @@ static void iavf_configure_tx(struct iavf_adapter *adapter)   **/  static void iavf_configure_rx(struct iavf_adapter *adapter)  { -	unsigned int rx_buf_len = IAVF_RXBUFFER_2048;  	struct iavf_hw *hw = &adapter->hw; -	int i; - -	/* Legacy Rx will always default to a 2048 buffer size. */ -#if (PAGE_SIZE < 8192) -	if (!(adapter->flags & IAVF_FLAG_LEGACY_RX)) { -		struct net_device *netdev = adapter->netdev; - -		/* For jumbo frames on systems with 4K pages we have to use -		 * an order 1 page, so we might as well increase the size -		 * of our Rx buffer to make better use of the available space -		 */ -		rx_buf_len = IAVF_RXBUFFER_3072; - -		/* We use a 1536 buffer size for configurations with -		 * standard Ethernet mtu.  On x86 this gives us enough room -		 * for shared info and 192 bytes of padding. -		 */ -		if (!IAVF_2K_TOO_SMALL_WITH_PADDING && -		    (netdev->mtu <= ETH_DATA_LEN)) -			rx_buf_len = IAVF_RXBUFFER_1536 - NET_IP_ALIGN; -	} -#endif -	for (i = 0; i < adapter->num_active_queues; i++) { +	for (u32 i = 0; i < adapter->num_active_queues; i++)  		adapter->rx_rings[i].tail = hw->hw_addr + IAVF_QRX_TAIL1(i); -		adapter->rx_rings[i].rx_buf_len = rx_buf_len; - -		if (adapter->flags & IAVF_FLAG_LEGACY_RX) -			clear_ring_build_skb_enabled(&adapter->rx_rings[i]); -		else -			set_ring_build_skb_enabled(&adapter->rx_rings[i]); -	}  }  /** @@ -1615,7 +1589,6 @@ static int iavf_alloc_queues(struct iavf_adapter *adapter)  		rx_ring = &adapter->rx_rings[i];  		rx_ring->queue_index = i;  		rx_ring->netdev = adapter->netdev; -		rx_ring->dev = &adapter->pdev->dev;  		rx_ring->count = adapter->rx_desc_count;  		rx_ring->itr_setting = IAVF_ITR_RX_DEF;  	} @@ -2642,9 +2615,8 @@ static void iavf_init_config_adapter(struct iavf_adapter *adapter)  	iavf_set_ethtool_ops(netdev);  	netdev->watchdog_timeo = 5 * HZ; -	/* MTU range: 68 - 9710 */  	netdev->min_mtu = ETH_MIN_MTU; -	netdev->max_mtu = IAVF_MAX_RXBUFFER - IAVF_PACKET_HDR_PAD; +	netdev->max_mtu = LIBIE_MAX_MTU;  	if (!is_valid_ether_addr(adapter->hw.mac.addr)) {  		dev_info(&pdev->dev, "Invalid MAC address %pM, using random\n", @@ -3785,6 +3757,10 @@ static int iavf_parse_cls_flower(struct iavf_adapter *adapter,  		flow_rule_match_control(rule, &match);  		addr_type = match.key->addr_type; + +		if (flow_rule_has_control_flags(match.mask->flags, +						f->common.extack)) +			return -EOPNOTSUPP;  	}  	if (addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { @@ -4324,7 +4300,7 @@ static int iavf_change_mtu(struct net_device *netdev, int new_mtu)  	netdev_dbg(netdev, "changing MTU from %d to %d\n",  		   netdev->mtu, new_mtu); -	netdev->mtu = new_mtu; +	WRITE_ONCE(netdev->mtu, new_mtu);  	if (netif_running(netdev)) {  		iavf_schedule_reset(adapter, IAVF_FLAG_RESET_NEEDED); @@ -5051,7 +5027,7 @@ err_dma:   *   * Called when the system (VM) is entering sleep/suspend.   **/ -static int __maybe_unused iavf_suspend(struct device *dev_d) +static int iavf_suspend(struct device *dev_d)  {  	struct net_device *netdev = dev_get_drvdata(dev_d);  	struct iavf_adapter *adapter = netdev_priv(netdev); @@ -5079,7 +5055,7 @@ static int __maybe_unused iavf_suspend(struct device *dev_d)   *   * Called when the system (VM) is resumed from sleep/suspend.   **/ -static int __maybe_unused iavf_resume(struct device *dev_d) +static int iavf_resume(struct device *dev_d)  {  	struct pci_dev *pdev = to_pci_dev(dev_d);  	struct iavf_adapter *adapter; @@ -5266,14 +5242,14 @@ static void iavf_shutdown(struct pci_dev *pdev)  		pci_set_power_state(pdev, PCI_D3hot);  } -static SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume);  static struct pci_driver iavf_driver = {  	.name      = iavf_driver_name,  	.id_table  = iavf_pci_tbl,  	.probe     = iavf_probe,  	.remove    = iavf_remove, -	.driver.pm = &iavf_pm_ops, +	.driver.pm = pm_sleep_ptr(&iavf_pm_ops),  	.shutdown  = iavf_shutdown,  };  |