ixgbevf: Adds function to set PSRTYPE register
authorDon Skidmore <donald.c.skidmore@intel.com>
Sat, 21 Sep 2013 01:57:33 +0000 (01:57 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 24 Oct 2013 14:10:43 +0000 (07:10 -0700)
This patch creates a new function to set PSRTYPE. This function helps lay
the ground work for eventual multi queue support.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c

index ce27d62f9c8e81ae5aeadcb79dfa998bab4bcbf8..c0f9aad2cda3331bcb3eca0041f863ad3d5be53c 100644 (file)
@@ -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);