1description: >
2    This defines network bonding parameters.
3
4# TODO Fix it through https://github.com/openbmc/openbmc/issues/1438
5# creatable: true
6
7properties:
8    - name: InterfaceName
9      type: string
10      description: >
11          Name of the interface.
12    - name: BondedInterfaces
13      type: array[string]
14      description: >
15          Interfaces which needs to be bonded.
16    - name: Mode
17      type: enum[self.BondingMode]
18      description: >
19          Network interface bonding modes.
20      default: RoundRobin
21    - name: TransmitHashPolicy
22      type: enum[self.HashPolicy]
23      description:
24          Selects the transmit hash policy to use for slave selection in
25          balance-xor, 802.3ad, and tlb modes.
26      default: Layer2
27
28enumerations:
29    - name: BondingMode
30      description: >
31          Possible bonding mode types.
32      values:
33        - name: RoundRobin
34          description: >
35              It is the default mode,in this mode system transmits packets in
36              sequential order from the first available slave through the last.
37        - name: ActiveBackup
38          description: >
39              In this mode, only one slave in the bond is active.
40              The other one will become active, only when the active slave fails.
41        - name: XOR
42          description: >
43              Transmit based on selectable hashing algorithm.
44              The default policy is a simple source+destination MAC address algorithm.
45        - name: Broadcast
46          description: >
47              Transmits everything on all slave interfaces.
48        - name: Dynamic
49          description: >
50              IEEE 802.3ad Dynamic link aggregation.
51        - name: TLB
52          description: >
53              The outgoing traffic is distributed according to the current load on each slave.
54        - name: ALB
55          description: >
56              Incoming/outgoing traffic is distributed according to the current load on each slave.
57
58    - name: HashPolicy
59      description: >
60          Possible policy types.
61      values:
62        - name: Layer2
63          description: >
64              This policy uses XOR of hardware MAC addresses and packet type ID
65              field to generate the hash.
66        - name: Layer2Plus3
67          description: >
68              This policy uses a combination of layer2 and layer3
69              protocol information to generate the hash.
70        - name: Layer3Plus4
71          description: >
72              This policy uses upper layer protocol information,
73              when available, to generate the hash.
74        - name: Encap2Plus3
75          description: >
76              This policy uses the same formula as layer2+3 but it
77              relies on skb_flow_dissect to obtain the header fields
78              which might result in the use of inner headers if an
79              encapsulation protocol is used.
80        - name: Encap3Plus4
81          description: >
82              This policy uses the same formula as layer3+4 but it
83              relies on skb_flow_dissect to obtain the header fields
84              which might result in the use of inner headers if an
85              encapsulation protocol is used.
86