FILE
hns_roce_bond.h
File preview with syntax highlighting.
linux-6.19.14/drivers/infiniband/hw/hns/hns_roce_bond.h
1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * Copyright (c) 2025 Hisilicon Limited. 4 */ 5 6#ifndef _HNS_ROCE_BOND_H 7#define _HNS_ROCE_BOND_H 8 9#include <linux/netdevice.h> 10#include <net/bonding.h> 11 12#define ROCE_BOND_FUNC_MAX 4 13#define ROCE_BOND_NUM_MAX 2 14 15#define BOND_ID(id) BIT(id) 16 17#define BOND_ERR_LOG(fmt, ...) \ 18 pr_err("HNS RoCE Bonding: " fmt, ##__VA_ARGS__) 19 20enum { 21 BOND_MODE_1, 22 BOND_MODE_2_4, 23}; 24 25enum hns_roce_bond_hashtype { 26 BOND_HASH_L2, 27 BOND_HASH_L34, 28 BOND_HASH_L23, 29}; 30 31enum bond_support_type { 32 BOND_NOT_SUPPORT, 33 /* 34 * bond_grp already exists, but in the current 35 * conditions it's no longer supported 36 */ 37 BOND_EXISTING_NOT_SUPPORT, 38 BOND_SUPPORT, 39}; 40 41enum hns_roce_bond_state { 42 HNS_ROCE_BOND_NOT_ATTACHED, 43 HNS_ROCE_BOND_NOT_BONDED, 44 HNS_ROCE_BOND_IS_BONDED, 45 HNS_ROCE_BOND_SLAVE_CHANGE_NUM, 46 HNS_ROCE_BOND_SLAVE_CHANGESTATE, 47}; 48 49enum hns_roce_bond_cmd_type { 50 HNS_ROCE_SET_BOND, 51 HNS_ROCE_CHANGE_BOND, 52 HNS_ROCE_CLEAR_BOND, 53}; 54 55struct hns_roce_func_info { 56 struct net_device *net_dev; 57 struct hnae3_handle *handle; 58}; 59 60struct hns_roce_bond_group { 61 struct net_device *upper_dev; 62 struct hns_roce_dev *main_hr_dev; 63 u8 active_slave_num; 64 u32 slave_map; 65 u32 active_slave_map; 66 u8 bond_id; 67 u8 bus_num; 68 struct hns_roce_func_info bond_func_info[ROCE_BOND_FUNC_MAX]; 69 bool bond_ready; 70 enum hns_roce_bond_state bond_state; 71 enum netdev_lag_tx_type tx_type; 72 enum netdev_lag_hash hash_type; 73 struct mutex bond_mutex; 74 struct notifier_block bond_nb; 75 struct delayed_work bond_work; 76}; 77 78struct hns_roce_die_info { 79 u8 bond_id_mask; 80 struct hns_roce_bond_group *bgrps[ROCE_BOND_NUM_MAX]; 81 struct mutex die_mutex; 82 u8 suspend_cnt; 83}; 84 85struct hns_roce_bond_group *hns_roce_get_bond_grp(struct net_device *net_dev, 86 u8 bus_num); 87int hns_roce_alloc_bond_grp(struct hns_roce_dev *hr_dev); 88void hns_roce_dealloc_bond_grp(void); 89void hns_roce_cleanup_bond(struct hns_roce_bond_group *bond_grp); 90bool hns_roce_bond_is_active(struct hns_roce_dev *hr_dev); 91int hns_roce_bond_init(struct hns_roce_dev *hr_dev); 92void hns_roce_bond_suspend(struct hnae3_handle *handle); 93void hns_roce_bond_resume(struct hnae3_handle *handle); 94 95#endif
~/
Read-only file preview.