xref: /linux/drivers/net/ethernet/huawei/hinic3/hinic3_nic_cfg.h (revision e78f70bad29c5ae1e1076698b690b15794e9b81e)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved. */
3 
4 #ifndef _HINIC3_NIC_CFG_H_
5 #define _HINIC3_NIC_CFG_H_
6 
7 #include <linux/types.h>
8 
9 #include "hinic3_hw_intf.h"
10 #include "hinic3_mgmt_interface.h"
11 
12 struct hinic3_hwdev;
13 struct hinic3_nic_dev;
14 
15 #define HINIC3_MIN_MTU_SIZE          256
16 #define HINIC3_MAX_JUMBO_FRAME_SIZE  9600
17 
18 #define HINIC3_VLAN_ID_MASK          0x7FFF
19 
20 enum hinic3_nic_event_type {
21 	HINIC3_NIC_EVENT_LINK_DOWN = 0,
22 	HINIC3_NIC_EVENT_LINK_UP   = 1,
23 };
24 
25 int hinic3_set_nic_feature_to_hw(struct hinic3_nic_dev *nic_dev);
26 bool hinic3_test_support(struct hinic3_nic_dev *nic_dev,
27 			 enum hinic3_nic_feature_cap feature_bits);
28 void hinic3_update_nic_feature(struct hinic3_nic_dev *nic_dev, u64 feature_cap);
29 
30 int hinic3_set_port_mtu(struct net_device *netdev, u16 new_mtu);
31 
32 int hinic3_set_mac(struct hinic3_hwdev *hwdev, const u8 *mac_addr, u16 vlan_id,
33 		   u16 func_id);
34 int hinic3_del_mac(struct hinic3_hwdev *hwdev, const u8 *mac_addr, u16 vlan_id,
35 		   u16 func_id);
36 int hinic3_update_mac(struct hinic3_hwdev *hwdev, const u8 *old_mac,
37 		      u8 *new_mac, u16 vlan_id, u16 func_id);
38 
39 int hinic3_force_drop_tx_pkt(struct hinic3_hwdev *hwdev);
40 
41 #endif
42