|
@@ -1082,6 +1082,21 @@ static void ixgbevf_configure_srrctl(struct ixgbevf_adapter *adapter, int index)
|
|
|
IXGBE_WRITE_REG(hw, IXGBE_VFSRRCTL(index), srrctl);
|
|
|
}
|
|
|
|
|
|
+static void ixgbevf_setup_psrtype(struct ixgbevf_adapter *adapter)
|
|
|
+{
|
|
|
+ struct ixgbe_hw *hw = &adapter->hw;
|
|
|
+
|
|
|
+ /* PSRTYPE must be initialized in 82599 */
|
|
|
+ u32 psrtype = IXGBE_PSRTYPE_TCPHDR | IXGBE_PSRTYPE_UDPHDR |
|
|
|
+ IXGBE_PSRTYPE_IPV4HDR | IXGBE_PSRTYPE_IPV6HDR |
|
|
|
+ IXGBE_PSRTYPE_L2HDR;
|
|
|
+
|
|
|
+ if (adapter->num_rx_queues > 1)
|
|
|
+ psrtype |= 1 << 29;
|
|
|
+
|
|
|
+ IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, psrtype);
|
|
|
+}
|
|
|
+
|
|
|
static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
|
|
|
{
|
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
@@ -1129,8 +1144,7 @@ static void ixgbevf_configure_rx(struct ixgbevf_adapter *adapter)
|
|
|
int i, j;
|
|
|
u32 rdlen;
|
|
|
|
|
|
- /* PSRTYPE must be initialized in 82599 */
|
|
|
- IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, 0);
|
|
|
+ ixgbevf_setup_psrtype(adapter);
|
|
|
|
|
|
/* set_rx_buffer_len must be called before ring initialization */
|
|
|
ixgbevf_set_rx_buffer_len(adapter);
|