View | Details | Raw Unified | Return to bug 70761 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/net/ethernet/atheros/alx/hw.c (-5 / +5 lines)
Lines 958-970 void alx_configure_basic(struct alx_hw *hw) Link Here
958
	alx_write_mem32(hw, ALX_TINT_TPD_THRSHLD, hw->ith_tpd);
958
	alx_write_mem32(hw, ALX_TINT_TPD_THRSHLD, hw->ith_tpd);
959
	alx_write_mem32(hw, ALX_TINT_TIMER, hw->imt);
959
	alx_write_mem32(hw, ALX_TINT_TIMER, hw->imt);
960
960
961
	raw_mtu = hw->mtu + ETH_HLEN;
961
	raw_mtu = ALX_RAW_MTU(hw->mtu);
962
	alx_write_mem32(hw, ALX_MTU, raw_mtu + 8);
962
	alx_write_mem32(hw, ALX_MTU, raw_mtu);
963
	if (raw_mtu > ALX_MTU_JUMBO_TH)
963
	if (raw_mtu > (ALX_MTU_JUMBO_TH + ETH_FCS_LEN + VLAN_HLEN))
964
		hw->rx_ctrl &= ~ALX_MAC_CTRL_FAST_PAUSE;
964
		hw->rx_ctrl &= ~ALX_MAC_CTRL_FAST_PAUSE;
965
965
966
	if ((raw_mtu + 8) < ALX_TXQ1_JUMBO_TSO_TH)
966
	if ((raw_mtu) < ALX_TXQ1_JUMBO_TSO_TH)
967
		val = (raw_mtu + 8 + 7) >> 3;
967
		val = (raw_mtu + 7) >> 3;
968
	else
968
	else
969
		val = ALX_TXQ1_JUMBO_TSO_TH >> 3;
969
		val = ALX_TXQ1_JUMBO_TSO_TH >> 3;
970
	alx_write_mem32(hw, ALX_TXQ1, val | ALX_TXQ1_ERRLGPKT_DROP_EN);
970
	alx_write_mem32(hw, ALX_TXQ1, val | ALX_TXQ1_ERRLGPKT_DROP_EN);
(-)a/drivers/net/ethernet/atheros/alx/hw.h (-3 / +6 lines)
Lines 37-42 Link Here
37
#include <linux/types.h>
37
#include <linux/types.h>
38
#include <linux/mdio.h>
38
#include <linux/mdio.h>
39
#include <linux/pci.h>
39
#include <linux/pci.h>
40
#include <linux/if_vlan.h>
40
#include "reg.h"
41
#include "reg.h"
41
42
42
/* Transmit Packet Descriptor, contains 4 32-bit words.
43
/* Transmit Packet Descriptor, contains 4 32-bit words.
Lines 343-354 struct alx_rrd { Link Here
343
					 ALX_RSS_HASH_TYPE_IPV4_TCP | \
344
					 ALX_RSS_HASH_TYPE_IPV4_TCP | \
344
					 ALX_RSS_HASH_TYPE_IPV6 | \
345
					 ALX_RSS_HASH_TYPE_IPV6 | \
345
					 ALX_RSS_HASH_TYPE_IPV6_TCP)
346
					 ALX_RSS_HASH_TYPE_IPV6_TCP)
346
#define ALX_DEF_RXBUF_SIZE	1536
347
#define ALX_FRAME_PAD		16
348
#define ALX_RAW_MTU(_mtu)	(_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN)
349
#define ALX_MAX_FRAME_LEN(_mtu)	(ALIGN((ALX_RAW_MTU(_mtu) + ALX_FRAME_PAD), 8))
350
#define ALX_DEF_RXBUF_SIZE	ALX_MAX_FRAME_LEN(1500)
347
#define ALX_MAX_JUMBO_PKT_SIZE	(9*1024)
351
#define ALX_MAX_JUMBO_PKT_SIZE	(9*1024)
348
#define ALX_MAX_TSO_PKT_SIZE	(7*1024)
352
#define ALX_MAX_TSO_PKT_SIZE	(7*1024)
349
#define ALX_MAX_FRAME_SIZE	ALX_MAX_JUMBO_PKT_SIZE
353
#define ALX_MAX_FRAME_SIZE	ALX_MAX_JUMBO_PKT_SIZE
350
#define ALX_MIN_FRAME_SIZE	68
354
#define ALX_MIN_FRAME_SIZE	(ETH_ZLEN + ETH_FCS_LEN + VLAN_HLEN)
351
#define ALX_RAW_MTU(_mtu)	(_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN)
352
355
353
#define ALX_MAX_RX_QUEUES	8
356
#define ALX_MAX_RX_QUEUES	8
354
#define ALX_MAX_TX_QUEUES	4
357
#define ALX_MAX_TX_QUEUES	4
(-)a/drivers/net/ethernet/atheros/alx/main.c (-5 / +3 lines)
Lines 705-711 static int alx_init_sw(struct alx_priv *alx) Link Here
705
705
706
	hw->smb_timer = 400;
706
	hw->smb_timer = 400;
707
	hw->mtu = alx->dev->mtu;
707
	hw->mtu = alx->dev->mtu;
708
	alx->rxbuf_size = ALIGN(ALX_RAW_MTU(hw->mtu), 8);
708
	alx->rxbuf_size = ALX_MAX_FRAME_LEN(hw->mtu);
709
	alx->tx_ringsz = 256;
709
	alx->tx_ringsz = 256;
710
	alx->rx_ringsz = 512;
710
	alx->rx_ringsz = 512;
711
	hw->imt = 200;
711
	hw->imt = 200;
Lines 806-812 static void alx_reinit(struct alx_priv *alx) Link Here
806
static int alx_change_mtu(struct net_device *netdev, int mtu)
806
static int alx_change_mtu(struct net_device *netdev, int mtu)
807
{
807
{
808
	struct alx_priv *alx = netdev_priv(netdev);
808
	struct alx_priv *alx = netdev_priv(netdev);
809
	int max_frame = mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
809
	int max_frame = ALX_MAX_FRAME_LEN(mtu);
810
810
811
	if ((max_frame < ALX_MIN_FRAME_SIZE) ||
811
	if ((max_frame < ALX_MIN_FRAME_SIZE) ||
812
	    (max_frame > ALX_MAX_FRAME_SIZE))
812
	    (max_frame > ALX_MAX_FRAME_SIZE))
Lines 817-824 static int alx_change_mtu(struct net_device *netdev, int mtu) Link Here
817
817
818
	netdev->mtu = mtu;
818
	netdev->mtu = mtu;
819
	alx->hw.mtu = mtu;
819
	alx->hw.mtu = mtu;
820
	alx->rxbuf_size = mtu > ALX_DEF_RXBUF_SIZE ?
820
	alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE);
821
			   ALIGN(max_frame, 8) : ALX_DEF_RXBUF_SIZE;
822
	netdev_update_features(netdev);
821
	netdev_update_features(netdev);
823
	if (netif_running(netdev))
822
	if (netif_running(netdev))
824
		alx_reinit(alx);
823
		alx_reinit(alx);
825
- 

Return to bug 70761