| From foo@baz Wed May 28 21:03:54 PDT 2014 |
| From: Ivan Vecera <ivecera@redhat.com> |
| Date: Thu, 17 Apr 2014 14:51:08 +0200 |
| Subject: tg3: update rx_jumbo_pending ring param only when |
| jumbo frames are enabled |
| |
| From: Ivan Vecera <ivecera@redhat.com> |
| |
| The patch fixes a problem with dropped jumbo frames after usage of |
| 'ethtool -G ... rx'. |
| |
| Scenario: |
| 1. ip link set eth0 up |
| 2. ethtool -G eth0 rx N # <- This zeroes rx-jumbo |
| 3. ip link set mtu 9000 dev eth0 |
| |
| The ethtool command set rx_jumbo_pending to zero so any received jumbo |
| packets are dropped and you need to use 'ethtool -G eth0 rx-jumbo N' |
| to workaround the issue. |
| The patch changes the logic so rx_jumbo_pending value is changed only if |
| jumbo frames are enabled (MTU > 1500). |
| |
| Signed-off-by: Ivan Vecera <ivecera@redhat.com> |
| Acked-by: Michael Chan <mchan@broadcom.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/broadcom/tg3.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/broadcom/tg3.c |
| +++ b/drivers/net/ethernet/broadcom/tg3.c |
| @@ -12294,7 +12294,9 @@ static int tg3_set_ringparam(struct net_ |
| if (tg3_flag(tp, MAX_RXPEND_64) && |
| tp->rx_pending > 63) |
| tp->rx_pending = 63; |
| - tp->rx_jumbo_pending = ering->rx_jumbo_pending; |
| + |
| + if (tg3_flag(tp, JUMBO_RING_ENABLE)) |
| + tp->rx_jumbo_pending = ering->rx_jumbo_pending; |
| |
| for (i = 0; i < tp->irq_max; i++) |
| tp->napi[i].tx_pending = ering->tx_pending; |