Skip to content

Commit

Permalink
igb: update handling of RCTL for smaller buffer sizes
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alexander Duyck authored and David S. Miller committed Dec 10, 2008
1 parent e97fd7c commit b4557be
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1801,25 +1801,21 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
*/
rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_LPE | E1000_RCTL_SZ_256);

if (adapter->netdev->mtu <= ETH_DATA_LEN) {
/* Setup buffer sizes */
switch (adapter->rx_buffer_len) {
case IGB_RXBUFFER_256:
rctl |= E1000_RCTL_SZ_256;
break;
case IGB_RXBUFFER_512:
rctl |= E1000_RCTL_SZ_512;
break;
case IGB_RXBUFFER_1024:
rctl |= E1000_RCTL_SZ_1024;
break;
default:
rctl |= E1000_RCTL_SZ_2048;
break;
}
} else {
if (adapter->netdev->mtu > ETH_DATA_LEN)
rctl |= E1000_RCTL_LPE;
srrctl = adapter->rx_buffer_len >> E1000_SRRCTL_BSIZEPKT_SHIFT;

/* Setup buffer sizes */
switch (adapter->rx_buffer_len) {
case IGB_RXBUFFER_256:
rctl |= E1000_RCTL_SZ_256;
break;
case IGB_RXBUFFER_512:
rctl |= E1000_RCTL_SZ_512;
break;
default:
srrctl = ALIGN(adapter->rx_buffer_len, 1024)
>> E1000_SRRCTL_BSIZEPKT_SHIFT;
break;
}

/* 82575 and greater support packet-split where the protocol
Expand Down

0 comments on commit b4557be

Please sign in to comment.