Merge branch 'net-hns3-there-are-some-cleanup-for-the-hns3-ethernet-driver'
Hao Lan says: ==================== net: hns3: There are some cleanup for the HNS3 ethernet driver There are some cleanup for the HNS3 ethernet driver. ==================== Link: https://lore.kernel.org/r/20230621123309.34381-1-lanhao@huawei.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
ebe14dad2d
drivers/net/ethernet/hisilicon/hns3
@ -647,8 +647,7 @@ struct hnae3_ae_ops {
|
||||
int (*rm_mc_addr)(struct hnae3_handle *handle,
|
||||
const unsigned char *addr);
|
||||
void (*set_tso_stats)(struct hnae3_handle *handle, int enable);
|
||||
void (*update_stats)(struct hnae3_handle *handle,
|
||||
struct net_device_stats *net_stats);
|
||||
void (*update_stats)(struct hnae3_handle *handle);
|
||||
void (*get_stats)(struct hnae3_handle *handle, u64 *data);
|
||||
void (*get_mac_stats)(struct hnae3_handle *handle,
|
||||
struct hns3_mac_stats *mac_stats);
|
||||
|
@ -305,8 +305,7 @@ int hclge_comm_set_rss_indir_table(struct hnae3_ae_dev *ae_dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int hclge_comm_set_rss_input_tuple(struct hnae3_handle *nic,
|
||||
struct hclge_comm_hw *hw, bool is_pf,
|
||||
int hclge_comm_set_rss_input_tuple(struct hclge_comm_hw *hw,
|
||||
struct hclge_comm_rss_cfg *rss_cfg)
|
||||
{
|
||||
struct hclge_comm_rss_input_tuple_cmd *req;
|
||||
|
@ -112,8 +112,7 @@ int hclge_comm_init_rss_tuple_cmd(struct hclge_comm_rss_cfg *rss_cfg,
|
||||
struct hnae3_ae_dev *ae_dev,
|
||||
struct hclge_comm_rss_input_tuple_cmd *req);
|
||||
u64 hclge_comm_convert_rss_tuple(u8 tuple_sets);
|
||||
int hclge_comm_set_rss_input_tuple(struct hnae3_handle *nic,
|
||||
struct hclge_comm_hw *hw, bool is_pf,
|
||||
int hclge_comm_set_rss_input_tuple(struct hclge_comm_hw *hw,
|
||||
struct hclge_comm_rss_cfg *rss_cfg);
|
||||
int hclge_comm_set_rss_indir_table(struct hnae3_ae_dev *ae_dev,
|
||||
struct hclge_comm_hw *hw, const u16 *indir);
|
||||
|
@ -438,19 +438,36 @@ static void hns3_dbg_fill_content(char *content, u16 len,
|
||||
const struct hns3_dbg_item *items,
|
||||
const char **result, u16 size)
|
||||
{
|
||||
#define HNS3_DBG_LINE_END_LEN 2
|
||||
char *pos = content;
|
||||
u16 item_len;
|
||||
u16 i;
|
||||
|
||||
memset(content, ' ', len);
|
||||
for (i = 0; i < size; i++) {
|
||||
if (result)
|
||||
strncpy(pos, result[i], strlen(result[i]));
|
||||
else
|
||||
strncpy(pos, items[i].name, strlen(items[i].name));
|
||||
|
||||
pos += strlen(items[i].name) + items[i].interval;
|
||||
if (!len) {
|
||||
return;
|
||||
} else if (len <= HNS3_DBG_LINE_END_LEN) {
|
||||
*pos++ = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
memset(content, ' ', len);
|
||||
len -= HNS3_DBG_LINE_END_LEN;
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
item_len = strlen(items[i].name) + items[i].interval;
|
||||
if (len < item_len)
|
||||
break;
|
||||
|
||||
if (result) {
|
||||
if (item_len < strlen(result[i]))
|
||||
break;
|
||||
strscpy(pos, result[i], strlen(result[i]));
|
||||
} else {
|
||||
strscpy(pos, items[i].name, strlen(items[i].name));
|
||||
}
|
||||
pos += item_len;
|
||||
len -= item_len;
|
||||
}
|
||||
*pos++ = '\n';
|
||||
*pos++ = '\0';
|
||||
}
|
||||
@ -941,8 +958,7 @@ static const struct hns3_dbg_item tx_bd_info_items[] = {
|
||||
{ "MSS_HW_CSUM", 0 },
|
||||
};
|
||||
|
||||
static void hns3_dump_tx_bd_info(struct hns3_nic_priv *priv,
|
||||
struct hns3_desc *desc, char **result, int idx)
|
||||
static void hns3_dump_tx_bd_info(struct hns3_desc *desc, char **result, int idx)
|
||||
{
|
||||
unsigned int j = 0;
|
||||
|
||||
@ -991,7 +1007,7 @@ static int hns3_dbg_tx_bd_info(struct hns3_dbg_data *d, char *buf, int len)
|
||||
for (i = 0; i < ring->desc_num; i++) {
|
||||
desc = &ring->desc[i];
|
||||
|
||||
hns3_dump_tx_bd_info(priv, desc, result, i);
|
||||
hns3_dump_tx_bd_info(desc, result, i);
|
||||
hns3_dbg_fill_content(content, sizeof(content),
|
||||
tx_bd_info_items, (const char **)result,
|
||||
ARRAY_SIZE(tx_bd_info_items));
|
||||
|
@ -2538,7 +2538,7 @@ static void hns3_nic_get_stats64(struct net_device *netdev,
|
||||
if (test_bit(HNS3_NIC_STATE_DOWN, &priv->state))
|
||||
return;
|
||||
|
||||
handle->ae_algo->ops->update_stats(handle, &netdev->stats);
|
||||
handle->ae_algo->ops->update_stats(handle);
|
||||
|
||||
memset(&ring_total_stats, 0, sizeof(ring_total_stats));
|
||||
for (idx = 0; idx < queue_num; idx++) {
|
||||
|
@ -228,7 +228,7 @@ static u32 hns3_lb_check_rx_ring(struct hns3_nic_priv *priv, u32 budget)
|
||||
}
|
||||
|
||||
static void hns3_lb_clear_tx_ring(struct hns3_nic_priv *priv, u32 start_ringid,
|
||||
u32 end_ringid, u32 budget)
|
||||
u32 end_ringid)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
@ -295,8 +295,7 @@ static int hns3_lp_run_test(struct net_device *ndev, enum hnae3_loop mode)
|
||||
|
||||
out:
|
||||
hns3_lb_clear_tx_ring(priv, HNS3_NIC_LB_TEST_RING_ID,
|
||||
HNS3_NIC_LB_TEST_RING_ID,
|
||||
HNS3_NIC_LB_TEST_PKT_NUM);
|
||||
HNS3_NIC_LB_TEST_RING_ID);
|
||||
|
||||
kfree_skb(skb);
|
||||
return ret_val;
|
||||
@ -618,7 +617,7 @@ static void hns3_get_stats(struct net_device *netdev,
|
||||
return;
|
||||
}
|
||||
|
||||
h->ae_algo->ops->update_stats(h, &netdev->stats);
|
||||
h->ae_algo->ops->update_stats(h);
|
||||
|
||||
/* get per-queue stats */
|
||||
p = hns3_get_stats_tqps(h, p);
|
||||
|
@ -88,16 +88,35 @@ static void hclge_dbg_fill_content(char *content, u16 len,
|
||||
const struct hclge_dbg_item *items,
|
||||
const char **result, u16 size)
|
||||
{
|
||||
#define HCLGE_DBG_LINE_END_LEN 2
|
||||
char *pos = content;
|
||||
u16 item_len;
|
||||
u16 i;
|
||||
|
||||
if (!len) {
|
||||
return;
|
||||
} else if (len <= HCLGE_DBG_LINE_END_LEN) {
|
||||
*pos++ = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
memset(content, ' ', len);
|
||||
len -= HCLGE_DBG_LINE_END_LEN;
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
if (result)
|
||||
strncpy(pos, result[i], strlen(result[i]));
|
||||
else
|
||||
strncpy(pos, items[i].name, strlen(items[i].name));
|
||||
pos += strlen(items[i].name) + items[i].interval;
|
||||
item_len = strlen(items[i].name) + items[i].interval;
|
||||
if (len < item_len)
|
||||
break;
|
||||
|
||||
if (result) {
|
||||
if (item_len < strlen(result[i]))
|
||||
break;
|
||||
strscpy(pos, result[i], strlen(result[i]));
|
||||
} else {
|
||||
strscpy(pos, items[i].name, strlen(items[i].name));
|
||||
}
|
||||
pos += item_len;
|
||||
len -= item_len;
|
||||
}
|
||||
*pos++ = '\n';
|
||||
*pos++ = '\0';
|
||||
|
@ -689,8 +689,7 @@ static void hclge_update_stats_for_all(struct hclge_dev *hdev)
|
||||
"Update MAC stats fail, status = %d.\n", status);
|
||||
}
|
||||
|
||||
static void hclge_update_stats(struct hnae3_handle *handle,
|
||||
struct net_device_stats *net_stats)
|
||||
static void hclge_update_stats(struct hnae3_handle *handle)
|
||||
{
|
||||
struct hclge_vport *vport = hclge_get_vport(handle);
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
@ -824,7 +823,7 @@ static void hclge_get_mac_stat(struct hnae3_handle *handle,
|
||||
struct hclge_vport *vport = hclge_get_vport(handle);
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
|
||||
hclge_update_stats(handle, NULL);
|
||||
hclge_update_stats(handle);
|
||||
|
||||
mac_stats->tx_pause_cnt = hdev->mac_stats.mac_tx_mac_pause_num;
|
||||
mac_stats->rx_pause_cnt = hdev->mac_stats.mac_rx_mac_pause_num;
|
||||
@ -4965,9 +4964,7 @@ int hclge_rss_init_hw(struct hclge_dev *hdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_comm_set_rss_input_tuple(&hdev->vport[0].nic,
|
||||
&hdev->hw.hw, true,
|
||||
&hdev->rss_cfg);
|
||||
ret = hclge_comm_set_rss_input_tuple(&hdev->hw.hw, &hdev->rss_cfg);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -6243,8 +6240,7 @@ static int hclge_fd_check_spec(struct hclge_dev *hdev,
|
||||
return hclge_fd_check_ext_tuple(hdev, fs, unused_tuple);
|
||||
}
|
||||
|
||||
static void hclge_fd_get_tcpip4_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static void hclge_fd_get_tcpip4_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule, u8 ip_proto)
|
||||
{
|
||||
rule->tuples.src_ip[IPV4_INDEX] =
|
||||
@ -6273,8 +6269,7 @@ static void hclge_fd_get_tcpip4_tuple(struct hclge_dev *hdev,
|
||||
rule->tuples_mask.ip_proto = 0xFF;
|
||||
}
|
||||
|
||||
static void hclge_fd_get_ip4_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static void hclge_fd_get_ip4_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule)
|
||||
{
|
||||
rule->tuples.src_ip[IPV4_INDEX] =
|
||||
@ -6297,8 +6292,7 @@ static void hclge_fd_get_ip4_tuple(struct hclge_dev *hdev,
|
||||
rule->tuples_mask.ether_proto = 0xFFFF;
|
||||
}
|
||||
|
||||
static void hclge_fd_get_tcpip6_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static void hclge_fd_get_tcpip6_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule, u8 ip_proto)
|
||||
{
|
||||
be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.tcp_ip6_spec.ip6src,
|
||||
@ -6327,8 +6321,7 @@ static void hclge_fd_get_tcpip6_tuple(struct hclge_dev *hdev,
|
||||
rule->tuples_mask.ip_proto = 0xFF;
|
||||
}
|
||||
|
||||
static void hclge_fd_get_ip6_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static void hclge_fd_get_ip6_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule)
|
||||
{
|
||||
be32_to_cpu_array(rule->tuples.src_ip, fs->h_u.usr_ip6_spec.ip6src,
|
||||
@ -6351,8 +6344,7 @@ static void hclge_fd_get_ip6_tuple(struct hclge_dev *hdev,
|
||||
rule->tuples_mask.ether_proto = 0xFFFF;
|
||||
}
|
||||
|
||||
static void hclge_fd_get_ether_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static void hclge_fd_get_ether_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule)
|
||||
{
|
||||
ether_addr_copy(rule->tuples.src_mac, fs->h_u.ether_spec.h_source);
|
||||
@ -6388,8 +6380,7 @@ static void hclge_fd_get_user_def_tuple(struct hclge_fd_user_def_info *info,
|
||||
rule->ep.user_def = *info;
|
||||
}
|
||||
|
||||
static int hclge_fd_get_tuple(struct hclge_dev *hdev,
|
||||
struct ethtool_rx_flow_spec *fs,
|
||||
static int hclge_fd_get_tuple(struct ethtool_rx_flow_spec *fs,
|
||||
struct hclge_fd_rule *rule,
|
||||
struct hclge_fd_user_def_info *info)
|
||||
{
|
||||
@ -6397,31 +6388,31 @@ static int hclge_fd_get_tuple(struct hclge_dev *hdev,
|
||||
|
||||
switch (flow_type) {
|
||||
case SCTP_V4_FLOW:
|
||||
hclge_fd_get_tcpip4_tuple(hdev, fs, rule, IPPROTO_SCTP);
|
||||
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_SCTP);
|
||||
break;
|
||||
case TCP_V4_FLOW:
|
||||
hclge_fd_get_tcpip4_tuple(hdev, fs, rule, IPPROTO_TCP);
|
||||
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_TCP);
|
||||
break;
|
||||
case UDP_V4_FLOW:
|
||||
hclge_fd_get_tcpip4_tuple(hdev, fs, rule, IPPROTO_UDP);
|
||||
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_UDP);
|
||||
break;
|
||||
case IP_USER_FLOW:
|
||||
hclge_fd_get_ip4_tuple(hdev, fs, rule);
|
||||
hclge_fd_get_ip4_tuple(fs, rule);
|
||||
break;
|
||||
case SCTP_V6_FLOW:
|
||||
hclge_fd_get_tcpip6_tuple(hdev, fs, rule, IPPROTO_SCTP);
|
||||
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_SCTP);
|
||||
break;
|
||||
case TCP_V6_FLOW:
|
||||
hclge_fd_get_tcpip6_tuple(hdev, fs, rule, IPPROTO_TCP);
|
||||
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_TCP);
|
||||
break;
|
||||
case UDP_V6_FLOW:
|
||||
hclge_fd_get_tcpip6_tuple(hdev, fs, rule, IPPROTO_UDP);
|
||||
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_UDP);
|
||||
break;
|
||||
case IPV6_USER_FLOW:
|
||||
hclge_fd_get_ip6_tuple(hdev, fs, rule);
|
||||
hclge_fd_get_ip6_tuple(fs, rule);
|
||||
break;
|
||||
case ETHER_FLOW:
|
||||
hclge_fd_get_ether_tuple(hdev, fs, rule);
|
||||
hclge_fd_get_ether_tuple(fs, rule);
|
||||
break;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
@ -6578,7 +6569,7 @@ static int hclge_add_fd_entry(struct hnae3_handle *handle,
|
||||
if (!rule)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = hclge_fd_get_tuple(hdev, fs, rule, &info);
|
||||
ret = hclge_fd_get_tuple(fs, rule, &info);
|
||||
if (ret) {
|
||||
kfree(rule);
|
||||
return ret;
|
||||
|
@ -835,15 +835,10 @@ struct hclge_vf_vlan_cfg {
|
||||
* Then for input key(k) and mask(v), we can calculate the value by
|
||||
* the formulae:
|
||||
* x = (~k) & v
|
||||
* y = (k ^ ~v) & k
|
||||
* y = k & v
|
||||
*/
|
||||
#define calc_x(x, k, v) (x = ~(k) & (v))
|
||||
#define calc_y(y, k, v) \
|
||||
do { \
|
||||
const typeof(k) _k_ = (k); \
|
||||
const typeof(v) _v_ = (v); \
|
||||
(y) = (_k_ ^ ~_v_) & (_k_); \
|
||||
} while (0)
|
||||
#define calc_x(x, k, v) ((x) = ~(k) & (v))
|
||||
#define calc_y(y, k, v) ((y) = (k) & (v))
|
||||
|
||||
#define HCLGE_MAC_STATS_FIELD_OFF(f) (offsetof(struct hclge_mac_stats, f))
|
||||
#define HCLGE_STATS_READ(p, offset) (*(u64 *)((u8 *)(p) + (offset)))
|
||||
|
@ -121,8 +121,7 @@ static struct hclgevf_dev *hclgevf_ae_get_hdev(struct hnae3_handle *handle)
|
||||
return container_of(handle, struct hclgevf_dev, nic);
|
||||
}
|
||||
|
||||
static void hclgevf_update_stats(struct hnae3_handle *handle,
|
||||
struct net_device_stats *net_stats)
|
||||
static void hclgevf_update_stats(struct hnae3_handle *handle)
|
||||
{
|
||||
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
|
||||
int status;
|
||||
@ -1645,8 +1644,7 @@ err_reset:
|
||||
hclgevf_reset_err_handle(hdev);
|
||||
}
|
||||
|
||||
static enum hnae3_reset_type hclgevf_get_reset_level(struct hclgevf_dev *hdev,
|
||||
unsigned long *addr)
|
||||
static enum hnae3_reset_type hclgevf_get_reset_level(unsigned long *addr)
|
||||
{
|
||||
enum hnae3_reset_type rst_level = HNAE3_NONE_RESET;
|
||||
|
||||
@ -1685,8 +1683,7 @@ static void hclgevf_reset_event(struct pci_dev *pdev,
|
||||
|
||||
if (hdev->default_reset_request)
|
||||
hdev->reset_level =
|
||||
hclgevf_get_reset_level(hdev,
|
||||
&hdev->default_reset_request);
|
||||
hclgevf_get_reset_level(&hdev->default_reset_request);
|
||||
else
|
||||
hdev->reset_level = HNAE3_VF_FUNC_RESET;
|
||||
|
||||
@ -1828,7 +1825,7 @@ static void hclgevf_reset_service_task(struct hclgevf_dev *hdev)
|
||||
|
||||
hdev->last_reset_time = jiffies;
|
||||
hdev->reset_type =
|
||||
hclgevf_get_reset_level(hdev, &hdev->reset_pending);
|
||||
hclgevf_get_reset_level(&hdev->reset_pending);
|
||||
if (hdev->reset_type != HNAE3_NONE_RESET)
|
||||
hclgevf_reset(hdev);
|
||||
} else if (test_and_clear_bit(HCLGEVF_RESET_REQUESTED,
|
||||
@ -2160,8 +2157,7 @@ static int hclgevf_rss_init_hw(struct hclgevf_dev *hdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = hclge_comm_set_rss_input_tuple(&hdev->nic, &hdev->hw.hw,
|
||||
false, rss_cfg);
|
||||
ret = hclge_comm_set_rss_input_tuple(&hdev->hw.hw, rss_cfg);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user