tpa_info->hash_type = PKT_HASH_TYPE_L4;
                tpa_info->gso_type = SKB_GSO_TCPV4;
                /* RSS profiles 1 and 3 with extract code 0 for inner 4-tuple */
-               if (hash_type == 3)
+               if (hash_type == 3 || TPA_START_IS_IPV6(tpa_start1))
                        tpa_info->gso_type = SKB_GSO_TCPV6;
                tpa_info->rss_hash =
                        le32_to_cpu(tpa_start->rx_tpa_start_cmp_rss_hash);
        bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_VNIC_RSS_CFG, -1, -1);
        if (set_rss) {
                req.hash_type = cpu_to_le32(bp->rss_hash_cfg);
+               req.hash_mode_flags = VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_DEFAULT;
                if (vnic->flags & BNXT_VNIC_RSS_FLAG) {
                        if (BNXT_CHIP_TYPE_NITRO_A0(bp))
                                max_rings = bp->rx_nr_rings - 1;
 
        ((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) &   \
         RX_TPA_START_CMP_CFA_CODE) >> RX_TPA_START_CMPL_CFA_CODE_SHIFT)
 
+#define TPA_START_IS_IPV6(rx_tpa_start)                                \
+       (!!((rx_tpa_start)->rx_tpa_start_cmp_flags2 &           \
+           cpu_to_le32(RX_TPA_START_CMP_FLAGS2_IP_TYPE)))
+
 struct rx_tpa_end_cmp {
        __le32 rx_tpa_end_cmp_len_flags_type;
        #define RX_TPA_END_CMP_TYPE                             (0x3f << 0)