|
@@ -2717,14 +2717,16 @@ static void igb_setup_mrqc(struct igb_adapter *adapter)
|
|
}
|
|
}
|
|
igb_vmm_control(adapter);
|
|
igb_vmm_control(adapter);
|
|
|
|
|
|
- mrqc |= (E1000_MRQC_RSS_FIELD_IPV4 |
|
|
|
|
- E1000_MRQC_RSS_FIELD_IPV4_TCP);
|
|
|
|
- mrqc |= (E1000_MRQC_RSS_FIELD_IPV6 |
|
|
|
|
- E1000_MRQC_RSS_FIELD_IPV6_TCP);
|
|
|
|
- mrqc |= (E1000_MRQC_RSS_FIELD_IPV4_UDP |
|
|
|
|
- E1000_MRQC_RSS_FIELD_IPV6_UDP);
|
|
|
|
- mrqc |= (E1000_MRQC_RSS_FIELD_IPV6_UDP_EX |
|
|
|
|
- E1000_MRQC_RSS_FIELD_IPV6_TCP_EX);
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Generate RSS hash based on TCP port numbers and/or
|
|
|
|
+ * IPv4/v6 src and dst addresses since UDP cannot be
|
|
|
|
+ * hashed reliably due to IP fragmentation
|
|
|
|
+ */
|
|
|
|
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV4 |
|
|
|
|
+ E1000_MRQC_RSS_FIELD_IPV4_TCP |
|
|
|
|
+ E1000_MRQC_RSS_FIELD_IPV6 |
|
|
|
|
+ E1000_MRQC_RSS_FIELD_IPV6_TCP |
|
|
|
|
+ E1000_MRQC_RSS_FIELD_IPV6_TCP_EX;
|
|
|
|
|
|
wr32(E1000_MRQC, mrqc);
|
|
wr32(E1000_MRQC, mrqc);
|
|
}
|
|
}
|