diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2022-04-28 13:01:50 -0700 | 
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2022-04-28 13:02:01 -0700 | 
| commit | 0e55546b189fc5f1ce5149445d7df083f26d4f25 (patch) | |
| tree | 0ed58feac725c81dd27a4533bea24c328898e877 /drivers/net/ethernet/ibm | |
| parent | f3412b3879b4f7c4313b186b03940d4791345534 (diff) | |
| parent | 249aca0d3d631660aa3583c6a3559b75b6e971b4 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
include/linux/netdevice.h
net/core/dev.c
  6510ea973d8d ("net: Use this_cpu_inc() to increment net->core_stats")
  794c24e9921f ("net-core: rx_otherhost_dropped to core_stats")
https://lore.kernel.org/all/20220428111903.5f4304e0@canb.auug.org.au/
drivers/net/wan/cosa.c
  d48fea8401cf ("net: cosa: fix error check return value of register_chrdev()")
  89fbca3307d4 ("net: wan: remove support for COSA and SRP synchronous serial boards")
https://lore.kernel.org/all/20220428112130.1f689e5e@canb.auug.org.au/
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/ibm')
| -rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.c | 129 | ||||
| -rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.h | 6 | 
2 files changed, 35 insertions, 100 deletions
| diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 4840ad4ccd10..3699c5435396 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c @@ -3416,13 +3416,8 @@ static void ibmvnic_get_ringparam(struct net_device *netdev,  {  	struct ibmvnic_adapter *adapter = netdev_priv(netdev); -	if (adapter->priv_flags & IBMVNIC_USE_SERVER_MAXES) { -		ring->rx_max_pending = adapter->max_rx_add_entries_per_subcrq; -		ring->tx_max_pending = adapter->max_tx_entries_per_subcrq; -	} else { -		ring->rx_max_pending = IBMVNIC_MAX_QUEUE_SZ; -		ring->tx_max_pending = IBMVNIC_MAX_QUEUE_SZ; -	} +	ring->rx_max_pending = adapter->max_rx_add_entries_per_subcrq; +	ring->tx_max_pending = adapter->max_tx_entries_per_subcrq;  	ring->rx_mini_max_pending = 0;  	ring->rx_jumbo_max_pending = 0;  	ring->rx_pending = adapter->req_rx_add_entries_per_subcrq; @@ -3437,23 +3432,21 @@ static int ibmvnic_set_ringparam(struct net_device *netdev,  				 struct netlink_ext_ack *extack)  {  	struct ibmvnic_adapter *adapter = netdev_priv(netdev); -	int ret; -	ret = 0; +	if (ring->rx_pending > adapter->max_rx_add_entries_per_subcrq  || +	    ring->tx_pending > adapter->max_tx_entries_per_subcrq) { +		netdev_err(netdev, "Invalid request.\n"); +		netdev_err(netdev, "Max tx buffers = %llu\n", +			   adapter->max_rx_add_entries_per_subcrq); +		netdev_err(netdev, "Max rx buffers = %llu\n", +			   adapter->max_tx_entries_per_subcrq); +		return -EINVAL; +	} +  	adapter->desired.rx_entries = ring->rx_pending;  	adapter->desired.tx_entries = ring->tx_pending; -	ret = wait_for_reset(adapter); - -	if (!ret && -	    (adapter->req_rx_add_entries_per_subcrq != ring->rx_pending || -	     adapter->req_tx_entries_per_subcrq != ring->tx_pending)) -		netdev_info(netdev, -			    "Could not match full ringsize request. Requested: RX %d, TX %d; Allowed: RX %llu, TX %llu\n", -			    ring->rx_pending, ring->tx_pending, -			    adapter->req_rx_add_entries_per_subcrq, -			    adapter->req_tx_entries_per_subcrq); -	return ret; +	return wait_for_reset(adapter);  }  static void ibmvnic_get_channels(struct net_device *netdev, @@ -3461,14 +3454,8 @@ static void ibmvnic_get_channels(struct net_device *netdev,  {  	struct ibmvnic_adapter *adapter = netdev_priv(netdev); -	if (adapter->priv_flags & IBMVNIC_USE_SERVER_MAXES) { -		channels->max_rx = adapter->max_rx_queues; -		channels->max_tx = adapter->max_tx_queues; -	} else { -		channels->max_rx = IBMVNIC_MAX_QUEUES; -		channels->max_tx = IBMVNIC_MAX_QUEUES; -	} - +	channels->max_rx = adapter->max_rx_queues; +	channels->max_tx = adapter->max_tx_queues;  	channels->max_other = 0;  	channels->max_combined = 0;  	channels->rx_count = adapter->req_rx_queues; @@ -3481,22 +3468,11 @@ static int ibmvnic_set_channels(struct net_device *netdev,  				struct ethtool_channels *channels)  {  	struct ibmvnic_adapter *adapter = netdev_priv(netdev); -	int ret; -	ret = 0;  	adapter->desired.rx_queues = channels->rx_count;  	adapter->desired.tx_queues = channels->tx_count; -	ret = wait_for_reset(adapter); - -	if (!ret && -	    (adapter->req_rx_queues != channels->rx_count || -	     adapter->req_tx_queues != channels->tx_count)) -		netdev_info(netdev, -			    "Could not match full channels request. Requested: RX %d, TX %d; Allowed: RX %llu, TX %llu\n", -			    channels->rx_count, channels->tx_count, -			    adapter->req_rx_queues, adapter->req_tx_queues); -	return ret; +	return wait_for_reset(adapter);  }  static void ibmvnic_get_strings(struct net_device *dev, u32 stringset, u8 *data) @@ -3504,43 +3480,32 @@ static void ibmvnic_get_strings(struct net_device *dev, u32 stringset, u8 *data)  	struct ibmvnic_adapter *adapter = netdev_priv(dev);  	int i; -	switch (stringset) { -	case ETH_SS_STATS: -		for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); -				i++, data += ETH_GSTRING_LEN) -			memcpy(data, ibmvnic_stats[i].name, ETH_GSTRING_LEN); +	if (stringset != ETH_SS_STATS) +		return; -		for (i = 0; i < adapter->req_tx_queues; i++) { -			snprintf(data, ETH_GSTRING_LEN, "tx%d_packets", i); -			data += ETH_GSTRING_LEN; +	for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); i++, data += ETH_GSTRING_LEN) +		memcpy(data, ibmvnic_stats[i].name, ETH_GSTRING_LEN); -			snprintf(data, ETH_GSTRING_LEN, "tx%d_bytes", i); -			data += ETH_GSTRING_LEN; +	for (i = 0; i < adapter->req_tx_queues; i++) { +		snprintf(data, ETH_GSTRING_LEN, "tx%d_packets", i); +		data += ETH_GSTRING_LEN; -			snprintf(data, ETH_GSTRING_LEN, -				 "tx%d_dropped_packets", i); -			data += ETH_GSTRING_LEN; -		} +		snprintf(data, ETH_GSTRING_LEN, "tx%d_bytes", i); +		data += ETH_GSTRING_LEN; -		for (i = 0; i < adapter->req_rx_queues; i++) { -			snprintf(data, ETH_GSTRING_LEN, "rx%d_packets", i); -			data += ETH_GSTRING_LEN; +		snprintf(data, ETH_GSTRING_LEN, "tx%d_dropped_packets", i); +		data += ETH_GSTRING_LEN; +	} -			snprintf(data, ETH_GSTRING_LEN, "rx%d_bytes", i); -			data += ETH_GSTRING_LEN; +	for (i = 0; i < adapter->req_rx_queues; i++) { +		snprintf(data, ETH_GSTRING_LEN, "rx%d_packets", i); +		data += ETH_GSTRING_LEN; -			snprintf(data, ETH_GSTRING_LEN, "rx%d_interrupts", i); -			data += ETH_GSTRING_LEN; -		} -		break; +		snprintf(data, ETH_GSTRING_LEN, "rx%d_bytes", i); +		data += ETH_GSTRING_LEN; -	case ETH_SS_PRIV_FLAGS: -		for (i = 0; i < ARRAY_SIZE(ibmvnic_priv_flags); i++) -			strcpy(data + i * ETH_GSTRING_LEN, -			       ibmvnic_priv_flags[i]); -		break; -	default: -		return; +		snprintf(data, ETH_GSTRING_LEN, "rx%d_interrupts", i); +		data += ETH_GSTRING_LEN;  	}  } @@ -3553,8 +3518,6 @@ static int ibmvnic_get_sset_count(struct net_device *dev, int sset)  		return ARRAY_SIZE(ibmvnic_stats) +  		       adapter->req_tx_queues * NUM_TX_STATS +  		       adapter->req_rx_queues * NUM_RX_STATS; -	case ETH_SS_PRIV_FLAGS: -		return ARRAY_SIZE(ibmvnic_priv_flags);  	default:  		return -EOPNOTSUPP;  	} @@ -3607,26 +3570,6 @@ static void ibmvnic_get_ethtool_stats(struct net_device *dev,  	}  } -static u32 ibmvnic_get_priv_flags(struct net_device *netdev) -{ -	struct ibmvnic_adapter *adapter = netdev_priv(netdev); - -	return adapter->priv_flags; -} - -static int ibmvnic_set_priv_flags(struct net_device *netdev, u32 flags) -{ -	struct ibmvnic_adapter *adapter = netdev_priv(netdev); -	bool which_maxes = !!(flags & IBMVNIC_USE_SERVER_MAXES); - -	if (which_maxes) -		adapter->priv_flags |= IBMVNIC_USE_SERVER_MAXES; -	else -		adapter->priv_flags &= ~IBMVNIC_USE_SERVER_MAXES; - -	return 0; -} -  static const struct ethtool_ops ibmvnic_ethtool_ops = {  	.get_drvinfo		= ibmvnic_get_drvinfo,  	.get_msglevel		= ibmvnic_get_msglevel, @@ -3640,8 +3583,6 @@ static const struct ethtool_ops ibmvnic_ethtool_ops = {  	.get_sset_count         = ibmvnic_get_sset_count,  	.get_ethtool_stats	= ibmvnic_get_ethtool_stats,  	.get_link_ksettings	= ibmvnic_get_link_ksettings, -	.get_priv_flags		= ibmvnic_get_priv_flags, -	.set_priv_flags		= ibmvnic_set_priv_flags,  };  /* Routines for managing CRQs/sCRQs  */ diff --git a/drivers/net/ethernet/ibm/ibmvnic.h b/drivers/net/ethernet/ibm/ibmvnic.h index 90d6833fb1db..e5c6ff3d0c47 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.h +++ b/drivers/net/ethernet/ibm/ibmvnic.h @@ -82,11 +82,6 @@  #define IBMVNIC_BUFFER_HLEN		500  #define IBMVNIC_RESET_DELAY 100 -static const char ibmvnic_priv_flags[][ETH_GSTRING_LEN] = { -#define IBMVNIC_USE_SERVER_MAXES 0x1 -	"use-server-maxes" -}; -  struct ibmvnic_login_buffer {  	__be32 len;  	__be32 version; @@ -929,7 +924,6 @@ struct ibmvnic_adapter {  	struct ibmvnic_control_ip_offload_buffer ip_offload_ctrl;  	dma_addr_t ip_offload_ctrl_tok;  	u32 msg_enable; -	u32 priv_flags;  	/* Vital Product Data (VPD) */  	struct ibmvnic_vpd *vpd; | 
