qlcnic: enable RSS for TCP over IPv6
authorShahed Shaikh <shahed.shaikh@qlogic.com>
Fri, 25 Jan 2013 10:20:36 +0000 (10:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 27 Jan 2013 06:00:08 +0000 (01:00 -0500)
o This patch enables RSS for TYPE-C packets to enable RSS for TCP over IPv6

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c

index 8e0412bdf42d9cb3651a3771fe53988027cd17c6..186fe6e6eaaaa05bba98d986232e3cb1ecf2d14d 100644 (file)
@@ -756,7 +756,10 @@ int qlcnic_config_bridged_mode(struct qlcnic_adapter *adapter, u32 enable)
 }
 
 
-#define RSS_HASHTYPE_IP_TCP    0x3
+#define QLCNIC_RSS_HASHTYPE_IP_TCP     0x3
+#define QLCNIC_ENABLE_TYPE_C_RSS       BIT_10
+#define QLCNIC_RSS_FEATURE_FLAG        (1ULL << 63)
+#define QLCNIC_RSS_IND_TABLE_MASK      0x7ULL
 
 int qlcnic_82xx_config_rss(struct qlcnic_adapter *adapter, int enable)
 {
@@ -783,13 +786,19 @@ int qlcnic_82xx_config_rss(struct qlcnic_adapter *adapter, int enable)
         *      7-6: hash_type_ipv6
         *        8: enable
         *        9: use indirection table
-        *    47-10: reserved
-        *    63-48: indirection table mask
+        *       10: type-c rss
+        *       11: udp rss
+        *    47-12: reserved
+        *    62-48: indirection table mask
+        *       63: feature flag
         */
-       word =  ((u64)(RSS_HASHTYPE_IP_TCP & 0x3) << 4) |
-               ((u64)(RSS_HASHTYPE_IP_TCP & 0x3) << 6) |
+       word =  ((u64)(QLCNIC_RSS_HASHTYPE_IP_TCP & 0x3) << 4) |
+               ((u64)(QLCNIC_RSS_HASHTYPE_IP_TCP & 0x3) << 6) |
                ((u64)(enable & 0x1) << 8) |
-               ((0x7ULL) << 48);
+               ((u64)QLCNIC_RSS_IND_TABLE_MASK << 48) |
+               (u64)QLCNIC_ENABLE_TYPE_C_RSS |
+               (u64)QLCNIC_RSS_FEATURE_FLAG;
+
        req.words[0] = cpu_to_le64(word);
        for (i = 0; i < 5; i++)
                req.words[i+1] = cpu_to_le64(key[i]);