Message ID | 1485378143-5084-2-git-send-email-tlfalcon@linux.vnet.ibm.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
From: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> Date: Wed, 25 Jan 2017 15:02:20 -0600 > In the current driver, the MTU is set to the maximum value > capable for the backing device. This patch sets the MTU to the > default value for a Linux net device. Why are you doing this? What happens to users who depend upon the current behavior. They will break, and that isn't acceptable.
On 01/25/2017 10:05 PM, David Miller wrote: > From: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> > Date: Wed, 25 Jan 2017 15:02:20 -0600 > >> In the current driver, the MTU is set to the maximum value >> capable for the backing device. This patch sets the MTU to the >> default value for a Linux net device. > Why are you doing this? > > What happens to users who depend upon the current behavior. > > They will break, and that isn't acceptable. > The current behavior was already broken. We were seeing firmware errors when sending jumbo sized packets . We plan to add proper support for jumbo sized packets as soon as possible.
From: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> Date: Thu, 26 Jan 2017 10:44:31 -0600 > On 01/25/2017 10:05 PM, David Miller wrote: >> From: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> >> Date: Wed, 25 Jan 2017 15:02:20 -0600 >> >>> In the current driver, the MTU is set to the maximum value >>> capable for the backing device. This patch sets the MTU to the >>> default value for a Linux net device. >> Why are you doing this? >> >> What happens to users who depend upon the current behavior. >> >> They will break, and that isn't acceptable. >> > The current behavior was already broken. We were seeing firmware errors when sending jumbo sized packets . We plan to add proper support for jumbo sized packets as soon as possible. Need to be explained, with a full detailed history of how things got this way, in your commit message.
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 48debde2..f95f6a4 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c @@ -1496,7 +1496,7 @@ static void init_sub_crqs(struct ibmvnic_adapter *adapter, int retry) adapter->req_rx_queues = adapter->opt_rx_comp_queues; adapter->req_rx_add_queues = adapter->max_rx_add_queues; - adapter->req_mtu = adapter->max_mtu; + adapter->req_mtu = adapter->netdev->mtu + ETH_HLEN; } total_queues = adapter->req_tx_queues + adapter->req_rx_queues; @@ -2626,12 +2626,12 @@ static void handle_query_cap_rsp(union ibmvnic_crq *crq, break; case MIN_MTU: adapter->min_mtu = be64_to_cpu(crq->query_capability.number); - netdev->min_mtu = adapter->min_mtu; + netdev->min_mtu = adapter->min_mtu - ETH_HLEN; netdev_dbg(netdev, "min_mtu = %lld\n", adapter->min_mtu); break; case MAX_MTU: adapter->max_mtu = be64_to_cpu(crq->query_capability.number); - netdev->max_mtu = adapter->max_mtu; + netdev->max_mtu = adapter->max_mtu - ETH_HLEN; netdev_dbg(netdev, "max_mtu = %lld\n", adapter->max_mtu); break; case MAX_MULTICAST_FILTERS: @@ -3672,9 +3672,7 @@ static void handle_crq_init_rsp(struct work_struct *work) goto task_failed; netdev->real_num_tx_queues = adapter->req_tx_queues; - netdev->mtu = adapter->req_mtu; - netdev->min_mtu = adapter->min_mtu; - netdev->max_mtu = adapter->max_mtu; + netdev->mtu = adapter->req_mtu - ETH_HLEN; if (adapter->failover) { adapter->failover = false; @@ -3814,7 +3812,7 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id) } netdev->real_num_tx_queues = adapter->req_tx_queues; - netdev->mtu = adapter->req_mtu; + netdev->mtu = adapter->req_mtu - ETH_HLEN; rc = register_netdev(netdev); if (rc) {
In the current driver, the MTU is set to the maximum value capable for the backing device. This patch sets the MTU to the default value for a Linux net device. It also corrects a discrepancy between MTU values received from firmware, which includes the ethernet header length, and net device MTU values. Finally, it removes redundant min/max MTU assignments after device initialization. Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> --- drivers/net/ethernet/ibm/ibmvnic.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)