Commit 4d656b70 authored by David S. Miller's avatar David S. Miller

Merge branch 'hns3-cleanups'

Huazhong Tan says:
====================
net: hns3: add some cleanups

This series includes some cleanups for the HNS3 ethernet driver.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 026412ec b1261897
...@@ -210,7 +210,6 @@ void hns3_set_vector_coalesce_rl(struct hns3_enet_tqp_vector *tqp_vector, ...@@ -210,7 +210,6 @@ void hns3_set_vector_coalesce_rl(struct hns3_enet_tqp_vector *tqp_vector,
* Rl defines rate of interrupts i.e. number of interrupts-per-second * Rl defines rate of interrupts i.e. number of interrupts-per-second
* GL and RL(Rate Limiter) are 2 ways to acheive interrupt coalescing * GL and RL(Rate Limiter) are 2 ways to acheive interrupt coalescing
*/ */
if (rl_reg > 0 && !tqp_vector->tx_group.coal.adapt_enable && if (rl_reg > 0 && !tqp_vector->tx_group.coal.adapt_enable &&
!tqp_vector->rx_group.coal.adapt_enable) !tqp_vector->rx_group.coal.adapt_enable)
/* According to the hardware, the range of rl_reg is /* According to the hardware, the range of rl_reg is
...@@ -883,7 +882,6 @@ static void hns3_set_outer_l2l3l4(struct sk_buff *skb, u8 ol4_proto, ...@@ -883,7 +882,6 @@ static void hns3_set_outer_l2l3l4(struct sk_buff *skb, u8 ol4_proto,
hns3_set_field(*ol_type_vlan_len_msec, hns3_set_field(*ol_type_vlan_len_msec,
HNS3_TXD_OL3T_S, HNS3_TXD_OL3T_S,
HNS3_OL3T_IPV4_NO_CSUM); HNS3_OL3T_IPV4_NO_CSUM);
} else if (skb->protocol == htons(ETH_P_IPV6)) { } else if (skb->protocol == htons(ETH_P_IPV6)) {
hns3_set_field(*ol_type_vlan_len_msec, HNS3_TXD_OL3T_S, hns3_set_field(*ol_type_vlan_len_msec, HNS3_TXD_OL3T_S,
HNS3_OL3T_IPV6); HNS3_OL3T_IPV6);
...@@ -1296,7 +1294,6 @@ static unsigned int hns3_tx_bd_num(struct sk_buff *skb, unsigned int *bd_size, ...@@ -1296,7 +1294,6 @@ static unsigned int hns3_tx_bd_num(struct sk_buff *skb, unsigned int *bd_size,
return HNS3_MAX_TSO_BD_NUM + 1U; return HNS3_MAX_TSO_BD_NUM + 1U;
bd_num = hns3_skb_bd_num(skb, bd_size, bd_num); bd_num = hns3_skb_bd_num(skb, bd_size, bd_num);
if (!skb_has_frag_list(skb) || bd_num > HNS3_MAX_TSO_BD_NUM) if (!skb_has_frag_list(skb) || bd_num > HNS3_MAX_TSO_BD_NUM)
return bd_num; return bd_num;
...@@ -2965,7 +2962,6 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb, ...@@ -2965,7 +2962,6 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb,
HNS3_RXD_L3ID_S); HNS3_RXD_L3ID_S);
l4_type = hnae3_get_field(l234info, HNS3_RXD_L4ID_M, l4_type = hnae3_get_field(l234info, HNS3_RXD_L4ID_M,
HNS3_RXD_L4ID_S); HNS3_RXD_L4ID_S);
/* Can checksum ipv4 or ipv6 + UDP/TCP/SCTP packets */ /* Can checksum ipv4 or ipv6 + UDP/TCP/SCTP packets */
if ((l3_type == HNS3_L3_TYPE_IPV4 || if ((l3_type == HNS3_L3_TYPE_IPV4 ||
l3_type == HNS3_L3_TYPE_IPV6) && l3_type == HNS3_L3_TYPE_IPV6) &&
...@@ -3295,7 +3291,6 @@ static int hns3_handle_rx_bd(struct hns3_enet_ring *ring) ...@@ -3295,7 +3291,6 @@ static int hns3_handle_rx_bd(struct hns3_enet_ring *ring)
if (!skb) { if (!skb) {
bd_base_info = le32_to_cpu(desc->rx.bd_base_info); bd_base_info = le32_to_cpu(desc->rx.bd_base_info);
/* Check valid BD */ /* Check valid BD */
if (unlikely(!(bd_base_info & BIT(HNS3_RXD_VLD_B)))) if (unlikely(!(bd_base_info & BIT(HNS3_RXD_VLD_B))))
return -ENXIO; return -ENXIO;
...@@ -3557,7 +3552,6 @@ static int hns3_nic_common_poll(struct napi_struct *napi, int budget) ...@@ -3557,7 +3552,6 @@ static int hns3_nic_common_poll(struct napi_struct *napi, int budget)
hns3_for_each_ring(ring, tqp_vector->rx_group) { hns3_for_each_ring(ring, tqp_vector->rx_group) {
int rx_cleaned = hns3_clean_rx_ring(ring, rx_budget, int rx_cleaned = hns3_clean_rx_ring(ring, rx_budget,
hns3_rx_skb); hns3_rx_skb);
if (rx_cleaned >= rx_budget) if (rx_cleaned >= rx_budget)
clean_complete = false; clean_complete = false;
...@@ -4024,7 +4018,6 @@ static void hns3_init_ring_hw(struct hns3_enet_ring *ring) ...@@ -4024,7 +4018,6 @@ static void hns3_init_ring_hw(struct hns3_enet_ring *ring)
hns3_buf_size2type(ring->buf_size)); hns3_buf_size2type(ring->buf_size));
hns3_write_dev(q, HNS3_RING_RX_RING_BD_NUM_REG, hns3_write_dev(q, HNS3_RING_RX_RING_BD_NUM_REG,
ring->desc_num / 8 - 1); ring->desc_num / 8 - 1);
} else { } else {
hns3_write_dev(q, HNS3_RING_TX_RING_BASEADDR_L_REG, hns3_write_dev(q, HNS3_RING_TX_RING_BASEADDR_L_REG,
(u32)dma); (u32)dma);
......
...@@ -307,7 +307,7 @@ static int hns3_lp_run_test(struct net_device *ndev, enum hnae3_loop mode) ...@@ -307,7 +307,7 @@ static int hns3_lp_run_test(struct net_device *ndev, enum hnae3_loop mode)
} }
/** /**
* hns3_nic_self_test - self test * hns3_self_test - self test
* @ndev: net device * @ndev: net device
* @eth_test: test cmd * @eth_test: test cmd
* @data: test result * @data: test result
......
...@@ -366,7 +366,6 @@ static void hclge_parse_capability(struct hclge_dev *hdev, ...@@ -366,7 +366,6 @@ static void hclge_parse_capability(struct hclge_dev *hdev,
u32 caps; u32 caps;
caps = __le32_to_cpu(cmd->caps[0]); caps = __le32_to_cpu(cmd->caps[0]);
if (hnae3_get_bit(caps, HCLGE_CAP_UDP_GSO_B)) if (hnae3_get_bit(caps, HCLGE_CAP_UDP_GSO_B))
set_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps); set_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps);
if (hnae3_get_bit(caps, HCLGE_CAP_PTP_B)) if (hnae3_get_bit(caps, HCLGE_CAP_PTP_B))
......
...@@ -506,8 +506,6 @@ struct hclge_pf_res_cmd { ...@@ -506,8 +506,6 @@ struct hclge_pf_res_cmd {
#define HCLGE_CFG_RD_LEN_BYTES 16 #define HCLGE_CFG_RD_LEN_BYTES 16
#define HCLGE_CFG_RD_LEN_UNIT 4 #define HCLGE_CFG_RD_LEN_UNIT 4
#define HCLGE_CFG_VMDQ_S 0
#define HCLGE_CFG_VMDQ_M GENMASK(7, 0)
#define HCLGE_CFG_TC_NUM_S 8 #define HCLGE_CFG_TC_NUM_S 8
#define HCLGE_CFG_TC_NUM_M GENMASK(15, 8) #define HCLGE_CFG_TC_NUM_M GENMASK(15, 8)
#define HCLGE_CFG_TQP_DESC_N_S 16 #define HCLGE_CFG_TQP_DESC_N_S 16
......
...@@ -1541,8 +1541,7 @@ static void hclge_dbg_dump_ncl_config(struct hclge_dev *hdev, ...@@ -1541,8 +1541,7 @@ static void hclge_dbg_dump_ncl_config(struct hclge_dev *hdev,
} }
} }
static void hclge_dbg_dump_loopback(struct hclge_dev *hdev, static void hclge_dbg_dump_loopback(struct hclge_dev *hdev)
const char *cmd_buf)
{ {
struct phy_device *phydev = hdev->hw.mac.phydev; struct phy_device *phydev = hdev->hw.mac.phydev;
struct hclge_config_mac_mode_cmd *req_app; struct hclge_config_mac_mode_cmd *req_app;
...@@ -1778,7 +1777,7 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf) ...@@ -1778,7 +1777,7 @@ int hclge_dbg_run_cmd(struct hnae3_handle *handle, const char *cmd_buf)
hclge_dbg_dump_mac_tnl_status(hdev); hclge_dbg_dump_mac_tnl_status(hdev);
} else if (strncmp(cmd_buf, DUMP_LOOPBACK, } else if (strncmp(cmd_buf, DUMP_LOOPBACK,
strlen(DUMP_LOOPBACK)) == 0) { strlen(DUMP_LOOPBACK)) == 0) {
hclge_dbg_dump_loopback(hdev, &cmd_buf[sizeof(DUMP_LOOPBACK)]); hclge_dbg_dump_loopback(hdev);
} else if (strncmp(cmd_buf, "dump qs shaper", 14) == 0) { } else if (strncmp(cmd_buf, "dump qs shaper", 14) == 0) {
hclge_dbg_dump_qs_shaper(hdev, hclge_dbg_dump_qs_shaper(hdev,
&cmd_buf[sizeof("dump qs shaper")]); &cmd_buf[sizeof("dump qs shaper")]);
......
...@@ -865,13 +865,7 @@ static int hclge_config_tm_hw_err_int(struct hclge_dev *hdev, bool en) ...@@ -865,13 +865,7 @@ static int hclge_config_tm_hw_err_int(struct hclge_dev *hdev, bool en)
} }
/* configure TM QCN hw errors */ /* configure TM QCN hw errors */
ret = hclge_cmd_query_error(hdev, &desc, HCLGE_TM_QCN_MEM_INT_CFG, 0); hclge_cmd_setup_basic_desc(&desc, HCLGE_TM_QCN_MEM_INT_CFG, false);
if (ret) {
dev_err(dev, "fail(%d) to read TM QCN CFG status\n", ret);
return ret;
}
hclge_cmd_reuse_desc(&desc, false);
if (en) if (en)
desc.data[1] = cpu_to_le32(HCLGE_TM_QCN_MEM_ERR_INT_EN); desc.data[1] = cpu_to_le32(HCLGE_TM_QCN_MEM_ERR_INT_EN);
...@@ -1497,7 +1491,6 @@ hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev) ...@@ -1497,7 +1491,6 @@ hclge_log_and_clear_rocee_ras_error(struct hclge_dev *hdev)
} }
status = le32_to_cpu(desc[0].data[0]); status = le32_to_cpu(desc[0].data[0]);
if (status & HCLGE_ROCEE_AXI_ERR_INT_MASK) { if (status & HCLGE_ROCEE_AXI_ERR_INT_MASK) {
if (status & HCLGE_ROCEE_RERR_INT_MASK) if (status & HCLGE_ROCEE_RERR_INT_MASK)
dev_err(dev, "ROCEE RAS AXI rresp error\n"); dev_err(dev, "ROCEE RAS AXI rresp error\n");
...@@ -1647,7 +1640,6 @@ pci_ers_result_t hclge_handle_hw_ras_error(struct hnae3_ae_dev *ae_dev) ...@@ -1647,7 +1640,6 @@ pci_ers_result_t hclge_handle_hw_ras_error(struct hnae3_ae_dev *ae_dev)
} }
status = hclge_read_dev(&hdev->hw, HCLGE_RAS_PF_OTHER_INT_STS_REG); status = hclge_read_dev(&hdev->hw, HCLGE_RAS_PF_OTHER_INT_STS_REG);
if (status & HCLGE_RAS_REG_NFE_MASK || if (status & HCLGE_RAS_REG_NFE_MASK ||
status & HCLGE_RAS_REG_ROCEE_ERR_MASK) status & HCLGE_RAS_REG_ROCEE_ERR_MASK)
ae_dev->hw_err_reset_req = 0; ae_dev->hw_err_reset_req = 0;
......
...@@ -553,7 +553,6 @@ static int hclge_mac_update_stats(struct hclge_dev *hdev) ...@@ -553,7 +553,6 @@ static int hclge_mac_update_stats(struct hclge_dev *hdev)
int ret; int ret;
ret = hclge_mac_query_reg_num(hdev, &desc_num); ret = hclge_mac_query_reg_num(hdev, &desc_num);
/* The firmware supports the new statistics acquisition method */ /* The firmware supports the new statistics acquisition method */
if (!ret) if (!ret)
ret = hclge_mac_update_stats_complete(hdev, desc_num); ret = hclge_mac_update_stats_complete(hdev, desc_num);
...@@ -784,7 +783,6 @@ static int hclge_get_sset_count(struct hnae3_handle *handle, int stringset) ...@@ -784,7 +783,6 @@ static int hclge_get_sset_count(struct hnae3_handle *handle, int stringset)
count += 1; count += 1;
handle->flags |= HNAE3_SUPPORT_PHY_LOOPBACK; handle->flags |= HNAE3_SUPPORT_PHY_LOOPBACK;
} }
} else if (stringset == ETH_SS_STATS) { } else if (stringset == ETH_SS_STATS) {
count = ARRAY_SIZE(g_mac_stats_string) + count = ARRAY_SIZE(g_mac_stats_string) +
hclge_tqps_get_sset_count(handle, stringset); hclge_tqps_get_sset_count(handle, stringset);
...@@ -1292,9 +1290,6 @@ static void hclge_parse_cfg(struct hclge_cfg *cfg, struct hclge_desc *desc) ...@@ -1292,9 +1290,6 @@ static void hclge_parse_cfg(struct hclge_cfg *cfg, struct hclge_desc *desc)
req = (struct hclge_cfg_param_cmd *)desc[0].data; req = (struct hclge_cfg_param_cmd *)desc[0].data;
/* get the configuration */ /* get the configuration */
cfg->vmdq_vport_num = hnae3_get_field(__le32_to_cpu(req->param[0]),
HCLGE_CFG_VMDQ_M,
HCLGE_CFG_VMDQ_S);
cfg->tc_num = hnae3_get_field(__le32_to_cpu(req->param[0]), cfg->tc_num = hnae3_get_field(__le32_to_cpu(req->param[0]),
HCLGE_CFG_TC_NUM_M, HCLGE_CFG_TC_NUM_S); HCLGE_CFG_TC_NUM_M, HCLGE_CFG_TC_NUM_S);
cfg->tqp_desc_num = hnae3_get_field(__le32_to_cpu(req->param[0]), cfg->tqp_desc_num = hnae3_get_field(__le32_to_cpu(req->param[0]),
...@@ -1511,7 +1506,7 @@ static void hclge_init_kdump_kernel_config(struct hclge_dev *hdev) ...@@ -1511,7 +1506,7 @@ static void hclge_init_kdump_kernel_config(struct hclge_dev *hdev)
"Running kdump kernel. Using minimal resources\n"); "Running kdump kernel. Using minimal resources\n");
/* minimal queue pairs equals to the number of vports */ /* minimal queue pairs equals to the number of vports */
hdev->num_tqps = hdev->num_vmdq_vport + hdev->num_req_vfs + 1; hdev->num_tqps = hdev->num_req_vfs + 1;
hdev->num_tx_desc = HCLGE_MIN_TX_DESC; hdev->num_tx_desc = HCLGE_MIN_TX_DESC;
hdev->num_rx_desc = HCLGE_MIN_RX_DESC; hdev->num_rx_desc = HCLGE_MIN_RX_DESC;
} }
...@@ -1526,7 +1521,6 @@ static int hclge_configure(struct hclge_dev *hdev) ...@@ -1526,7 +1521,6 @@ static int hclge_configure(struct hclge_dev *hdev)
if (ret) if (ret)
return ret; return ret;
hdev->num_vmdq_vport = cfg.vmdq_vport_num;
hdev->base_tqp_pid = 0; hdev->base_tqp_pid = 0;
hdev->vf_rss_size_max = cfg.vf_rss_size_max; hdev->vf_rss_size_max = cfg.vf_rss_size_max;
hdev->pf_rss_size_max = cfg.pf_rss_size_max; hdev->pf_rss_size_max = cfg.pf_rss_size_max;
...@@ -1777,7 +1771,7 @@ static int hclge_map_tqp(struct hclge_dev *hdev) ...@@ -1777,7 +1771,7 @@ static int hclge_map_tqp(struct hclge_dev *hdev)
struct hclge_vport *vport = hdev->vport; struct hclge_vport *vport = hdev->vport;
u16 i, num_vport; u16 i, num_vport;
num_vport = hdev->num_vmdq_vport + hdev->num_req_vfs + 1; num_vport = hdev->num_req_vfs + 1;
for (i = 0; i < num_vport; i++) { for (i = 0; i < num_vport; i++) {
int ret; int ret;
...@@ -1819,7 +1813,7 @@ static int hclge_alloc_vport(struct hclge_dev *hdev) ...@@ -1819,7 +1813,7 @@ static int hclge_alloc_vport(struct hclge_dev *hdev)
int ret; int ret;
/* We need to alloc a vport for main NIC of PF */ /* We need to alloc a vport for main NIC of PF */
num_vport = hdev->num_vmdq_vport + hdev->num_req_vfs + 1; num_vport = hdev->num_req_vfs + 1;
if (hdev->num_tqps < num_vport) { if (hdev->num_tqps < num_vport) {
dev_err(&hdev->pdev->dev, "tqps(%u) is less than vports(%d)", dev_err(&hdev->pdev->dev, "tqps(%u) is less than vports(%d)",
...@@ -2195,7 +2189,6 @@ static int hclge_only_alloc_priv_buff(struct hclge_dev *hdev, ...@@ -2195,7 +2189,6 @@ static int hclge_only_alloc_priv_buff(struct hclge_dev *hdev,
COMPENSATE_HALF_MPS_NUM * half_mps; COMPENSATE_HALF_MPS_NUM * half_mps;
min_rx_priv = round_up(min_rx_priv, HCLGE_BUF_SIZE_UNIT); min_rx_priv = round_up(min_rx_priv, HCLGE_BUF_SIZE_UNIT);
rx_priv = round_down(rx_priv, HCLGE_BUF_SIZE_UNIT); rx_priv = round_down(rx_priv, HCLGE_BUF_SIZE_UNIT);
if (rx_priv < min_rx_priv) if (rx_priv < min_rx_priv)
return false; return false;
...@@ -2224,7 +2217,7 @@ static int hclge_only_alloc_priv_buff(struct hclge_dev *hdev, ...@@ -2224,7 +2217,7 @@ static int hclge_only_alloc_priv_buff(struct hclge_dev *hdev,
/* hclge_rx_buffer_calc: calculate the rx private buffer size for all TCs /* hclge_rx_buffer_calc: calculate the rx private buffer size for all TCs
* @hdev: pointer to struct hclge_dev * @hdev: pointer to struct hclge_dev
* @buf_alloc: pointer to buffer calculation data * @buf_alloc: pointer to buffer calculation data
* @return: 0: calculate sucessful, negative: fail * @return: 0: calculate successful, negative: fail
*/ */
static int hclge_rx_buffer_calc(struct hclge_dev *hdev, static int hclge_rx_buffer_calc(struct hclge_dev *hdev,
struct hclge_pkt_buf_alloc *buf_alloc) struct hclge_pkt_buf_alloc *buf_alloc)
...@@ -2889,13 +2882,12 @@ static int hclge_get_mac_phy_link(struct hclge_dev *hdev, int *link_status) ...@@ -2889,13 +2882,12 @@ static int hclge_get_mac_phy_link(struct hclge_dev *hdev, int *link_status)
static void hclge_update_link_status(struct hclge_dev *hdev) static void hclge_update_link_status(struct hclge_dev *hdev)
{ {
struct hnae3_handle *rhandle = &hdev->vport[0].roce;
struct hnae3_handle *handle = &hdev->vport[0].nic;
struct hnae3_client *rclient = hdev->roce_client; struct hnae3_client *rclient = hdev->roce_client;
struct hnae3_client *client = hdev->nic_client; struct hnae3_client *client = hdev->nic_client;
struct hnae3_handle *rhandle;
struct hnae3_handle *handle;
int state; int state;
int ret; int ret;
int i;
if (!client) if (!client)
return; return;
...@@ -2910,15 +2902,11 @@ static void hclge_update_link_status(struct hclge_dev *hdev) ...@@ -2910,15 +2902,11 @@ static void hclge_update_link_status(struct hclge_dev *hdev)
} }
if (state != hdev->hw.mac.link) { if (state != hdev->hw.mac.link) {
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) { client->ops->link_status_change(handle, state);
handle = &hdev->vport[i].nic; hclge_config_mac_tnl_int(hdev, state);
client->ops->link_status_change(handle, state); if (rclient && rclient->ops->link_status_change)
hclge_config_mac_tnl_int(hdev, state); rclient->ops->link_status_change(rhandle, state);
rhandle = &hdev->vport[i].roce;
if (rclient && rclient->ops->link_status_change)
rclient->ops->link_status_change(rhandle,
state);
}
hdev->hw.mac.link = state; hdev->hw.mac.link = state;
} }
...@@ -3370,7 +3358,7 @@ static irqreturn_t hclge_misc_irq_handle(int irq, void *data) ...@@ -3370,7 +3358,7 @@ static irqreturn_t hclge_misc_irq_handle(int irq, void *data)
* caused this event. Therefore, we will do below for now: * caused this event. Therefore, we will do below for now:
* 1. Assert HNAE3_UNKNOWN_RESET type of reset. This means we * 1. Assert HNAE3_UNKNOWN_RESET type of reset. This means we
* have defered type of reset to be used. * have defered type of reset to be used.
* 2. Schedule the reset serivce task. * 2. Schedule the reset service task.
* 3. When service task receives HNAE3_UNKNOWN_RESET type it * 3. When service task receives HNAE3_UNKNOWN_RESET type it
* will fetch the correct type of reset. This would be done * will fetch the correct type of reset. This would be done
* by first decoding the types of errors. * by first decoding the types of errors.
...@@ -3498,8 +3486,9 @@ static void hclge_misc_irq_uninit(struct hclge_dev *hdev) ...@@ -3498,8 +3486,9 @@ static void hclge_misc_irq_uninit(struct hclge_dev *hdev)
int hclge_notify_client(struct hclge_dev *hdev, int hclge_notify_client(struct hclge_dev *hdev,
enum hnae3_reset_notify_type type) enum hnae3_reset_notify_type type)
{ {
struct hnae3_handle *handle = &hdev->vport[0].nic;
struct hnae3_client *client = hdev->nic_client; struct hnae3_client *client = hdev->nic_client;
u16 i; int ret;
if (!test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state) || !client) if (!test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state) || !client)
return 0; return 0;
...@@ -3507,27 +3496,20 @@ int hclge_notify_client(struct hclge_dev *hdev, ...@@ -3507,27 +3496,20 @@ int hclge_notify_client(struct hclge_dev *hdev,
if (!client->ops->reset_notify) if (!client->ops->reset_notify)
return -EOPNOTSUPP; return -EOPNOTSUPP;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) { ret = client->ops->reset_notify(handle, type);
struct hnae3_handle *handle = &hdev->vport[i].nic; if (ret)
int ret; dev_err(&hdev->pdev->dev, "notify nic client failed %d(%d)\n",
type, ret);
ret = client->ops->reset_notify(handle, type);
if (ret) {
dev_err(&hdev->pdev->dev,
"notify nic client failed %d(%d)\n", type, ret);
return ret;
}
}
return 0; return ret;
} }
static int hclge_notify_roce_client(struct hclge_dev *hdev, static int hclge_notify_roce_client(struct hclge_dev *hdev,
enum hnae3_reset_notify_type type) enum hnae3_reset_notify_type type)
{ {
struct hnae3_handle *handle = &hdev->vport[0].roce;
struct hnae3_client *client = hdev->roce_client; struct hnae3_client *client = hdev->roce_client;
int ret; int ret;
u16 i;
if (!test_bit(HCLGE_STATE_ROCE_REGISTERED, &hdev->state) || !client) if (!test_bit(HCLGE_STATE_ROCE_REGISTERED, &hdev->state) || !client)
return 0; return 0;
...@@ -3535,17 +3517,10 @@ static int hclge_notify_roce_client(struct hclge_dev *hdev, ...@@ -3535,17 +3517,10 @@ static int hclge_notify_roce_client(struct hclge_dev *hdev,
if (!client->ops->reset_notify) if (!client->ops->reset_notify)
return -EOPNOTSUPP; return -EOPNOTSUPP;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) { ret = client->ops->reset_notify(handle, type);
struct hnae3_handle *handle = &hdev->vport[i].roce; if (ret)
dev_err(&hdev->pdev->dev, "notify roce client failed %d(%d)",
ret = client->ops->reset_notify(handle, type); type, ret);
if (ret) {
dev_err(&hdev->pdev->dev,
"notify roce client failed %d(%d)",
type, ret);
return ret;
}
}
return ret; return ret;
} }
...@@ -3613,7 +3588,7 @@ static int hclge_set_all_vf_rst(struct hclge_dev *hdev, bool reset) ...@@ -3613,7 +3588,7 @@ static int hclge_set_all_vf_rst(struct hclge_dev *hdev, bool reset)
{ {
int i; int i;
for (i = hdev->num_vmdq_vport + 1; i < hdev->num_alloc_vport; i++) { for (i = HCLGE_VF_VPORT_START_NUM; i < hdev->num_alloc_vport; i++) {
struct hclge_vport *vport = &hdev->vport[i]; struct hclge_vport *vport = &hdev->vport[i];
int ret; int ret;
...@@ -3694,14 +3669,12 @@ void hclge_report_hw_error(struct hclge_dev *hdev, ...@@ -3694,14 +3669,12 @@ void hclge_report_hw_error(struct hclge_dev *hdev,
enum hnae3_hw_error_type type) enum hnae3_hw_error_type type)
{ {
struct hnae3_client *client = hdev->nic_client; struct hnae3_client *client = hdev->nic_client;
u16 i;
if (!client || !client->ops->process_hw_error || if (!client || !client->ops->process_hw_error ||
!test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state)) !test_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state))
return; return;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) client->ops->process_hw_error(&hdev->vport[0].nic, type);
client->ops->process_hw_error(&hdev->vport[i].nic, type);
} }
static void hclge_handle_imp_error(struct hclge_dev *hdev) static void hclge_handle_imp_error(struct hclge_dev *hdev)
...@@ -3967,6 +3940,21 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev) ...@@ -3967,6 +3940,21 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev)
return false; return false;
} }
static void hclge_update_reset_level(struct hclge_dev *hdev)
{
struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
enum hnae3_reset_type reset_level;
/* if default_reset_request has a higher level reset request,
* it should be handled as soon as possible. since some errors
* need this kind of reset to fix.
*/
reset_level = hclge_get_reset_level(ae_dev,
&hdev->default_reset_request);
if (reset_level != HNAE3_NONE_RESET)
set_bit(reset_level, &hdev->reset_request);
}
static int hclge_set_rst_done(struct hclge_dev *hdev) static int hclge_set_rst_done(struct hclge_dev *hdev)
{ {
struct hclge_pf_rst_done_cmd *req; struct hclge_pf_rst_done_cmd *req;
...@@ -4054,8 +4042,6 @@ static int hclge_reset_prepare(struct hclge_dev *hdev) ...@@ -4054,8 +4042,6 @@ static int hclge_reset_prepare(struct hclge_dev *hdev)
static int hclge_reset_rebuild(struct hclge_dev *hdev) static int hclge_reset_rebuild(struct hclge_dev *hdev)
{ {
struct hnae3_ae_dev *ae_dev = pci_get_drvdata(hdev->pdev);
enum hnae3_reset_type reset_level;
int ret; int ret;
hdev->rst_stats.hw_reset_done_cnt++; hdev->rst_stats.hw_reset_done_cnt++;
...@@ -4099,14 +4085,7 @@ static int hclge_reset_rebuild(struct hclge_dev *hdev) ...@@ -4099,14 +4085,7 @@ static int hclge_reset_rebuild(struct hclge_dev *hdev)
hdev->rst_stats.reset_done_cnt++; hdev->rst_stats.reset_done_cnt++;
clear_bit(HCLGE_STATE_RST_FAIL, &hdev->state); clear_bit(HCLGE_STATE_RST_FAIL, &hdev->state);
/* if default_reset_request has a higher level reset request, hclge_update_reset_level(hdev);
* it should be handled as soon as possible. since some errors
* need this kind of reset to fix.
*/
reset_level = hclge_get_reset_level(ae_dev,
&hdev->default_reset_request);
if (reset_level != HNAE3_NONE_RESET)
set_bit(reset_level, &hdev->reset_request);
return 0; return 0;
} }
...@@ -4913,58 +4892,44 @@ int hclge_rss_init_hw(struct hclge_dev *hdev) ...@@ -4913,58 +4892,44 @@ int hclge_rss_init_hw(struct hclge_dev *hdev)
void hclge_rss_indir_init_cfg(struct hclge_dev *hdev) void hclge_rss_indir_init_cfg(struct hclge_dev *hdev)
{ {
struct hclge_vport *vport = hdev->vport; struct hclge_vport *vport = &hdev->vport[0];
int i, j; int i;
for (j = 0; j < hdev->num_vmdq_vport + 1; j++) { for (i = 0; i < hdev->ae_dev->dev_specs.rss_ind_tbl_size; i++)
for (i = 0; i < hdev->ae_dev->dev_specs.rss_ind_tbl_size; i++) vport->rss_indirection_tbl[i] = i % vport->alloc_rss_size;
vport[j].rss_indirection_tbl[i] =
i % vport[j].alloc_rss_size;
}
} }
static int hclge_rss_init_cfg(struct hclge_dev *hdev) static int hclge_rss_init_cfg(struct hclge_dev *hdev)
{ {
u16 rss_ind_tbl_size = hdev->ae_dev->dev_specs.rss_ind_tbl_size; u16 rss_ind_tbl_size = hdev->ae_dev->dev_specs.rss_ind_tbl_size;
int i, rss_algo = HCLGE_RSS_HASH_ALGO_TOEPLITZ; int rss_algo = HCLGE_RSS_HASH_ALGO_TOEPLITZ;
struct hclge_vport *vport = hdev->vport; struct hclge_vport *vport = &hdev->vport[0];
u16 *rss_ind_tbl;
if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2) if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2)
rss_algo = HCLGE_RSS_HASH_ALGO_SIMPLE; rss_algo = HCLGE_RSS_HASH_ALGO_SIMPLE;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) { vport->rss_tuple_sets.ipv4_tcp_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
u16 *rss_ind_tbl; vport->rss_tuple_sets.ipv4_udp_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
vport->rss_tuple_sets.ipv4_sctp_en = HCLGE_RSS_INPUT_TUPLE_SCTP;
vport[i].rss_tuple_sets.ipv4_tcp_en = vport->rss_tuple_sets.ipv4_fragment_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
HCLGE_RSS_INPUT_TUPLE_OTHER; vport->rss_tuple_sets.ipv6_tcp_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
vport[i].rss_tuple_sets.ipv4_udp_en = vport->rss_tuple_sets.ipv6_udp_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
HCLGE_RSS_INPUT_TUPLE_OTHER; vport->rss_tuple_sets.ipv6_sctp_en =
vport[i].rss_tuple_sets.ipv4_sctp_en = hdev->ae_dev->dev_version <= HNAE3_DEVICE_VERSION_V2 ?
HCLGE_RSS_INPUT_TUPLE_SCTP; HCLGE_RSS_INPUT_TUPLE_SCTP_NO_PORT :
vport[i].rss_tuple_sets.ipv4_fragment_en = HCLGE_RSS_INPUT_TUPLE_SCTP;
HCLGE_RSS_INPUT_TUPLE_OTHER; vport->rss_tuple_sets.ipv6_fragment_en = HCLGE_RSS_INPUT_TUPLE_OTHER;
vport[i].rss_tuple_sets.ipv6_tcp_en =
HCLGE_RSS_INPUT_TUPLE_OTHER; vport->rss_algo = rss_algo;
vport[i].rss_tuple_sets.ipv6_udp_en =
HCLGE_RSS_INPUT_TUPLE_OTHER; rss_ind_tbl = devm_kcalloc(&hdev->pdev->dev, rss_ind_tbl_size,
vport[i].rss_tuple_sets.ipv6_sctp_en = sizeof(*rss_ind_tbl), GFP_KERNEL);
hdev->ae_dev->dev_version <= HNAE3_DEVICE_VERSION_V2 ? if (!rss_ind_tbl)
HCLGE_RSS_INPUT_TUPLE_SCTP_NO_PORT : return -ENOMEM;
HCLGE_RSS_INPUT_TUPLE_SCTP;
vport[i].rss_tuple_sets.ipv6_fragment_en =
HCLGE_RSS_INPUT_TUPLE_OTHER;
vport[i].rss_algo = rss_algo;
rss_ind_tbl = devm_kcalloc(&hdev->pdev->dev, rss_ind_tbl_size,
sizeof(*rss_ind_tbl), GFP_KERNEL);
if (!rss_ind_tbl)
return -ENOMEM;
vport[i].rss_indirection_tbl = rss_ind_tbl; vport->rss_indirection_tbl = rss_ind_tbl;
memcpy(vport[i].rss_hash_key, hclge_hash_key, memcpy(vport->rss_hash_key, hclge_hash_key, HCLGE_RSS_KEY_SIZE);
HCLGE_RSS_KEY_SIZE);
}
hclge_rss_indir_init_cfg(hdev); hclge_rss_indir_init_cfg(hdev);
...@@ -8457,7 +8422,7 @@ int hclge_update_mac_list(struct hclge_vport *vport, ...@@ -8457,7 +8422,7 @@ int hclge_update_mac_list(struct hclge_vport *vport,
/* if the mac addr is already in the mac list, no need to add a new /* if the mac addr is already in the mac list, no need to add a new
* one into it, just check the mac addr state, convert it to a new * one into it, just check the mac addr state, convert it to a new
* new state, or just remove it, or do nothing. * state, or just remove it, or do nothing.
*/ */
mac_node = hclge_find_mac_node(list, addr); mac_node = hclge_find_mac_node(list, addr);
if (mac_node) { if (mac_node) {
...@@ -8646,7 +8611,6 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport, ...@@ -8646,7 +8611,6 @@ int hclge_add_mc_addr_common(struct hclge_vport *vport,
if (status) if (status)
return status; return status;
status = hclge_add_mac_vlan_tbl(vport, &req, desc); status = hclge_add_mac_vlan_tbl(vport, &req, desc);
/* if already overflow, not to print each time */ /* if already overflow, not to print each time */
if (status == -ENOSPC && if (status == -ENOSPC &&
!(vport->overflow_promisc_flags & HNAE3_OVERFLOW_MPE)) !(vport->overflow_promisc_flags & HNAE3_OVERFLOW_MPE))
...@@ -8695,7 +8659,6 @@ int hclge_rm_mc_addr_common(struct hclge_vport *vport, ...@@ -8695,7 +8659,6 @@ int hclge_rm_mc_addr_common(struct hclge_vport *vport,
else else
/* Not all the vfid is zero, update the vfid */ /* Not all the vfid is zero, update the vfid */
status = hclge_add_mac_vlan_tbl(vport, &req, desc); status = hclge_add_mac_vlan_tbl(vport, &req, desc);
} else if (status == -ENOENT) { } else if (status == -ENOENT) {
status = 0; status = 0;
} }
...@@ -9130,7 +9093,7 @@ static bool hclge_check_vf_mac_exist(struct hclge_vport *vport, int vf_idx, ...@@ -9130,7 +9093,7 @@ static bool hclge_check_vf_mac_exist(struct hclge_vport *vport, int vf_idx,
return true; return true;
vf_idx += HCLGE_VF_VPORT_START_NUM; vf_idx += HCLGE_VF_VPORT_START_NUM;
for (i = hdev->num_vmdq_vport + 1; i < hdev->num_alloc_vport; i++) for (i = HCLGE_VF_VPORT_START_NUM; i < hdev->num_alloc_vport; i++)
if (i != vf_idx && if (i != vf_idx &&
ether_addr_equal(mac_addr, hdev->vport[i].vf_info.mac)) ether_addr_equal(mac_addr, hdev->vport[i].vf_info.mac))
return true; return true;
...@@ -9511,8 +9474,7 @@ static int hclge_check_vf_vlan_cmd_status(struct hclge_dev *hdev, u16 vfid, ...@@ -9511,8 +9474,7 @@ static int hclge_check_vf_vlan_cmd_status(struct hclge_dev *hdev, u16 vfid,
} }
static int hclge_set_vf_vlan_common(struct hclge_dev *hdev, u16 vfid, static int hclge_set_vf_vlan_common(struct hclge_dev *hdev, u16 vfid,
bool is_kill, u16 vlan, bool is_kill, u16 vlan)
__be16 proto)
{ {
struct hclge_vport *vport = &hdev->vport[vfid]; struct hclge_vport *vport = &hdev->vport[vfid];
struct hclge_desc desc[2]; struct hclge_desc desc[2];
...@@ -9578,8 +9540,7 @@ static int hclge_set_vlan_filter_hw(struct hclge_dev *hdev, __be16 proto, ...@@ -9578,8 +9540,7 @@ static int hclge_set_vlan_filter_hw(struct hclge_dev *hdev, __be16 proto,
if (is_kill && !vlan_id) if (is_kill && !vlan_id)
return 0; return 0;
ret = hclge_set_vf_vlan_common(hdev, vport_id, is_kill, vlan_id, ret = hclge_set_vf_vlan_common(hdev, vport_id, is_kill, vlan_id);
proto);
if (ret) { if (ret) {
dev_err(&hdev->pdev->dev, dev_err(&hdev->pdev->dev,
"Set %u vport vlan filter config fail, ret =%d.\n", "Set %u vport vlan filter config fail, ret =%d.\n",
...@@ -10771,7 +10732,6 @@ static void hclge_info_show(struct hclge_dev *hdev) ...@@ -10771,7 +10732,6 @@ static void hclge_info_show(struct hclge_dev *hdev)
dev_info(dev, "Desc num per TX queue: %u\n", hdev->num_tx_desc); dev_info(dev, "Desc num per TX queue: %u\n", hdev->num_tx_desc);
dev_info(dev, "Desc num per RX queue: %u\n", hdev->num_rx_desc); dev_info(dev, "Desc num per RX queue: %u\n", hdev->num_rx_desc);
dev_info(dev, "Numbers of vports: %u\n", hdev->num_alloc_vport); dev_info(dev, "Numbers of vports: %u\n", hdev->num_alloc_vport);
dev_info(dev, "Numbers of vmdp vports: %u\n", hdev->num_vmdq_vport);
dev_info(dev, "Numbers of VF for this PF: %u\n", hdev->num_req_vfs); dev_info(dev, "Numbers of VF for this PF: %u\n", hdev->num_req_vfs);
dev_info(dev, "HW tc map: 0x%x\n", hdev->hw_tc_map); dev_info(dev, "HW tc map: 0x%x\n", hdev->hw_tc_map);
dev_info(dev, "Total buffer size for TX/RX: %u\n", hdev->pkt_buf_size); dev_info(dev, "Total buffer size for TX/RX: %u\n", hdev->pkt_buf_size);
...@@ -10886,39 +10846,35 @@ static int hclge_init_client_instance(struct hnae3_client *client, ...@@ -10886,39 +10846,35 @@ static int hclge_init_client_instance(struct hnae3_client *client,
struct hnae3_ae_dev *ae_dev) struct hnae3_ae_dev *ae_dev)
{ {
struct hclge_dev *hdev = ae_dev->priv; struct hclge_dev *hdev = ae_dev->priv;
struct hclge_vport *vport; struct hclge_vport *vport = &hdev->vport[0];
int i, ret; int ret;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) {
vport = &hdev->vport[i];
switch (client->type) { switch (client->type) {
case HNAE3_CLIENT_KNIC: case HNAE3_CLIENT_KNIC:
hdev->nic_client = client; hdev->nic_client = client;
vport->nic.client = client; vport->nic.client = client;
ret = hclge_init_nic_client_instance(ae_dev, vport); ret = hclge_init_nic_client_instance(ae_dev, vport);
if (ret) if (ret)
goto clear_nic; goto clear_nic;
ret = hclge_init_roce_client_instance(ae_dev, vport); ret = hclge_init_roce_client_instance(ae_dev, vport);
if (ret) if (ret)
goto clear_roce; goto clear_roce;
break; break;
case HNAE3_CLIENT_ROCE: case HNAE3_CLIENT_ROCE:
if (hnae3_dev_roce_supported(hdev)) { if (hnae3_dev_roce_supported(hdev)) {
hdev->roce_client = client; hdev->roce_client = client;
vport->roce.client = client; vport->roce.client = client;
} }
ret = hclge_init_roce_client_instance(ae_dev, vport); ret = hclge_init_roce_client_instance(ae_dev, vport);
if (ret) if (ret)
goto clear_roce; goto clear_roce;
break; break;
default: default:
return -EINVAL; return -EINVAL;
}
} }
return 0; return 0;
...@@ -10937,32 +10893,27 @@ static void hclge_uninit_client_instance(struct hnae3_client *client, ...@@ -10937,32 +10893,27 @@ static void hclge_uninit_client_instance(struct hnae3_client *client,
struct hnae3_ae_dev *ae_dev) struct hnae3_ae_dev *ae_dev)
{ {
struct hclge_dev *hdev = ae_dev->priv; struct hclge_dev *hdev = ae_dev->priv;
struct hclge_vport *vport; struct hclge_vport *vport = &hdev->vport[0];
int i;
for (i = 0; i < hdev->num_vmdq_vport + 1; i++) { if (hdev->roce_client) {
vport = &hdev->vport[i]; clear_bit(HCLGE_STATE_ROCE_REGISTERED, &hdev->state);
if (hdev->roce_client) { while (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
clear_bit(HCLGE_STATE_ROCE_REGISTERED, &hdev->state); msleep(HCLGE_WAIT_RESET_DONE);
while (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
msleep(HCLGE_WAIT_RESET_DONE); hdev->roce_client->ops->uninit_instance(&vport->roce, 0);
hdev->roce_client = NULL;
hdev->roce_client->ops->uninit_instance(&vport->roce, vport->roce.client = NULL;
0); }
hdev->roce_client = NULL; if (client->type == HNAE3_CLIENT_ROCE)
vport->roce.client = NULL; return;
} if (hdev->nic_client && client->ops->uninit_instance) {
if (client->type == HNAE3_CLIENT_ROCE) clear_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state);
return; while (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
if (hdev->nic_client && client->ops->uninit_instance) { msleep(HCLGE_WAIT_RESET_DONE);
clear_bit(HCLGE_STATE_NIC_REGISTERED, &hdev->state);
while (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) client->ops->uninit_instance(&vport->nic, 0);
msleep(HCLGE_WAIT_RESET_DONE); hdev->nic_client = NULL;
vport->nic.client = NULL;
client->ops->uninit_instance(&vport->nic, 0);
hdev->nic_client = NULL;
vport->nic.client = NULL;
}
} }
} }
......
...@@ -348,7 +348,6 @@ struct hclge_tc_info { ...@@ -348,7 +348,6 @@ struct hclge_tc_info {
}; };
struct hclge_cfg { struct hclge_cfg {
u8 vmdq_vport_num;
u8 tc_num; u8 tc_num;
u16 tqp_desc_num; u16 tqp_desc_num;
u16 rx_buf_len; u16 rx_buf_len;
...@@ -811,7 +810,6 @@ struct hclge_dev { ...@@ -811,7 +810,6 @@ struct hclge_dev {
struct hclge_rst_stats rst_stats; struct hclge_rst_stats rst_stats;
struct semaphore reset_sem; /* protect reset process */ struct semaphore reset_sem; /* protect reset process */
u32 fw_version; u32 fw_version;
u16 num_vmdq_vport; /* Num vmdq vport this PF has set up */
u16 num_tqps; /* Num task queue pairs of this PF */ u16 num_tqps; /* Num task queue pairs of this PF */
u16 num_req_vfs; /* Num VFs requested for this PF */ u16 num_req_vfs; /* Num VFs requested for this PF */
......
...@@ -631,13 +631,12 @@ static u16 hclge_vport_get_tqp_num(struct hclge_vport *vport) ...@@ -631,13 +631,12 @@ static u16 hclge_vport_get_tqp_num(struct hclge_vport *vport)
return sum; return sum;
} }
static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport) static void hclge_tm_update_kinfo_rss_size(struct hclge_vport *vport)
{ {
struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo;
struct hclge_dev *hdev = vport->back; struct hclge_dev *hdev = vport->back;
u16 vport_max_rss_size; u16 vport_max_rss_size;
u16 max_rss_size; u16 max_rss_size;
u8 i;
/* TC configuration is shared by PF/VF in one port, only allow /* TC configuration is shared by PF/VF in one port, only allow
* one tc for VF for simplicity. VF's vport_id is non zero. * one tc for VF for simplicity. VF's vport_id is non zero.
...@@ -677,7 +676,15 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport) ...@@ -677,7 +676,15 @@ static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
/* Set to the maximum specification value (max_rss_size). */ /* Set to the maximum specification value (max_rss_size). */
kinfo->rss_size = max_rss_size; kinfo->rss_size = max_rss_size;
} }
}
static void hclge_tm_vport_tc_info_update(struct hclge_vport *vport)
{
struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo;
struct hclge_dev *hdev = vport->back;
u8 i;
hclge_tm_update_kinfo_rss_size(vport);
kinfo->num_tqps = hclge_vport_get_tqp_num(vport); kinfo->num_tqps = hclge_vport_get_tqp_num(vport);
vport->dwrr = 100; /* 100 percent as init */ vport->dwrr = 100; /* 100 percent as init */
vport->alloc_rss_size = kinfo->rss_size; vport->alloc_rss_size = kinfo->rss_size;
......
...@@ -349,7 +349,6 @@ static void hclgevf_parse_capability(struct hclgevf_dev *hdev, ...@@ -349,7 +349,6 @@ static void hclgevf_parse_capability(struct hclgevf_dev *hdev,
u32 caps; u32 caps;
caps = __le32_to_cpu(cmd->caps[0]); caps = __le32_to_cpu(cmd->caps[0]);
if (hnae3_get_bit(caps, HCLGEVF_CAP_UDP_GSO_B)) if (hnae3_get_bit(caps, HCLGEVF_CAP_UDP_GSO_B))
set_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps); set_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps);
if (hnae3_get_bit(caps, HCLGEVF_CAP_INT_QL_B)) if (hnae3_get_bit(caps, HCLGEVF_CAP_INT_QL_B))
......
...@@ -497,7 +497,6 @@ void hclgevf_update_link_status(struct hclgevf_dev *hdev, int link_state) ...@@ -497,7 +497,6 @@ void hclgevf_update_link_status(struct hclgevf_dev *hdev, int link_state)
link_state = link_state =
test_bit(HCLGEVF_STATE_DOWN, &hdev->state) ? 0 : link_state; test_bit(HCLGEVF_STATE_DOWN, &hdev->state) ? 0 : link_state;
if (link_state != hdev->hw.mac.link) { if (link_state != hdev->hw.mac.link) {
client->ops->link_status_change(handle, !!link_state); client->ops->link_status_change(handle, !!link_state);
if (rclient && rclient->ops->link_status_change) if (rclient && rclient->ops->link_status_change)
...@@ -2356,7 +2355,6 @@ static enum hclgevf_evt_cause hclgevf_check_evt_cause(struct hclgevf_dev *hdev, ...@@ -2356,7 +2355,6 @@ static enum hclgevf_evt_cause hclgevf_check_evt_cause(struct hclgevf_dev *hdev,
/* fetch the events from their corresponding regs */ /* fetch the events from their corresponding regs */
cmdq_stat_reg = hclgevf_read_dev(&hdev->hw, cmdq_stat_reg = hclgevf_read_dev(&hdev->hw,
HCLGEVF_VECTOR0_CMDQ_STATE_REG); HCLGEVF_VECTOR0_CMDQ_STATE_REG);
if (BIT(HCLGEVF_VECTOR0_RST_INT_B) & cmdq_stat_reg) { if (BIT(HCLGEVF_VECTOR0_RST_INT_B) & cmdq_stat_reg) {
rst_ing_reg = hclgevf_read_dev(&hdev->hw, HCLGEVF_RST_ING); rst_ing_reg = hclgevf_read_dev(&hdev->hw, HCLGEVF_RST_ING);
dev_info(&hdev->pdev->dev, dev_info(&hdev->pdev->dev,
......
...@@ -192,7 +192,6 @@ struct hclgevf_tqp { ...@@ -192,7 +192,6 @@ struct hclgevf_tqp {
}; };
struct hclgevf_cfg { struct hclgevf_cfg {
u8 vmdq_vport_num;
u8 tc_num; u8 tc_num;
u16 tqp_desc_num; u16 tqp_desc_num;
u16 rx_buf_len; u16 rx_buf_len;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment