Re: [PATCH net 2/5] ibmvnic: Fix MTU settings

2017-01-26 Thread David Miller
From: Thomas Falcon 
Date: Thu, 26 Jan 2017 10:44:31 -0600

> On 01/25/2017 10:05 PM, David Miller wrote:
>> From: Thomas Falcon 
>> 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.

 


Re: [PATCH net 2/5] ibmvnic: Fix MTU settings

2017-01-26 Thread Thomas Falcon
On 01/25/2017 10:05 PM, David Miller wrote:
> From: Thomas Falcon 
> 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.  



Re: [PATCH net 2/5] ibmvnic: Fix MTU settings

2017-01-25 Thread David Miller
From: Thomas Falcon 
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.


[PATCH net 2/5] ibmvnic: Fix MTU settings

2017-01-25 Thread Thomas Falcon
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 
---
 drivers/net/ethernet/ibm/ibmvnic.c | 12 +---
 1 file changed, 5 insertions(+), 7 deletions(-)

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) {
-- 
1.8.3.1