igb: update handling of RCTL for smaller buffer sizes

As we begin to move into virtualization the use of a global value for
buffer sizes becomes undesirable.  This change makes it so only 256 and 512
byte buffers require use of the RCTL register.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Alexander Duyck
2008-12-10 01:08:59 -08:00
committed by David S. Miller
parent e97fd7c6d5
commit b4557be23d

View File

@@ -1801,7 +1801,9 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
*/ */
rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_LPE | E1000_RCTL_SZ_256); rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_LPE | E1000_RCTL_SZ_256);
if (adapter->netdev->mtu <= ETH_DATA_LEN) { if (adapter->netdev->mtu > ETH_DATA_LEN)
rctl |= E1000_RCTL_LPE;
/* Setup buffer sizes */ /* Setup buffer sizes */
switch (adapter->rx_buffer_len) { switch (adapter->rx_buffer_len) {
case IGB_RXBUFFER_256: case IGB_RXBUFFER_256:
@@ -1810,17 +1812,11 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
case IGB_RXBUFFER_512: case IGB_RXBUFFER_512:
rctl |= E1000_RCTL_SZ_512; rctl |= E1000_RCTL_SZ_512;
break; break;
case IGB_RXBUFFER_1024:
rctl |= E1000_RCTL_SZ_1024;
break;
default: default:
rctl |= E1000_RCTL_SZ_2048; srrctl = ALIGN(adapter->rx_buffer_len, 1024)
>> E1000_SRRCTL_BSIZEPKT_SHIFT;
break; break;
} }
} else {
rctl |= E1000_RCTL_LPE;
srrctl = adapter->rx_buffer_len >> E1000_SRRCTL_BSIZEPKT_SHIFT;
}
/* 82575 and greater support packet-split where the protocol /* 82575 and greater support packet-split where the protocol
* header is placed in skb->data and the packet data is * header is placed in skb->data and the packet data is