/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018-2019 Hisilicon Limited.
+ * Copyright(c) 2018-2021 HiSilicon Limited.
*/
#include <ethdev_pci.h>
{
struct hns3_cmq_ring *csq = &hw->cmq.csq;
uint32_t head;
+ uint32_t addr;
int clean;
head = hns3_read_dev(hw, HNS3_CMDQ_TX_HEAD_REG);
- if (!is_valid_csq_clean_head(csq, head)) {
- hns3_err(hw, "wrong cmd head (%u, %u-%u)", head,
- csq->next_to_use, csq->next_to_clean);
+ addr = hns3_read_dev(hw, HNS3_CMDQ_TX_ADDR_L_REG);
+ if (!is_valid_csq_clean_head(csq, head) || addr == 0) {
+ hns3_err(hw, "wrong cmd addr(%0x) head (%u, %u-%u)", addr, head,
+ csq->next_to_use, csq->next_to_clean);
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
__atomic_store_n(&hw->reset.disable_cmd, 1,
__ATOMIC_RELAXED);
if (hns3_get_bit(caps, HNS3_CAPS_RXD_ADV_LAYOUT_B))
hns3_set_bit(hw->capability, HNS3_DEV_SUPPORT_RXD_ADV_LAYOUT_B,
1);
+ if (hns3_get_bit(caps, HNS3_CAPS_UDP_TUNNEL_CSUM_B))
+ hns3_set_bit(hw->capability,
+ HNS3_DEV_SUPPORT_OUTER_UDP_CKSUM_B, 1);
}
static uint32_t