aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 08f4a13a602f..4c38d51397ce 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1754,28 +1754,20 @@ static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter, int index)
1754 srrctl &= ~IXGBE_SRRCTL_BSIZEHDR_MASK; 1754 srrctl &= ~IXGBE_SRRCTL_BSIZEHDR_MASK;
1755 srrctl &= ~IXGBE_SRRCTL_BSIZEPKT_MASK; 1755 srrctl &= ~IXGBE_SRRCTL_BSIZEPKT_MASK;
1756 1756
1757 srrctl |= (IXGBE_RX_HDR_SIZE << IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) &
1758 IXGBE_SRRCTL_BSIZEHDR_MASK;
1759
1757 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) { 1760 if (adapter->flags & IXGBE_FLAG_RX_PS_ENABLED) {
1758 u16 bufsz = IXGBE_RXBUFFER_2048; 1761#if (PAGE_SIZE / 2) > IXGBE_MAX_RXBUFFER
1759 /* grow the amount we can receive on large page machines */ 1762 srrctl |= IXGBE_MAX_RXBUFFER >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1760 if (bufsz < (PAGE_SIZE / 2)) 1763#else
1761 bufsz = (PAGE_SIZE / 2); 1764 srrctl |= (PAGE_SIZE / 2) >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1762 /* cap the bufsz at our largest descriptor size */ 1765#endif
1763 bufsz = min((u16)IXGBE_MAX_RXBUFFER, bufsz);
1764
1765 srrctl |= bufsz >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1766 srrctl |= IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS; 1766 srrctl |= IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
1767 srrctl |= ((IXGBE_RX_HDR_SIZE <<
1768 IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) &
1769 IXGBE_SRRCTL_BSIZEHDR_MASK);
1770 } else { 1767 } else {
1768 srrctl |= ALIGN(rx_ring->rx_buf_len, 1024) >>
1769 IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1771 srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF; 1770 srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
1772
1773 if (rx_ring->rx_buf_len == MAXIMUM_ETHERNET_VLAN_SIZE)
1774 srrctl |= IXGBE_RXBUFFER_2048 >>
1775 IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1776 else
1777 srrctl |= rx_ring->rx_buf_len >>
1778 IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1779 } 1771 }
1780 1772
1781 IXGBE_WRITE_REG(&adapter->hw, IXGBE_SRRCTL(index), srrctl); 1773 IXGBE_WRITE_REG(&adapter->hw, IXGBE_SRRCTL(index), srrctl);