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 struct hinic3_sq_attr { 26 u8 dma_attr_off; 27 u8 pending_limit; 28 u8 coalescing_time; 29 u8 intr_en; 30 u16 intr_idx; 31 u32 l2nic_sqn; 32 u64 ci_dma_base; 33 }; 34 35 int hinic3_get_nic_feature_from_hw(struct hinic3_nic_dev *nic_dev); 36 int hinic3_set_nic_feature_to_hw(struct hinic3_nic_dev *nic_dev); 37 bool hinic3_test_support(struct hinic3_nic_dev *nic_dev, 38 enum hinic3_nic_feature_cap feature_bits); 39 void hinic3_update_nic_feature(struct hinic3_nic_dev *nic_dev, u64 feature_cap); 40 41 int hinic3_init_function_table(struct hinic3_nic_dev *nic_dev); 42 int hinic3_set_port_mtu(struct net_device *netdev, u16 new_mtu); 43 44 int hinic3_set_mac(struct hinic3_hwdev *hwdev, const u8 *mac_addr, u16 vlan_id, 45 u16 func_id); 46 int hinic3_del_mac(struct hinic3_hwdev *hwdev, const u8 *mac_addr, u16 vlan_id, 47 u16 func_id); 48 int hinic3_update_mac(struct hinic3_hwdev *hwdev, const u8 *old_mac, 49 u8 *new_mac, u16 vlan_id, u16 func_id); 50 51 int hinic3_set_ci_table(struct hinic3_hwdev *hwdev, 52 struct hinic3_sq_attr *attr); 53 int hinic3_flush_qps_res(struct hinic3_hwdev *hwdev); 54 int hinic3_force_drop_tx_pkt(struct hinic3_hwdev *hwdev); 55 56 int hinic3_sync_dcb_state(struct hinic3_hwdev *hwdev, u8 op_code, u8 state); 57 int hinic3_get_link_status(struct hinic3_hwdev *hwdev, bool *link_status_up); 58 int hinic3_set_vport_enable(struct hinic3_hwdev *hwdev, u16 func_id, 59 bool enable); 60 61 #endif 62