[RCAR] disable a default config in kernel
[AGL/meta-agl.git] / meta-agl-profile-core / recipes-core / systemd / systemd / 0002-network-add-CAN-Termination-tristate-option.patch
1 From 1e6ffb3129340291027d2690631f62eb7d0e0a78 Mon Sep 17 00:00:00 2001
2 From: Matt Ranostay <matt.ranostay@konsulko.com>
3 Date: Tue, 11 Feb 2020 18:13:45 -0800
4 Subject: [PATCH] network: add CAN Termination tristate option
5
6 Upstream-Status: Submitted
7 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
8 ---
9  src/libsystemd/sd-netlink/netlink-types.c        |  1 +
10  src/network/networkd-can.c                       | 13 +++++++++++++
11  src/network/networkd-network-gperf.gperf         |  1 +
12  src/network/networkd-network.c                   |  1 +
13  src/network/networkd-network.h                   |  1 +
14  test/fuzz/fuzz-network-parser/directives.network |  1 +
15  6 files changed, 18 insertions(+)
16
17 diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
18 index a55460f034..96e211dcf0 100644
19 --- a/src/libsystemd/sd-netlink/netlink-types.c
20 +++ b/src/libsystemd/sd-netlink/netlink-types.c
21 @@ -316,6 +316,7 @@ static const NLType rtnl_link_info_data_can_types[] = {
22          [IFLA_CAN_BITTIMING]            = { .size = sizeof(struct can_bittiming) },
23          [IFLA_CAN_RESTART_MS]           = { .type = NETLINK_TYPE_U32 },
24          [IFLA_CAN_CTRLMODE]             = { .size = sizeof(struct can_ctrlmode) },
25 +        [IFLA_CAN_TERMINATION]          = { .type = NETLINK_TYPE_U16 },
26  };
27  
28  static const NLType rtnl_link_info_data_macsec_types[] = {
29 diff --git a/src/network/networkd-can.c b/src/network/networkd-can.c
30 index 5755df57bd..3abe8ae2ed 100644
31 --- a/src/network/networkd-can.c
32 +++ b/src/network/networkd-can.c
33 @@ -9,6 +9,8 @@
34  #include "networkd-manager.h"
35  #include "string-util.h"
36  
37 +#define CAN_TERMINATION_OHM_VALUE 120
38 +
39  static int link_up_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
40          int r;
41  
42 @@ -152,6 +154,17 @@ static int link_set_can(Link *link) {
43                          return log_link_error_errno(link, r, "Could not append IFLA_CAN_CTRLMODE attribute: %m");
44          }
45  
46 +        if (link->network->can_termination >= 0) {
47 +
48 +                log_link_debug(link, "%sabling can-termination", link->network->can_termination ? "En" : "Dis");
49 +
50 +                r = sd_netlink_message_append_u16(m, IFLA_CAN_TERMINATION,
51 +                               link->network->can_termination ? CAN_TERMINATION_OHM_VALUE : 0);
52 +                if (r < 0)
53 +                        return log_link_error_errno(link, r, "Could not append IFLA_CAN_TERMINATION attribute: %m");
54 +
55 +        }
56 +
57          r = sd_netlink_message_close_container(m);
58          if (r < 0)
59                  return log_link_error_errno(link, r, "Failed to close netlink container: %m");
60 diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf
61 index f7e68be181..b3df4f3960 100644
62 --- a/src/network/networkd-network-gperf.gperf
63 +++ b/src/network/networkd-network-gperf.gperf
64 @@ -245,6 +245,7 @@ CAN.BitRate,                            config_parse_si_size,
65  CAN.SamplePoint,                        config_parse_permille,                           0,                             offsetof(Network, can_sample_point)
66  CAN.RestartSec,                         config_parse_sec,                                0,                             offsetof(Network, can_restart_us)
67  CAN.TripleSampling,                     config_parse_tristate,                           0,                             offsetof(Network, can_triple_sampling)
68 +CAN.Termination,                        config_parse_tristate,                           0,                             offsetof(Network, can_termination)
69  TrafficControlQueueingDiscipline.Parent,                             config_parse_tc_qdiscs_parent,                     0,                             0
70  TrafficControlQueueingDiscipline.NetworkEmulatorDelaySec,            config_parse_tc_network_emulator_delay,            0,                             0
71  TrafficControlQueueingDiscipline.NetworkEmulatorDelayJitterSec,      config_parse_tc_network_emulator_delay,            0,                             0
72 diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
73 index 6e443975f1..0ea5c05db7 100644
74 --- a/src/network/networkd-network.c
75 +++ b/src/network/networkd-network.c
76 @@ -448,6 +448,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
77                  .keep_configuration = _KEEP_CONFIGURATION_INVALID,
78  
79                  .can_triple_sampling = -1,
80 +                .can_termination = -1,
81                  .ip_service_type = -1,
82          };
83  
84 diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h
85 index aa74bb4ae7..6a1f094156 100644
86 --- a/src/network/networkd-network.h
87 +++ b/src/network/networkd-network.h
88 @@ -193,6 +193,7 @@ struct Network {
89          unsigned can_sample_point;
90          usec_t can_restart_us;
91          int can_triple_sampling;
92 +        int can_termination;
93  
94          AddressFamily ip_forward;
95          bool ip_masquerade;
96 diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network
97 index 5bd80dece8..781269d960 100644
98 --- a/test/fuzz/fuzz-network-parser/directives.network
99 +++ b/test/fuzz/fuzz-network-parser/directives.network
100 @@ -194,6 +194,7 @@ SamplePoint=
101  BitRate=
102  RestartSec=
103  TripleSampling=
104 +Termination=
105  [Address]
106  DuplicateAddressDetection=
107  AutoJoin=