]> Git Repo - J-linux.git/blob - drivers/net/ethernet/intel/ice/ice_lag.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / net / ethernet / intel / ice / ice_lag.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2018-2021, Intel Corporation. */
3
4 #ifndef _ICE_LAG_H_
5 #define _ICE_LAG_H_
6
7 #include <linux/netdevice.h>
8
9 /* LAG roles for netdev */
10 enum ice_lag_role {
11         ICE_LAG_NONE,
12         ICE_LAG_PRIMARY,
13         ICE_LAG_BACKUP,
14         ICE_LAG_UNSET
15 };
16
17 #define ICE_LAG_INVALID_PORT 0xFF
18
19 #define ICE_LAG_RESET_RETRIES           5
20 #define ICE_SW_DEFAULT_PROFILE          0
21 #define ICE_FV_PROT_MDID                255
22 #define ICE_LP_EXT_BUF_OFFSET           32
23
24 struct ice_pf;
25 struct ice_vf;
26
27 struct ice_lag_netdev_list {
28         struct list_head node;
29         struct net_device *netdev;
30 };
31
32 /* LAG info struct */
33 struct ice_lag {
34         struct ice_pf *pf; /* backlink to PF struct */
35         struct net_device *netdev; /* this PF's netdev */
36         struct net_device *upper_netdev; /* upper bonding netdev */
37         struct list_head *netdev_head;
38         struct notifier_block notif_block;
39         s32 bond_mode;
40         u16 bond_swid; /* swid for primary interface */
41         u8 active_port; /* lport value for the current active port */
42         u8 bonded:1; /* currently bonded */
43         u8 primary:1; /* this is primary */
44         u16 pf_recipe;
45         u16 lport_recipe;
46         u16 pf_rx_rule_id;
47         u16 pf_tx_rule_id;
48         u16 cp_rule_idx;
49         u16 lport_rule_idx;
50         u8 role;
51 };
52
53 /* LAG workqueue struct */
54 struct ice_lag_work {
55         struct work_struct lag_task;
56         struct ice_lag_netdev_list netdev_list;
57         struct ice_lag *lag;
58         unsigned long event;
59         struct net_device *event_netdev;
60         union {
61                 struct netdev_notifier_changeupper_info changeupper_info;
62                 struct netdev_notifier_bonding_info bonding_info;
63                 struct netdev_notifier_info notifier_info;
64         } info;
65 };
66
67 void ice_lag_move_new_vf_nodes(struct ice_vf *vf);
68 int ice_init_lag(struct ice_pf *pf);
69 void ice_deinit_lag(struct ice_pf *pf);
70 void ice_lag_rebuild(struct ice_pf *pf);
71 bool ice_lag_is_switchdev_running(struct ice_pf *pf);
72 void ice_lag_move_vf_nodes_cfg(struct ice_lag *lag, u8 src_prt, u8 dst_prt);
73 #endif /* _ICE_LAG_H_ */
This page took 0.029795 seconds and 4 git commands to generate.