162306a36Sopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ 262306a36Sopenharmony_ci/* Do not edit directly, auto-generated from: */ 362306a36Sopenharmony_ci/* Documentation/netlink/specs/ethtool.yaml */ 462306a36Sopenharmony_ci/* YNL-GEN user header */ 562306a36Sopenharmony_ci/* YNL-ARG --user-header linux/ethtool_netlink.h --exclude-op stats-get */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _LINUX_ETHTOOL_GEN_H 862306a36Sopenharmony_ci#define _LINUX_ETHTOOL_GEN_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <stdlib.h> 1162306a36Sopenharmony_ci#include <string.h> 1262306a36Sopenharmony_ci#include <linux/types.h> 1362306a36Sopenharmony_ci#include <linux/ethtool.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cistruct ynl_sock; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciextern const struct ynl_family ynl_ethtool_family; 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/* Enums */ 2062306a36Sopenharmony_ciconst char *ethtool_op_str(int op); 2162306a36Sopenharmony_ciconst char *ethtool_udp_tunnel_type_str(int value); 2262306a36Sopenharmony_ciconst char *ethtool_stringset_str(enum ethtool_stringset value); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* Common nested types */ 2562306a36Sopenharmony_cistruct ethtool_header { 2662306a36Sopenharmony_ci struct { 2762306a36Sopenharmony_ci __u32 dev_index:1; 2862306a36Sopenharmony_ci __u32 dev_name_len; 2962306a36Sopenharmony_ci __u32 flags:1; 3062306a36Sopenharmony_ci } _present; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci __u32 dev_index; 3362306a36Sopenharmony_ci char *dev_name; 3462306a36Sopenharmony_ci __u32 flags; 3562306a36Sopenharmony_ci}; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_cistruct ethtool_pause_stat { 3862306a36Sopenharmony_ci struct { 3962306a36Sopenharmony_ci __u32 tx_frames:1; 4062306a36Sopenharmony_ci __u32 rx_frames:1; 4162306a36Sopenharmony_ci } _present; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci __u64 tx_frames; 4462306a36Sopenharmony_ci __u64 rx_frames; 4562306a36Sopenharmony_ci}; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistruct ethtool_cable_test_tdr_cfg { 4862306a36Sopenharmony_ci struct { 4962306a36Sopenharmony_ci __u32 first:1; 5062306a36Sopenharmony_ci __u32 last:1; 5162306a36Sopenharmony_ci __u32 step:1; 5262306a36Sopenharmony_ci __u32 pair:1; 5362306a36Sopenharmony_ci } _present; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci __u32 first; 5662306a36Sopenharmony_ci __u32 last; 5762306a36Sopenharmony_ci __u32 step; 5862306a36Sopenharmony_ci __u8 pair; 5962306a36Sopenharmony_ci}; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cistruct ethtool_fec_stat { 6262306a36Sopenharmony_ci struct { 6362306a36Sopenharmony_ci __u32 corrected_len; 6462306a36Sopenharmony_ci __u32 uncorr_len; 6562306a36Sopenharmony_ci __u32 corr_bits_len; 6662306a36Sopenharmony_ci } _present; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci void *corrected; 6962306a36Sopenharmony_ci void *uncorr; 7062306a36Sopenharmony_ci void *corr_bits; 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cistruct ethtool_mm_stat { 7462306a36Sopenharmony_ci struct { 7562306a36Sopenharmony_ci __u32 reassembly_errors:1; 7662306a36Sopenharmony_ci __u32 smd_errors:1; 7762306a36Sopenharmony_ci __u32 reassembly_ok:1; 7862306a36Sopenharmony_ci __u32 rx_frag_count:1; 7962306a36Sopenharmony_ci __u32 tx_frag_count:1; 8062306a36Sopenharmony_ci __u32 hold_count:1; 8162306a36Sopenharmony_ci } _present; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci __u64 reassembly_errors; 8462306a36Sopenharmony_ci __u64 smd_errors; 8562306a36Sopenharmony_ci __u64 reassembly_ok; 8662306a36Sopenharmony_ci __u64 rx_frag_count; 8762306a36Sopenharmony_ci __u64 tx_frag_count; 8862306a36Sopenharmony_ci __u64 hold_count; 8962306a36Sopenharmony_ci}; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_cistruct ethtool_cable_result { 9262306a36Sopenharmony_ci struct { 9362306a36Sopenharmony_ci __u32 pair:1; 9462306a36Sopenharmony_ci __u32 code:1; 9562306a36Sopenharmony_ci } _present; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci __u8 pair; 9862306a36Sopenharmony_ci __u8 code; 9962306a36Sopenharmony_ci}; 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_cistruct ethtool_cable_fault_length { 10262306a36Sopenharmony_ci struct { 10362306a36Sopenharmony_ci __u32 pair:1; 10462306a36Sopenharmony_ci __u32 cm:1; 10562306a36Sopenharmony_ci } _present; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci __u8 pair; 10862306a36Sopenharmony_ci __u32 cm; 10962306a36Sopenharmony_ci}; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_cistruct ethtool_bitset_bit { 11262306a36Sopenharmony_ci struct { 11362306a36Sopenharmony_ci __u32 index:1; 11462306a36Sopenharmony_ci __u32 name_len; 11562306a36Sopenharmony_ci __u32 value:1; 11662306a36Sopenharmony_ci } _present; 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci __u32 index; 11962306a36Sopenharmony_ci char *name; 12062306a36Sopenharmony_ci}; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_cistruct ethtool_tunnel_udp_entry { 12362306a36Sopenharmony_ci struct { 12462306a36Sopenharmony_ci __u32 port:1; 12562306a36Sopenharmony_ci __u32 type:1; 12662306a36Sopenharmony_ci } _present; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci __u16 port /* big-endian */; 12962306a36Sopenharmony_ci __u32 type; 13062306a36Sopenharmony_ci}; 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_cistruct ethtool_string { 13362306a36Sopenharmony_ci struct { 13462306a36Sopenharmony_ci __u32 index:1; 13562306a36Sopenharmony_ci __u32 value_len; 13662306a36Sopenharmony_ci } _present; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci __u32 index; 13962306a36Sopenharmony_ci char *value; 14062306a36Sopenharmony_ci}; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_cistruct ethtool_cable_nest { 14362306a36Sopenharmony_ci struct { 14462306a36Sopenharmony_ci __u32 result:1; 14562306a36Sopenharmony_ci __u32 fault_length:1; 14662306a36Sopenharmony_ci } _present; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci struct ethtool_cable_result result; 14962306a36Sopenharmony_ci struct ethtool_cable_fault_length fault_length; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_cistruct ethtool_bitset_bits { 15362306a36Sopenharmony_ci unsigned int n_bit; 15462306a36Sopenharmony_ci struct ethtool_bitset_bit *bit; 15562306a36Sopenharmony_ci}; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_cistruct ethtool_strings { 15862306a36Sopenharmony_ci unsigned int n_string; 15962306a36Sopenharmony_ci struct ethtool_string *string; 16062306a36Sopenharmony_ci}; 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_cistruct ethtool_bitset { 16362306a36Sopenharmony_ci struct { 16462306a36Sopenharmony_ci __u32 nomask:1; 16562306a36Sopenharmony_ci __u32 size:1; 16662306a36Sopenharmony_ci __u32 bits:1; 16762306a36Sopenharmony_ci } _present; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci __u32 size; 17062306a36Sopenharmony_ci struct ethtool_bitset_bits bits; 17162306a36Sopenharmony_ci}; 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_cistruct ethtool_stringset_ { 17462306a36Sopenharmony_ci struct { 17562306a36Sopenharmony_ci __u32 id:1; 17662306a36Sopenharmony_ci __u32 count:1; 17762306a36Sopenharmony_ci } _present; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci __u32 id; 18062306a36Sopenharmony_ci __u32 count; 18162306a36Sopenharmony_ci unsigned int n_strings; 18262306a36Sopenharmony_ci struct ethtool_strings *strings; 18362306a36Sopenharmony_ci}; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_cistruct ethtool_tunnel_udp_table { 18662306a36Sopenharmony_ci struct { 18762306a36Sopenharmony_ci __u32 size:1; 18862306a36Sopenharmony_ci __u32 types:1; 18962306a36Sopenharmony_ci } _present; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci __u32 size; 19262306a36Sopenharmony_ci struct ethtool_bitset types; 19362306a36Sopenharmony_ci unsigned int n_entry; 19462306a36Sopenharmony_ci struct ethtool_tunnel_udp_entry *entry; 19562306a36Sopenharmony_ci}; 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_cistruct ethtool_stringsets { 19862306a36Sopenharmony_ci unsigned int n_stringset; 19962306a36Sopenharmony_ci struct ethtool_stringset_ *stringset; 20062306a36Sopenharmony_ci}; 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_cistruct ethtool_tunnel_udp { 20362306a36Sopenharmony_ci struct { 20462306a36Sopenharmony_ci __u32 table:1; 20562306a36Sopenharmony_ci } _present; 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci struct ethtool_tunnel_udp_table table; 20862306a36Sopenharmony_ci}; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_STRSET_GET ============== */ 21162306a36Sopenharmony_ci/* ETHTOOL_MSG_STRSET_GET - do */ 21262306a36Sopenharmony_cistruct ethtool_strset_get_req { 21362306a36Sopenharmony_ci struct { 21462306a36Sopenharmony_ci __u32 header:1; 21562306a36Sopenharmony_ci __u32 stringsets:1; 21662306a36Sopenharmony_ci __u32 counts_only:1; 21762306a36Sopenharmony_ci } _present; 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci struct ethtool_header header; 22062306a36Sopenharmony_ci struct ethtool_stringsets stringsets; 22162306a36Sopenharmony_ci}; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_cistatic inline struct ethtool_strset_get_req *ethtool_strset_get_req_alloc(void) 22462306a36Sopenharmony_ci{ 22562306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_strset_get_req)); 22662306a36Sopenharmony_ci} 22762306a36Sopenharmony_civoid ethtool_strset_get_req_free(struct ethtool_strset_get_req *req); 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_cistatic inline void 23062306a36Sopenharmony_ciethtool_strset_get_req_set_header_dev_index(struct ethtool_strset_get_req *req, 23162306a36Sopenharmony_ci __u32 dev_index) 23262306a36Sopenharmony_ci{ 23362306a36Sopenharmony_ci req->_present.header = 1; 23462306a36Sopenharmony_ci req->header._present.dev_index = 1; 23562306a36Sopenharmony_ci req->header.dev_index = dev_index; 23662306a36Sopenharmony_ci} 23762306a36Sopenharmony_cistatic inline void 23862306a36Sopenharmony_ciethtool_strset_get_req_set_header_dev_name(struct ethtool_strset_get_req *req, 23962306a36Sopenharmony_ci const char *dev_name) 24062306a36Sopenharmony_ci{ 24162306a36Sopenharmony_ci free(req->header.dev_name); 24262306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 24362306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 24462306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 24562306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 24662306a36Sopenharmony_ci} 24762306a36Sopenharmony_cistatic inline void 24862306a36Sopenharmony_ciethtool_strset_get_req_set_header_flags(struct ethtool_strset_get_req *req, 24962306a36Sopenharmony_ci __u32 flags) 25062306a36Sopenharmony_ci{ 25162306a36Sopenharmony_ci req->_present.header = 1; 25262306a36Sopenharmony_ci req->header._present.flags = 1; 25362306a36Sopenharmony_ci req->header.flags = flags; 25462306a36Sopenharmony_ci} 25562306a36Sopenharmony_cistatic inline void 25662306a36Sopenharmony_ci__ethtool_strset_get_req_set_stringsets_stringset(struct ethtool_strset_get_req *req, 25762306a36Sopenharmony_ci struct ethtool_stringset_ *stringset, 25862306a36Sopenharmony_ci unsigned int n_stringset) 25962306a36Sopenharmony_ci{ 26062306a36Sopenharmony_ci free(req->stringsets.stringset); 26162306a36Sopenharmony_ci req->stringsets.stringset = stringset; 26262306a36Sopenharmony_ci req->stringsets.n_stringset = n_stringset; 26362306a36Sopenharmony_ci} 26462306a36Sopenharmony_cistatic inline void 26562306a36Sopenharmony_ciethtool_strset_get_req_set_counts_only(struct ethtool_strset_get_req *req) 26662306a36Sopenharmony_ci{ 26762306a36Sopenharmony_ci req->_present.counts_only = 1; 26862306a36Sopenharmony_ci} 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_cistruct ethtool_strset_get_rsp { 27162306a36Sopenharmony_ci struct { 27262306a36Sopenharmony_ci __u32 header:1; 27362306a36Sopenharmony_ci __u32 stringsets:1; 27462306a36Sopenharmony_ci } _present; 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci struct ethtool_header header; 27762306a36Sopenharmony_ci struct ethtool_stringsets stringsets; 27862306a36Sopenharmony_ci}; 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_civoid ethtool_strset_get_rsp_free(struct ethtool_strset_get_rsp *rsp); 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci/* 28362306a36Sopenharmony_ci * Get string set from the kernel. 28462306a36Sopenharmony_ci */ 28562306a36Sopenharmony_cistruct ethtool_strset_get_rsp * 28662306a36Sopenharmony_ciethtool_strset_get(struct ynl_sock *ys, struct ethtool_strset_get_req *req); 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci/* ETHTOOL_MSG_STRSET_GET - dump */ 28962306a36Sopenharmony_cistruct ethtool_strset_get_req_dump { 29062306a36Sopenharmony_ci struct { 29162306a36Sopenharmony_ci __u32 header:1; 29262306a36Sopenharmony_ci __u32 stringsets:1; 29362306a36Sopenharmony_ci __u32 counts_only:1; 29462306a36Sopenharmony_ci } _present; 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci struct ethtool_header header; 29762306a36Sopenharmony_ci struct ethtool_stringsets stringsets; 29862306a36Sopenharmony_ci}; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_cistatic inline struct ethtool_strset_get_req_dump * 30162306a36Sopenharmony_ciethtool_strset_get_req_dump_alloc(void) 30262306a36Sopenharmony_ci{ 30362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_strset_get_req_dump)); 30462306a36Sopenharmony_ci} 30562306a36Sopenharmony_civoid ethtool_strset_get_req_dump_free(struct ethtool_strset_get_req_dump *req); 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistatic inline void 30862306a36Sopenharmony_ciethtool_strset_get_req_dump_set_header_dev_index(struct ethtool_strset_get_req_dump *req, 30962306a36Sopenharmony_ci __u32 dev_index) 31062306a36Sopenharmony_ci{ 31162306a36Sopenharmony_ci req->_present.header = 1; 31262306a36Sopenharmony_ci req->header._present.dev_index = 1; 31362306a36Sopenharmony_ci req->header.dev_index = dev_index; 31462306a36Sopenharmony_ci} 31562306a36Sopenharmony_cistatic inline void 31662306a36Sopenharmony_ciethtool_strset_get_req_dump_set_header_dev_name(struct ethtool_strset_get_req_dump *req, 31762306a36Sopenharmony_ci const char *dev_name) 31862306a36Sopenharmony_ci{ 31962306a36Sopenharmony_ci free(req->header.dev_name); 32062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 32162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 32262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 32362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 32462306a36Sopenharmony_ci} 32562306a36Sopenharmony_cistatic inline void 32662306a36Sopenharmony_ciethtool_strset_get_req_dump_set_header_flags(struct ethtool_strset_get_req_dump *req, 32762306a36Sopenharmony_ci __u32 flags) 32862306a36Sopenharmony_ci{ 32962306a36Sopenharmony_ci req->_present.header = 1; 33062306a36Sopenharmony_ci req->header._present.flags = 1; 33162306a36Sopenharmony_ci req->header.flags = flags; 33262306a36Sopenharmony_ci} 33362306a36Sopenharmony_cistatic inline void 33462306a36Sopenharmony_ci__ethtool_strset_get_req_dump_set_stringsets_stringset(struct ethtool_strset_get_req_dump *req, 33562306a36Sopenharmony_ci struct ethtool_stringset_ *stringset, 33662306a36Sopenharmony_ci unsigned int n_stringset) 33762306a36Sopenharmony_ci{ 33862306a36Sopenharmony_ci free(req->stringsets.stringset); 33962306a36Sopenharmony_ci req->stringsets.stringset = stringset; 34062306a36Sopenharmony_ci req->stringsets.n_stringset = n_stringset; 34162306a36Sopenharmony_ci} 34262306a36Sopenharmony_cistatic inline void 34362306a36Sopenharmony_ciethtool_strset_get_req_dump_set_counts_only(struct ethtool_strset_get_req_dump *req) 34462306a36Sopenharmony_ci{ 34562306a36Sopenharmony_ci req->_present.counts_only = 1; 34662306a36Sopenharmony_ci} 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_cistruct ethtool_strset_get_list { 34962306a36Sopenharmony_ci struct ethtool_strset_get_list *next; 35062306a36Sopenharmony_ci struct ethtool_strset_get_rsp obj __attribute__ ((aligned (8))); 35162306a36Sopenharmony_ci}; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_civoid ethtool_strset_get_list_free(struct ethtool_strset_get_list *rsp); 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_cistruct ethtool_strset_get_list * 35662306a36Sopenharmony_ciethtool_strset_get_dump(struct ynl_sock *ys, 35762306a36Sopenharmony_ci struct ethtool_strset_get_req_dump *req); 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_LINKINFO_GET ============== */ 36062306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKINFO_GET - do */ 36162306a36Sopenharmony_cistruct ethtool_linkinfo_get_req { 36262306a36Sopenharmony_ci struct { 36362306a36Sopenharmony_ci __u32 header:1; 36462306a36Sopenharmony_ci } _present; 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci struct ethtool_header header; 36762306a36Sopenharmony_ci}; 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_cistatic inline struct ethtool_linkinfo_get_req * 37062306a36Sopenharmony_ciethtool_linkinfo_get_req_alloc(void) 37162306a36Sopenharmony_ci{ 37262306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkinfo_get_req)); 37362306a36Sopenharmony_ci} 37462306a36Sopenharmony_civoid ethtool_linkinfo_get_req_free(struct ethtool_linkinfo_get_req *req); 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_cistatic inline void 37762306a36Sopenharmony_ciethtool_linkinfo_get_req_set_header_dev_index(struct ethtool_linkinfo_get_req *req, 37862306a36Sopenharmony_ci __u32 dev_index) 37962306a36Sopenharmony_ci{ 38062306a36Sopenharmony_ci req->_present.header = 1; 38162306a36Sopenharmony_ci req->header._present.dev_index = 1; 38262306a36Sopenharmony_ci req->header.dev_index = dev_index; 38362306a36Sopenharmony_ci} 38462306a36Sopenharmony_cistatic inline void 38562306a36Sopenharmony_ciethtool_linkinfo_get_req_set_header_dev_name(struct ethtool_linkinfo_get_req *req, 38662306a36Sopenharmony_ci const char *dev_name) 38762306a36Sopenharmony_ci{ 38862306a36Sopenharmony_ci free(req->header.dev_name); 38962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 39062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 39162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 39262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 39362306a36Sopenharmony_ci} 39462306a36Sopenharmony_cistatic inline void 39562306a36Sopenharmony_ciethtool_linkinfo_get_req_set_header_flags(struct ethtool_linkinfo_get_req *req, 39662306a36Sopenharmony_ci __u32 flags) 39762306a36Sopenharmony_ci{ 39862306a36Sopenharmony_ci req->_present.header = 1; 39962306a36Sopenharmony_ci req->header._present.flags = 1; 40062306a36Sopenharmony_ci req->header.flags = flags; 40162306a36Sopenharmony_ci} 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_cistruct ethtool_linkinfo_get_rsp { 40462306a36Sopenharmony_ci struct { 40562306a36Sopenharmony_ci __u32 header:1; 40662306a36Sopenharmony_ci __u32 port:1; 40762306a36Sopenharmony_ci __u32 phyaddr:1; 40862306a36Sopenharmony_ci __u32 tp_mdix:1; 40962306a36Sopenharmony_ci __u32 tp_mdix_ctrl:1; 41062306a36Sopenharmony_ci __u32 transceiver:1; 41162306a36Sopenharmony_ci } _present; 41262306a36Sopenharmony_ci 41362306a36Sopenharmony_ci struct ethtool_header header; 41462306a36Sopenharmony_ci __u8 port; 41562306a36Sopenharmony_ci __u8 phyaddr; 41662306a36Sopenharmony_ci __u8 tp_mdix; 41762306a36Sopenharmony_ci __u8 tp_mdix_ctrl; 41862306a36Sopenharmony_ci __u8 transceiver; 41962306a36Sopenharmony_ci}; 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_civoid ethtool_linkinfo_get_rsp_free(struct ethtool_linkinfo_get_rsp *rsp); 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci/* 42462306a36Sopenharmony_ci * Get link info. 42562306a36Sopenharmony_ci */ 42662306a36Sopenharmony_cistruct ethtool_linkinfo_get_rsp * 42762306a36Sopenharmony_ciethtool_linkinfo_get(struct ynl_sock *ys, struct ethtool_linkinfo_get_req *req); 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKINFO_GET - dump */ 43062306a36Sopenharmony_cistruct ethtool_linkinfo_get_req_dump { 43162306a36Sopenharmony_ci struct { 43262306a36Sopenharmony_ci __u32 header:1; 43362306a36Sopenharmony_ci } _present; 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_ci struct ethtool_header header; 43662306a36Sopenharmony_ci}; 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_cistatic inline struct ethtool_linkinfo_get_req_dump * 43962306a36Sopenharmony_ciethtool_linkinfo_get_req_dump_alloc(void) 44062306a36Sopenharmony_ci{ 44162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkinfo_get_req_dump)); 44262306a36Sopenharmony_ci} 44362306a36Sopenharmony_civoid 44462306a36Sopenharmony_ciethtool_linkinfo_get_req_dump_free(struct ethtool_linkinfo_get_req_dump *req); 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_cistatic inline void 44762306a36Sopenharmony_ciethtool_linkinfo_get_req_dump_set_header_dev_index(struct ethtool_linkinfo_get_req_dump *req, 44862306a36Sopenharmony_ci __u32 dev_index) 44962306a36Sopenharmony_ci{ 45062306a36Sopenharmony_ci req->_present.header = 1; 45162306a36Sopenharmony_ci req->header._present.dev_index = 1; 45262306a36Sopenharmony_ci req->header.dev_index = dev_index; 45362306a36Sopenharmony_ci} 45462306a36Sopenharmony_cistatic inline void 45562306a36Sopenharmony_ciethtool_linkinfo_get_req_dump_set_header_dev_name(struct ethtool_linkinfo_get_req_dump *req, 45662306a36Sopenharmony_ci const char *dev_name) 45762306a36Sopenharmony_ci{ 45862306a36Sopenharmony_ci free(req->header.dev_name); 45962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 46062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 46162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 46262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 46362306a36Sopenharmony_ci} 46462306a36Sopenharmony_cistatic inline void 46562306a36Sopenharmony_ciethtool_linkinfo_get_req_dump_set_header_flags(struct ethtool_linkinfo_get_req_dump *req, 46662306a36Sopenharmony_ci __u32 flags) 46762306a36Sopenharmony_ci{ 46862306a36Sopenharmony_ci req->_present.header = 1; 46962306a36Sopenharmony_ci req->header._present.flags = 1; 47062306a36Sopenharmony_ci req->header.flags = flags; 47162306a36Sopenharmony_ci} 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_cistruct ethtool_linkinfo_get_list { 47462306a36Sopenharmony_ci struct ethtool_linkinfo_get_list *next; 47562306a36Sopenharmony_ci struct ethtool_linkinfo_get_rsp obj __attribute__ ((aligned (8))); 47662306a36Sopenharmony_ci}; 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_civoid ethtool_linkinfo_get_list_free(struct ethtool_linkinfo_get_list *rsp); 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_cistruct ethtool_linkinfo_get_list * 48162306a36Sopenharmony_ciethtool_linkinfo_get_dump(struct ynl_sock *ys, 48262306a36Sopenharmony_ci struct ethtool_linkinfo_get_req_dump *req); 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKINFO_GET - notify */ 48562306a36Sopenharmony_cistruct ethtool_linkinfo_get_ntf { 48662306a36Sopenharmony_ci __u16 family; 48762306a36Sopenharmony_ci __u8 cmd; 48862306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 48962306a36Sopenharmony_ci void (*free)(struct ethtool_linkinfo_get_ntf *ntf); 49062306a36Sopenharmony_ci struct ethtool_linkinfo_get_rsp obj __attribute__ ((aligned (8))); 49162306a36Sopenharmony_ci}; 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_civoid ethtool_linkinfo_get_ntf_free(struct ethtool_linkinfo_get_ntf *rsp); 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_LINKINFO_SET ============== */ 49662306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKINFO_SET - do */ 49762306a36Sopenharmony_cistruct ethtool_linkinfo_set_req { 49862306a36Sopenharmony_ci struct { 49962306a36Sopenharmony_ci __u32 header:1; 50062306a36Sopenharmony_ci __u32 port:1; 50162306a36Sopenharmony_ci __u32 phyaddr:1; 50262306a36Sopenharmony_ci __u32 tp_mdix:1; 50362306a36Sopenharmony_ci __u32 tp_mdix_ctrl:1; 50462306a36Sopenharmony_ci __u32 transceiver:1; 50562306a36Sopenharmony_ci } _present; 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_ci struct ethtool_header header; 50862306a36Sopenharmony_ci __u8 port; 50962306a36Sopenharmony_ci __u8 phyaddr; 51062306a36Sopenharmony_ci __u8 tp_mdix; 51162306a36Sopenharmony_ci __u8 tp_mdix_ctrl; 51262306a36Sopenharmony_ci __u8 transceiver; 51362306a36Sopenharmony_ci}; 51462306a36Sopenharmony_ci 51562306a36Sopenharmony_cistatic inline struct ethtool_linkinfo_set_req * 51662306a36Sopenharmony_ciethtool_linkinfo_set_req_alloc(void) 51762306a36Sopenharmony_ci{ 51862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkinfo_set_req)); 51962306a36Sopenharmony_ci} 52062306a36Sopenharmony_civoid ethtool_linkinfo_set_req_free(struct ethtool_linkinfo_set_req *req); 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_cistatic inline void 52362306a36Sopenharmony_ciethtool_linkinfo_set_req_set_header_dev_index(struct ethtool_linkinfo_set_req *req, 52462306a36Sopenharmony_ci __u32 dev_index) 52562306a36Sopenharmony_ci{ 52662306a36Sopenharmony_ci req->_present.header = 1; 52762306a36Sopenharmony_ci req->header._present.dev_index = 1; 52862306a36Sopenharmony_ci req->header.dev_index = dev_index; 52962306a36Sopenharmony_ci} 53062306a36Sopenharmony_cistatic inline void 53162306a36Sopenharmony_ciethtool_linkinfo_set_req_set_header_dev_name(struct ethtool_linkinfo_set_req *req, 53262306a36Sopenharmony_ci const char *dev_name) 53362306a36Sopenharmony_ci{ 53462306a36Sopenharmony_ci free(req->header.dev_name); 53562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 53662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 53762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 53862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 53962306a36Sopenharmony_ci} 54062306a36Sopenharmony_cistatic inline void 54162306a36Sopenharmony_ciethtool_linkinfo_set_req_set_header_flags(struct ethtool_linkinfo_set_req *req, 54262306a36Sopenharmony_ci __u32 flags) 54362306a36Sopenharmony_ci{ 54462306a36Sopenharmony_ci req->_present.header = 1; 54562306a36Sopenharmony_ci req->header._present.flags = 1; 54662306a36Sopenharmony_ci req->header.flags = flags; 54762306a36Sopenharmony_ci} 54862306a36Sopenharmony_cistatic inline void 54962306a36Sopenharmony_ciethtool_linkinfo_set_req_set_port(struct ethtool_linkinfo_set_req *req, 55062306a36Sopenharmony_ci __u8 port) 55162306a36Sopenharmony_ci{ 55262306a36Sopenharmony_ci req->_present.port = 1; 55362306a36Sopenharmony_ci req->port = port; 55462306a36Sopenharmony_ci} 55562306a36Sopenharmony_cistatic inline void 55662306a36Sopenharmony_ciethtool_linkinfo_set_req_set_phyaddr(struct ethtool_linkinfo_set_req *req, 55762306a36Sopenharmony_ci __u8 phyaddr) 55862306a36Sopenharmony_ci{ 55962306a36Sopenharmony_ci req->_present.phyaddr = 1; 56062306a36Sopenharmony_ci req->phyaddr = phyaddr; 56162306a36Sopenharmony_ci} 56262306a36Sopenharmony_cistatic inline void 56362306a36Sopenharmony_ciethtool_linkinfo_set_req_set_tp_mdix(struct ethtool_linkinfo_set_req *req, 56462306a36Sopenharmony_ci __u8 tp_mdix) 56562306a36Sopenharmony_ci{ 56662306a36Sopenharmony_ci req->_present.tp_mdix = 1; 56762306a36Sopenharmony_ci req->tp_mdix = tp_mdix; 56862306a36Sopenharmony_ci} 56962306a36Sopenharmony_cistatic inline void 57062306a36Sopenharmony_ciethtool_linkinfo_set_req_set_tp_mdix_ctrl(struct ethtool_linkinfo_set_req *req, 57162306a36Sopenharmony_ci __u8 tp_mdix_ctrl) 57262306a36Sopenharmony_ci{ 57362306a36Sopenharmony_ci req->_present.tp_mdix_ctrl = 1; 57462306a36Sopenharmony_ci req->tp_mdix_ctrl = tp_mdix_ctrl; 57562306a36Sopenharmony_ci} 57662306a36Sopenharmony_cistatic inline void 57762306a36Sopenharmony_ciethtool_linkinfo_set_req_set_transceiver(struct ethtool_linkinfo_set_req *req, 57862306a36Sopenharmony_ci __u8 transceiver) 57962306a36Sopenharmony_ci{ 58062306a36Sopenharmony_ci req->_present.transceiver = 1; 58162306a36Sopenharmony_ci req->transceiver = transceiver; 58262306a36Sopenharmony_ci} 58362306a36Sopenharmony_ci 58462306a36Sopenharmony_ci/* 58562306a36Sopenharmony_ci * Set link info. 58662306a36Sopenharmony_ci */ 58762306a36Sopenharmony_ciint ethtool_linkinfo_set(struct ynl_sock *ys, 58862306a36Sopenharmony_ci struct ethtool_linkinfo_set_req *req); 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_LINKMODES_GET ============== */ 59162306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKMODES_GET - do */ 59262306a36Sopenharmony_cistruct ethtool_linkmodes_get_req { 59362306a36Sopenharmony_ci struct { 59462306a36Sopenharmony_ci __u32 header:1; 59562306a36Sopenharmony_ci } _present; 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ci struct ethtool_header header; 59862306a36Sopenharmony_ci}; 59962306a36Sopenharmony_ci 60062306a36Sopenharmony_cistatic inline struct ethtool_linkmodes_get_req * 60162306a36Sopenharmony_ciethtool_linkmodes_get_req_alloc(void) 60262306a36Sopenharmony_ci{ 60362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkmodes_get_req)); 60462306a36Sopenharmony_ci} 60562306a36Sopenharmony_civoid ethtool_linkmodes_get_req_free(struct ethtool_linkmodes_get_req *req); 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_cistatic inline void 60862306a36Sopenharmony_ciethtool_linkmodes_get_req_set_header_dev_index(struct ethtool_linkmodes_get_req *req, 60962306a36Sopenharmony_ci __u32 dev_index) 61062306a36Sopenharmony_ci{ 61162306a36Sopenharmony_ci req->_present.header = 1; 61262306a36Sopenharmony_ci req->header._present.dev_index = 1; 61362306a36Sopenharmony_ci req->header.dev_index = dev_index; 61462306a36Sopenharmony_ci} 61562306a36Sopenharmony_cistatic inline void 61662306a36Sopenharmony_ciethtool_linkmodes_get_req_set_header_dev_name(struct ethtool_linkmodes_get_req *req, 61762306a36Sopenharmony_ci const char *dev_name) 61862306a36Sopenharmony_ci{ 61962306a36Sopenharmony_ci free(req->header.dev_name); 62062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 62162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 62262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 62362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 62462306a36Sopenharmony_ci} 62562306a36Sopenharmony_cistatic inline void 62662306a36Sopenharmony_ciethtool_linkmodes_get_req_set_header_flags(struct ethtool_linkmodes_get_req *req, 62762306a36Sopenharmony_ci __u32 flags) 62862306a36Sopenharmony_ci{ 62962306a36Sopenharmony_ci req->_present.header = 1; 63062306a36Sopenharmony_ci req->header._present.flags = 1; 63162306a36Sopenharmony_ci req->header.flags = flags; 63262306a36Sopenharmony_ci} 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_cistruct ethtool_linkmodes_get_rsp { 63562306a36Sopenharmony_ci struct { 63662306a36Sopenharmony_ci __u32 header:1; 63762306a36Sopenharmony_ci __u32 autoneg:1; 63862306a36Sopenharmony_ci __u32 ours:1; 63962306a36Sopenharmony_ci __u32 peer:1; 64062306a36Sopenharmony_ci __u32 speed:1; 64162306a36Sopenharmony_ci __u32 duplex:1; 64262306a36Sopenharmony_ci __u32 master_slave_cfg:1; 64362306a36Sopenharmony_ci __u32 master_slave_state:1; 64462306a36Sopenharmony_ci __u32 lanes:1; 64562306a36Sopenharmony_ci __u32 rate_matching:1; 64662306a36Sopenharmony_ci } _present; 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ci struct ethtool_header header; 64962306a36Sopenharmony_ci __u8 autoneg; 65062306a36Sopenharmony_ci struct ethtool_bitset ours; 65162306a36Sopenharmony_ci struct ethtool_bitset peer; 65262306a36Sopenharmony_ci __u32 speed; 65362306a36Sopenharmony_ci __u8 duplex; 65462306a36Sopenharmony_ci __u8 master_slave_cfg; 65562306a36Sopenharmony_ci __u8 master_slave_state; 65662306a36Sopenharmony_ci __u32 lanes; 65762306a36Sopenharmony_ci __u8 rate_matching; 65862306a36Sopenharmony_ci}; 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_civoid ethtool_linkmodes_get_rsp_free(struct ethtool_linkmodes_get_rsp *rsp); 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci/* 66362306a36Sopenharmony_ci * Get link modes. 66462306a36Sopenharmony_ci */ 66562306a36Sopenharmony_cistruct ethtool_linkmodes_get_rsp * 66662306a36Sopenharmony_ciethtool_linkmodes_get(struct ynl_sock *ys, 66762306a36Sopenharmony_ci struct ethtool_linkmodes_get_req *req); 66862306a36Sopenharmony_ci 66962306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKMODES_GET - dump */ 67062306a36Sopenharmony_cistruct ethtool_linkmodes_get_req_dump { 67162306a36Sopenharmony_ci struct { 67262306a36Sopenharmony_ci __u32 header:1; 67362306a36Sopenharmony_ci } _present; 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci struct ethtool_header header; 67662306a36Sopenharmony_ci}; 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_cistatic inline struct ethtool_linkmodes_get_req_dump * 67962306a36Sopenharmony_ciethtool_linkmodes_get_req_dump_alloc(void) 68062306a36Sopenharmony_ci{ 68162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkmodes_get_req_dump)); 68262306a36Sopenharmony_ci} 68362306a36Sopenharmony_civoid 68462306a36Sopenharmony_ciethtool_linkmodes_get_req_dump_free(struct ethtool_linkmodes_get_req_dump *req); 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_cistatic inline void 68762306a36Sopenharmony_ciethtool_linkmodes_get_req_dump_set_header_dev_index(struct ethtool_linkmodes_get_req_dump *req, 68862306a36Sopenharmony_ci __u32 dev_index) 68962306a36Sopenharmony_ci{ 69062306a36Sopenharmony_ci req->_present.header = 1; 69162306a36Sopenharmony_ci req->header._present.dev_index = 1; 69262306a36Sopenharmony_ci req->header.dev_index = dev_index; 69362306a36Sopenharmony_ci} 69462306a36Sopenharmony_cistatic inline void 69562306a36Sopenharmony_ciethtool_linkmodes_get_req_dump_set_header_dev_name(struct ethtool_linkmodes_get_req_dump *req, 69662306a36Sopenharmony_ci const char *dev_name) 69762306a36Sopenharmony_ci{ 69862306a36Sopenharmony_ci free(req->header.dev_name); 69962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 70062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 70162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 70262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 70362306a36Sopenharmony_ci} 70462306a36Sopenharmony_cistatic inline void 70562306a36Sopenharmony_ciethtool_linkmodes_get_req_dump_set_header_flags(struct ethtool_linkmodes_get_req_dump *req, 70662306a36Sopenharmony_ci __u32 flags) 70762306a36Sopenharmony_ci{ 70862306a36Sopenharmony_ci req->_present.header = 1; 70962306a36Sopenharmony_ci req->header._present.flags = 1; 71062306a36Sopenharmony_ci req->header.flags = flags; 71162306a36Sopenharmony_ci} 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_cistruct ethtool_linkmodes_get_list { 71462306a36Sopenharmony_ci struct ethtool_linkmodes_get_list *next; 71562306a36Sopenharmony_ci struct ethtool_linkmodes_get_rsp obj __attribute__ ((aligned (8))); 71662306a36Sopenharmony_ci}; 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_civoid ethtool_linkmodes_get_list_free(struct ethtool_linkmodes_get_list *rsp); 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_cistruct ethtool_linkmodes_get_list * 72162306a36Sopenharmony_ciethtool_linkmodes_get_dump(struct ynl_sock *ys, 72262306a36Sopenharmony_ci struct ethtool_linkmodes_get_req_dump *req); 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKMODES_GET - notify */ 72562306a36Sopenharmony_cistruct ethtool_linkmodes_get_ntf { 72662306a36Sopenharmony_ci __u16 family; 72762306a36Sopenharmony_ci __u8 cmd; 72862306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 72962306a36Sopenharmony_ci void (*free)(struct ethtool_linkmodes_get_ntf *ntf); 73062306a36Sopenharmony_ci struct ethtool_linkmodes_get_rsp obj __attribute__ ((aligned (8))); 73162306a36Sopenharmony_ci}; 73262306a36Sopenharmony_ci 73362306a36Sopenharmony_civoid ethtool_linkmodes_get_ntf_free(struct ethtool_linkmodes_get_ntf *rsp); 73462306a36Sopenharmony_ci 73562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_LINKMODES_SET ============== */ 73662306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKMODES_SET - do */ 73762306a36Sopenharmony_cistruct ethtool_linkmodes_set_req { 73862306a36Sopenharmony_ci struct { 73962306a36Sopenharmony_ci __u32 header:1; 74062306a36Sopenharmony_ci __u32 autoneg:1; 74162306a36Sopenharmony_ci __u32 ours:1; 74262306a36Sopenharmony_ci __u32 peer:1; 74362306a36Sopenharmony_ci __u32 speed:1; 74462306a36Sopenharmony_ci __u32 duplex:1; 74562306a36Sopenharmony_ci __u32 master_slave_cfg:1; 74662306a36Sopenharmony_ci __u32 master_slave_state:1; 74762306a36Sopenharmony_ci __u32 lanes:1; 74862306a36Sopenharmony_ci __u32 rate_matching:1; 74962306a36Sopenharmony_ci } _present; 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_ci struct ethtool_header header; 75262306a36Sopenharmony_ci __u8 autoneg; 75362306a36Sopenharmony_ci struct ethtool_bitset ours; 75462306a36Sopenharmony_ci struct ethtool_bitset peer; 75562306a36Sopenharmony_ci __u32 speed; 75662306a36Sopenharmony_ci __u8 duplex; 75762306a36Sopenharmony_ci __u8 master_slave_cfg; 75862306a36Sopenharmony_ci __u8 master_slave_state; 75962306a36Sopenharmony_ci __u32 lanes; 76062306a36Sopenharmony_ci __u8 rate_matching; 76162306a36Sopenharmony_ci}; 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_cistatic inline struct ethtool_linkmodes_set_req * 76462306a36Sopenharmony_ciethtool_linkmodes_set_req_alloc(void) 76562306a36Sopenharmony_ci{ 76662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkmodes_set_req)); 76762306a36Sopenharmony_ci} 76862306a36Sopenharmony_civoid ethtool_linkmodes_set_req_free(struct ethtool_linkmodes_set_req *req); 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_cistatic inline void 77162306a36Sopenharmony_ciethtool_linkmodes_set_req_set_header_dev_index(struct ethtool_linkmodes_set_req *req, 77262306a36Sopenharmony_ci __u32 dev_index) 77362306a36Sopenharmony_ci{ 77462306a36Sopenharmony_ci req->_present.header = 1; 77562306a36Sopenharmony_ci req->header._present.dev_index = 1; 77662306a36Sopenharmony_ci req->header.dev_index = dev_index; 77762306a36Sopenharmony_ci} 77862306a36Sopenharmony_cistatic inline void 77962306a36Sopenharmony_ciethtool_linkmodes_set_req_set_header_dev_name(struct ethtool_linkmodes_set_req *req, 78062306a36Sopenharmony_ci const char *dev_name) 78162306a36Sopenharmony_ci{ 78262306a36Sopenharmony_ci free(req->header.dev_name); 78362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 78462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 78562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 78662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 78762306a36Sopenharmony_ci} 78862306a36Sopenharmony_cistatic inline void 78962306a36Sopenharmony_ciethtool_linkmodes_set_req_set_header_flags(struct ethtool_linkmodes_set_req *req, 79062306a36Sopenharmony_ci __u32 flags) 79162306a36Sopenharmony_ci{ 79262306a36Sopenharmony_ci req->_present.header = 1; 79362306a36Sopenharmony_ci req->header._present.flags = 1; 79462306a36Sopenharmony_ci req->header.flags = flags; 79562306a36Sopenharmony_ci} 79662306a36Sopenharmony_cistatic inline void 79762306a36Sopenharmony_ciethtool_linkmodes_set_req_set_autoneg(struct ethtool_linkmodes_set_req *req, 79862306a36Sopenharmony_ci __u8 autoneg) 79962306a36Sopenharmony_ci{ 80062306a36Sopenharmony_ci req->_present.autoneg = 1; 80162306a36Sopenharmony_ci req->autoneg = autoneg; 80262306a36Sopenharmony_ci} 80362306a36Sopenharmony_cistatic inline void 80462306a36Sopenharmony_ciethtool_linkmodes_set_req_set_ours_nomask(struct ethtool_linkmodes_set_req *req) 80562306a36Sopenharmony_ci{ 80662306a36Sopenharmony_ci req->_present.ours = 1; 80762306a36Sopenharmony_ci req->ours._present.nomask = 1; 80862306a36Sopenharmony_ci} 80962306a36Sopenharmony_cistatic inline void 81062306a36Sopenharmony_ciethtool_linkmodes_set_req_set_ours_size(struct ethtool_linkmodes_set_req *req, 81162306a36Sopenharmony_ci __u32 size) 81262306a36Sopenharmony_ci{ 81362306a36Sopenharmony_ci req->_present.ours = 1; 81462306a36Sopenharmony_ci req->ours._present.size = 1; 81562306a36Sopenharmony_ci req->ours.size = size; 81662306a36Sopenharmony_ci} 81762306a36Sopenharmony_cistatic inline void 81862306a36Sopenharmony_ci__ethtool_linkmodes_set_req_set_ours_bits_bit(struct ethtool_linkmodes_set_req *req, 81962306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 82062306a36Sopenharmony_ci unsigned int n_bit) 82162306a36Sopenharmony_ci{ 82262306a36Sopenharmony_ci free(req->ours.bits.bit); 82362306a36Sopenharmony_ci req->ours.bits.bit = bit; 82462306a36Sopenharmony_ci req->ours.bits.n_bit = n_bit; 82562306a36Sopenharmony_ci} 82662306a36Sopenharmony_cistatic inline void 82762306a36Sopenharmony_ciethtool_linkmodes_set_req_set_peer_nomask(struct ethtool_linkmodes_set_req *req) 82862306a36Sopenharmony_ci{ 82962306a36Sopenharmony_ci req->_present.peer = 1; 83062306a36Sopenharmony_ci req->peer._present.nomask = 1; 83162306a36Sopenharmony_ci} 83262306a36Sopenharmony_cistatic inline void 83362306a36Sopenharmony_ciethtool_linkmodes_set_req_set_peer_size(struct ethtool_linkmodes_set_req *req, 83462306a36Sopenharmony_ci __u32 size) 83562306a36Sopenharmony_ci{ 83662306a36Sopenharmony_ci req->_present.peer = 1; 83762306a36Sopenharmony_ci req->peer._present.size = 1; 83862306a36Sopenharmony_ci req->peer.size = size; 83962306a36Sopenharmony_ci} 84062306a36Sopenharmony_cistatic inline void 84162306a36Sopenharmony_ci__ethtool_linkmodes_set_req_set_peer_bits_bit(struct ethtool_linkmodes_set_req *req, 84262306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 84362306a36Sopenharmony_ci unsigned int n_bit) 84462306a36Sopenharmony_ci{ 84562306a36Sopenharmony_ci free(req->peer.bits.bit); 84662306a36Sopenharmony_ci req->peer.bits.bit = bit; 84762306a36Sopenharmony_ci req->peer.bits.n_bit = n_bit; 84862306a36Sopenharmony_ci} 84962306a36Sopenharmony_cistatic inline void 85062306a36Sopenharmony_ciethtool_linkmodes_set_req_set_speed(struct ethtool_linkmodes_set_req *req, 85162306a36Sopenharmony_ci __u32 speed) 85262306a36Sopenharmony_ci{ 85362306a36Sopenharmony_ci req->_present.speed = 1; 85462306a36Sopenharmony_ci req->speed = speed; 85562306a36Sopenharmony_ci} 85662306a36Sopenharmony_cistatic inline void 85762306a36Sopenharmony_ciethtool_linkmodes_set_req_set_duplex(struct ethtool_linkmodes_set_req *req, 85862306a36Sopenharmony_ci __u8 duplex) 85962306a36Sopenharmony_ci{ 86062306a36Sopenharmony_ci req->_present.duplex = 1; 86162306a36Sopenharmony_ci req->duplex = duplex; 86262306a36Sopenharmony_ci} 86362306a36Sopenharmony_cistatic inline void 86462306a36Sopenharmony_ciethtool_linkmodes_set_req_set_master_slave_cfg(struct ethtool_linkmodes_set_req *req, 86562306a36Sopenharmony_ci __u8 master_slave_cfg) 86662306a36Sopenharmony_ci{ 86762306a36Sopenharmony_ci req->_present.master_slave_cfg = 1; 86862306a36Sopenharmony_ci req->master_slave_cfg = master_slave_cfg; 86962306a36Sopenharmony_ci} 87062306a36Sopenharmony_cistatic inline void 87162306a36Sopenharmony_ciethtool_linkmodes_set_req_set_master_slave_state(struct ethtool_linkmodes_set_req *req, 87262306a36Sopenharmony_ci __u8 master_slave_state) 87362306a36Sopenharmony_ci{ 87462306a36Sopenharmony_ci req->_present.master_slave_state = 1; 87562306a36Sopenharmony_ci req->master_slave_state = master_slave_state; 87662306a36Sopenharmony_ci} 87762306a36Sopenharmony_cistatic inline void 87862306a36Sopenharmony_ciethtool_linkmodes_set_req_set_lanes(struct ethtool_linkmodes_set_req *req, 87962306a36Sopenharmony_ci __u32 lanes) 88062306a36Sopenharmony_ci{ 88162306a36Sopenharmony_ci req->_present.lanes = 1; 88262306a36Sopenharmony_ci req->lanes = lanes; 88362306a36Sopenharmony_ci} 88462306a36Sopenharmony_cistatic inline void 88562306a36Sopenharmony_ciethtool_linkmodes_set_req_set_rate_matching(struct ethtool_linkmodes_set_req *req, 88662306a36Sopenharmony_ci __u8 rate_matching) 88762306a36Sopenharmony_ci{ 88862306a36Sopenharmony_ci req->_present.rate_matching = 1; 88962306a36Sopenharmony_ci req->rate_matching = rate_matching; 89062306a36Sopenharmony_ci} 89162306a36Sopenharmony_ci 89262306a36Sopenharmony_ci/* 89362306a36Sopenharmony_ci * Set link modes. 89462306a36Sopenharmony_ci */ 89562306a36Sopenharmony_ciint ethtool_linkmodes_set(struct ynl_sock *ys, 89662306a36Sopenharmony_ci struct ethtool_linkmodes_set_req *req); 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_LINKSTATE_GET ============== */ 89962306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKSTATE_GET - do */ 90062306a36Sopenharmony_cistruct ethtool_linkstate_get_req { 90162306a36Sopenharmony_ci struct { 90262306a36Sopenharmony_ci __u32 header:1; 90362306a36Sopenharmony_ci } _present; 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_ci struct ethtool_header header; 90662306a36Sopenharmony_ci}; 90762306a36Sopenharmony_ci 90862306a36Sopenharmony_cistatic inline struct ethtool_linkstate_get_req * 90962306a36Sopenharmony_ciethtool_linkstate_get_req_alloc(void) 91062306a36Sopenharmony_ci{ 91162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkstate_get_req)); 91262306a36Sopenharmony_ci} 91362306a36Sopenharmony_civoid ethtool_linkstate_get_req_free(struct ethtool_linkstate_get_req *req); 91462306a36Sopenharmony_ci 91562306a36Sopenharmony_cistatic inline void 91662306a36Sopenharmony_ciethtool_linkstate_get_req_set_header_dev_index(struct ethtool_linkstate_get_req *req, 91762306a36Sopenharmony_ci __u32 dev_index) 91862306a36Sopenharmony_ci{ 91962306a36Sopenharmony_ci req->_present.header = 1; 92062306a36Sopenharmony_ci req->header._present.dev_index = 1; 92162306a36Sopenharmony_ci req->header.dev_index = dev_index; 92262306a36Sopenharmony_ci} 92362306a36Sopenharmony_cistatic inline void 92462306a36Sopenharmony_ciethtool_linkstate_get_req_set_header_dev_name(struct ethtool_linkstate_get_req *req, 92562306a36Sopenharmony_ci const char *dev_name) 92662306a36Sopenharmony_ci{ 92762306a36Sopenharmony_ci free(req->header.dev_name); 92862306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 92962306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 93062306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 93162306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 93262306a36Sopenharmony_ci} 93362306a36Sopenharmony_cistatic inline void 93462306a36Sopenharmony_ciethtool_linkstate_get_req_set_header_flags(struct ethtool_linkstate_get_req *req, 93562306a36Sopenharmony_ci __u32 flags) 93662306a36Sopenharmony_ci{ 93762306a36Sopenharmony_ci req->_present.header = 1; 93862306a36Sopenharmony_ci req->header._present.flags = 1; 93962306a36Sopenharmony_ci req->header.flags = flags; 94062306a36Sopenharmony_ci} 94162306a36Sopenharmony_ci 94262306a36Sopenharmony_cistruct ethtool_linkstate_get_rsp { 94362306a36Sopenharmony_ci struct { 94462306a36Sopenharmony_ci __u32 header:1; 94562306a36Sopenharmony_ci __u32 link:1; 94662306a36Sopenharmony_ci __u32 sqi:1; 94762306a36Sopenharmony_ci __u32 sqi_max:1; 94862306a36Sopenharmony_ci __u32 ext_state:1; 94962306a36Sopenharmony_ci __u32 ext_substate:1; 95062306a36Sopenharmony_ci __u32 ext_down_cnt:1; 95162306a36Sopenharmony_ci } _present; 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_ci struct ethtool_header header; 95462306a36Sopenharmony_ci __u8 link; 95562306a36Sopenharmony_ci __u32 sqi; 95662306a36Sopenharmony_ci __u32 sqi_max; 95762306a36Sopenharmony_ci __u8 ext_state; 95862306a36Sopenharmony_ci __u8 ext_substate; 95962306a36Sopenharmony_ci __u32 ext_down_cnt; 96062306a36Sopenharmony_ci}; 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_civoid ethtool_linkstate_get_rsp_free(struct ethtool_linkstate_get_rsp *rsp); 96362306a36Sopenharmony_ci 96462306a36Sopenharmony_ci/* 96562306a36Sopenharmony_ci * Get link state. 96662306a36Sopenharmony_ci */ 96762306a36Sopenharmony_cistruct ethtool_linkstate_get_rsp * 96862306a36Sopenharmony_ciethtool_linkstate_get(struct ynl_sock *ys, 96962306a36Sopenharmony_ci struct ethtool_linkstate_get_req *req); 97062306a36Sopenharmony_ci 97162306a36Sopenharmony_ci/* ETHTOOL_MSG_LINKSTATE_GET - dump */ 97262306a36Sopenharmony_cistruct ethtool_linkstate_get_req_dump { 97362306a36Sopenharmony_ci struct { 97462306a36Sopenharmony_ci __u32 header:1; 97562306a36Sopenharmony_ci } _present; 97662306a36Sopenharmony_ci 97762306a36Sopenharmony_ci struct ethtool_header header; 97862306a36Sopenharmony_ci}; 97962306a36Sopenharmony_ci 98062306a36Sopenharmony_cistatic inline struct ethtool_linkstate_get_req_dump * 98162306a36Sopenharmony_ciethtool_linkstate_get_req_dump_alloc(void) 98262306a36Sopenharmony_ci{ 98362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_linkstate_get_req_dump)); 98462306a36Sopenharmony_ci} 98562306a36Sopenharmony_civoid 98662306a36Sopenharmony_ciethtool_linkstate_get_req_dump_free(struct ethtool_linkstate_get_req_dump *req); 98762306a36Sopenharmony_ci 98862306a36Sopenharmony_cistatic inline void 98962306a36Sopenharmony_ciethtool_linkstate_get_req_dump_set_header_dev_index(struct ethtool_linkstate_get_req_dump *req, 99062306a36Sopenharmony_ci __u32 dev_index) 99162306a36Sopenharmony_ci{ 99262306a36Sopenharmony_ci req->_present.header = 1; 99362306a36Sopenharmony_ci req->header._present.dev_index = 1; 99462306a36Sopenharmony_ci req->header.dev_index = dev_index; 99562306a36Sopenharmony_ci} 99662306a36Sopenharmony_cistatic inline void 99762306a36Sopenharmony_ciethtool_linkstate_get_req_dump_set_header_dev_name(struct ethtool_linkstate_get_req_dump *req, 99862306a36Sopenharmony_ci const char *dev_name) 99962306a36Sopenharmony_ci{ 100062306a36Sopenharmony_ci free(req->header.dev_name); 100162306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 100262306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 100362306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 100462306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 100562306a36Sopenharmony_ci} 100662306a36Sopenharmony_cistatic inline void 100762306a36Sopenharmony_ciethtool_linkstate_get_req_dump_set_header_flags(struct ethtool_linkstate_get_req_dump *req, 100862306a36Sopenharmony_ci __u32 flags) 100962306a36Sopenharmony_ci{ 101062306a36Sopenharmony_ci req->_present.header = 1; 101162306a36Sopenharmony_ci req->header._present.flags = 1; 101262306a36Sopenharmony_ci req->header.flags = flags; 101362306a36Sopenharmony_ci} 101462306a36Sopenharmony_ci 101562306a36Sopenharmony_cistruct ethtool_linkstate_get_list { 101662306a36Sopenharmony_ci struct ethtool_linkstate_get_list *next; 101762306a36Sopenharmony_ci struct ethtool_linkstate_get_rsp obj __attribute__ ((aligned (8))); 101862306a36Sopenharmony_ci}; 101962306a36Sopenharmony_ci 102062306a36Sopenharmony_civoid ethtool_linkstate_get_list_free(struct ethtool_linkstate_get_list *rsp); 102162306a36Sopenharmony_ci 102262306a36Sopenharmony_cistruct ethtool_linkstate_get_list * 102362306a36Sopenharmony_ciethtool_linkstate_get_dump(struct ynl_sock *ys, 102462306a36Sopenharmony_ci struct ethtool_linkstate_get_req_dump *req); 102562306a36Sopenharmony_ci 102662306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_DEBUG_GET ============== */ 102762306a36Sopenharmony_ci/* ETHTOOL_MSG_DEBUG_GET - do */ 102862306a36Sopenharmony_cistruct ethtool_debug_get_req { 102962306a36Sopenharmony_ci struct { 103062306a36Sopenharmony_ci __u32 header:1; 103162306a36Sopenharmony_ci } _present; 103262306a36Sopenharmony_ci 103362306a36Sopenharmony_ci struct ethtool_header header; 103462306a36Sopenharmony_ci}; 103562306a36Sopenharmony_ci 103662306a36Sopenharmony_cistatic inline struct ethtool_debug_get_req *ethtool_debug_get_req_alloc(void) 103762306a36Sopenharmony_ci{ 103862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_debug_get_req)); 103962306a36Sopenharmony_ci} 104062306a36Sopenharmony_civoid ethtool_debug_get_req_free(struct ethtool_debug_get_req *req); 104162306a36Sopenharmony_ci 104262306a36Sopenharmony_cistatic inline void 104362306a36Sopenharmony_ciethtool_debug_get_req_set_header_dev_index(struct ethtool_debug_get_req *req, 104462306a36Sopenharmony_ci __u32 dev_index) 104562306a36Sopenharmony_ci{ 104662306a36Sopenharmony_ci req->_present.header = 1; 104762306a36Sopenharmony_ci req->header._present.dev_index = 1; 104862306a36Sopenharmony_ci req->header.dev_index = dev_index; 104962306a36Sopenharmony_ci} 105062306a36Sopenharmony_cistatic inline void 105162306a36Sopenharmony_ciethtool_debug_get_req_set_header_dev_name(struct ethtool_debug_get_req *req, 105262306a36Sopenharmony_ci const char *dev_name) 105362306a36Sopenharmony_ci{ 105462306a36Sopenharmony_ci free(req->header.dev_name); 105562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 105662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 105762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 105862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 105962306a36Sopenharmony_ci} 106062306a36Sopenharmony_cistatic inline void 106162306a36Sopenharmony_ciethtool_debug_get_req_set_header_flags(struct ethtool_debug_get_req *req, 106262306a36Sopenharmony_ci __u32 flags) 106362306a36Sopenharmony_ci{ 106462306a36Sopenharmony_ci req->_present.header = 1; 106562306a36Sopenharmony_ci req->header._present.flags = 1; 106662306a36Sopenharmony_ci req->header.flags = flags; 106762306a36Sopenharmony_ci} 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_cistruct ethtool_debug_get_rsp { 107062306a36Sopenharmony_ci struct { 107162306a36Sopenharmony_ci __u32 header:1; 107262306a36Sopenharmony_ci __u32 msgmask:1; 107362306a36Sopenharmony_ci } _present; 107462306a36Sopenharmony_ci 107562306a36Sopenharmony_ci struct ethtool_header header; 107662306a36Sopenharmony_ci struct ethtool_bitset msgmask; 107762306a36Sopenharmony_ci}; 107862306a36Sopenharmony_ci 107962306a36Sopenharmony_civoid ethtool_debug_get_rsp_free(struct ethtool_debug_get_rsp *rsp); 108062306a36Sopenharmony_ci 108162306a36Sopenharmony_ci/* 108262306a36Sopenharmony_ci * Get debug message mask. 108362306a36Sopenharmony_ci */ 108462306a36Sopenharmony_cistruct ethtool_debug_get_rsp * 108562306a36Sopenharmony_ciethtool_debug_get(struct ynl_sock *ys, struct ethtool_debug_get_req *req); 108662306a36Sopenharmony_ci 108762306a36Sopenharmony_ci/* ETHTOOL_MSG_DEBUG_GET - dump */ 108862306a36Sopenharmony_cistruct ethtool_debug_get_req_dump { 108962306a36Sopenharmony_ci struct { 109062306a36Sopenharmony_ci __u32 header:1; 109162306a36Sopenharmony_ci } _present; 109262306a36Sopenharmony_ci 109362306a36Sopenharmony_ci struct ethtool_header header; 109462306a36Sopenharmony_ci}; 109562306a36Sopenharmony_ci 109662306a36Sopenharmony_cistatic inline struct ethtool_debug_get_req_dump * 109762306a36Sopenharmony_ciethtool_debug_get_req_dump_alloc(void) 109862306a36Sopenharmony_ci{ 109962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_debug_get_req_dump)); 110062306a36Sopenharmony_ci} 110162306a36Sopenharmony_civoid ethtool_debug_get_req_dump_free(struct ethtool_debug_get_req_dump *req); 110262306a36Sopenharmony_ci 110362306a36Sopenharmony_cistatic inline void 110462306a36Sopenharmony_ciethtool_debug_get_req_dump_set_header_dev_index(struct ethtool_debug_get_req_dump *req, 110562306a36Sopenharmony_ci __u32 dev_index) 110662306a36Sopenharmony_ci{ 110762306a36Sopenharmony_ci req->_present.header = 1; 110862306a36Sopenharmony_ci req->header._present.dev_index = 1; 110962306a36Sopenharmony_ci req->header.dev_index = dev_index; 111062306a36Sopenharmony_ci} 111162306a36Sopenharmony_cistatic inline void 111262306a36Sopenharmony_ciethtool_debug_get_req_dump_set_header_dev_name(struct ethtool_debug_get_req_dump *req, 111362306a36Sopenharmony_ci const char *dev_name) 111462306a36Sopenharmony_ci{ 111562306a36Sopenharmony_ci free(req->header.dev_name); 111662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 111762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 111862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 111962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 112062306a36Sopenharmony_ci} 112162306a36Sopenharmony_cistatic inline void 112262306a36Sopenharmony_ciethtool_debug_get_req_dump_set_header_flags(struct ethtool_debug_get_req_dump *req, 112362306a36Sopenharmony_ci __u32 flags) 112462306a36Sopenharmony_ci{ 112562306a36Sopenharmony_ci req->_present.header = 1; 112662306a36Sopenharmony_ci req->header._present.flags = 1; 112762306a36Sopenharmony_ci req->header.flags = flags; 112862306a36Sopenharmony_ci} 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_cistruct ethtool_debug_get_list { 113162306a36Sopenharmony_ci struct ethtool_debug_get_list *next; 113262306a36Sopenharmony_ci struct ethtool_debug_get_rsp obj __attribute__ ((aligned (8))); 113362306a36Sopenharmony_ci}; 113462306a36Sopenharmony_ci 113562306a36Sopenharmony_civoid ethtool_debug_get_list_free(struct ethtool_debug_get_list *rsp); 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_cistruct ethtool_debug_get_list * 113862306a36Sopenharmony_ciethtool_debug_get_dump(struct ynl_sock *ys, 113962306a36Sopenharmony_ci struct ethtool_debug_get_req_dump *req); 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ci/* ETHTOOL_MSG_DEBUG_GET - notify */ 114262306a36Sopenharmony_cistruct ethtool_debug_get_ntf { 114362306a36Sopenharmony_ci __u16 family; 114462306a36Sopenharmony_ci __u8 cmd; 114562306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 114662306a36Sopenharmony_ci void (*free)(struct ethtool_debug_get_ntf *ntf); 114762306a36Sopenharmony_ci struct ethtool_debug_get_rsp obj __attribute__ ((aligned (8))); 114862306a36Sopenharmony_ci}; 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_civoid ethtool_debug_get_ntf_free(struct ethtool_debug_get_ntf *rsp); 115162306a36Sopenharmony_ci 115262306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_DEBUG_SET ============== */ 115362306a36Sopenharmony_ci/* ETHTOOL_MSG_DEBUG_SET - do */ 115462306a36Sopenharmony_cistruct ethtool_debug_set_req { 115562306a36Sopenharmony_ci struct { 115662306a36Sopenharmony_ci __u32 header:1; 115762306a36Sopenharmony_ci __u32 msgmask:1; 115862306a36Sopenharmony_ci } _present; 115962306a36Sopenharmony_ci 116062306a36Sopenharmony_ci struct ethtool_header header; 116162306a36Sopenharmony_ci struct ethtool_bitset msgmask; 116262306a36Sopenharmony_ci}; 116362306a36Sopenharmony_ci 116462306a36Sopenharmony_cistatic inline struct ethtool_debug_set_req *ethtool_debug_set_req_alloc(void) 116562306a36Sopenharmony_ci{ 116662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_debug_set_req)); 116762306a36Sopenharmony_ci} 116862306a36Sopenharmony_civoid ethtool_debug_set_req_free(struct ethtool_debug_set_req *req); 116962306a36Sopenharmony_ci 117062306a36Sopenharmony_cistatic inline void 117162306a36Sopenharmony_ciethtool_debug_set_req_set_header_dev_index(struct ethtool_debug_set_req *req, 117262306a36Sopenharmony_ci __u32 dev_index) 117362306a36Sopenharmony_ci{ 117462306a36Sopenharmony_ci req->_present.header = 1; 117562306a36Sopenharmony_ci req->header._present.dev_index = 1; 117662306a36Sopenharmony_ci req->header.dev_index = dev_index; 117762306a36Sopenharmony_ci} 117862306a36Sopenharmony_cistatic inline void 117962306a36Sopenharmony_ciethtool_debug_set_req_set_header_dev_name(struct ethtool_debug_set_req *req, 118062306a36Sopenharmony_ci const char *dev_name) 118162306a36Sopenharmony_ci{ 118262306a36Sopenharmony_ci free(req->header.dev_name); 118362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 118462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 118562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 118662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 118762306a36Sopenharmony_ci} 118862306a36Sopenharmony_cistatic inline void 118962306a36Sopenharmony_ciethtool_debug_set_req_set_header_flags(struct ethtool_debug_set_req *req, 119062306a36Sopenharmony_ci __u32 flags) 119162306a36Sopenharmony_ci{ 119262306a36Sopenharmony_ci req->_present.header = 1; 119362306a36Sopenharmony_ci req->header._present.flags = 1; 119462306a36Sopenharmony_ci req->header.flags = flags; 119562306a36Sopenharmony_ci} 119662306a36Sopenharmony_cistatic inline void 119762306a36Sopenharmony_ciethtool_debug_set_req_set_msgmask_nomask(struct ethtool_debug_set_req *req) 119862306a36Sopenharmony_ci{ 119962306a36Sopenharmony_ci req->_present.msgmask = 1; 120062306a36Sopenharmony_ci req->msgmask._present.nomask = 1; 120162306a36Sopenharmony_ci} 120262306a36Sopenharmony_cistatic inline void 120362306a36Sopenharmony_ciethtool_debug_set_req_set_msgmask_size(struct ethtool_debug_set_req *req, 120462306a36Sopenharmony_ci __u32 size) 120562306a36Sopenharmony_ci{ 120662306a36Sopenharmony_ci req->_present.msgmask = 1; 120762306a36Sopenharmony_ci req->msgmask._present.size = 1; 120862306a36Sopenharmony_ci req->msgmask.size = size; 120962306a36Sopenharmony_ci} 121062306a36Sopenharmony_cistatic inline void 121162306a36Sopenharmony_ci__ethtool_debug_set_req_set_msgmask_bits_bit(struct ethtool_debug_set_req *req, 121262306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 121362306a36Sopenharmony_ci unsigned int n_bit) 121462306a36Sopenharmony_ci{ 121562306a36Sopenharmony_ci free(req->msgmask.bits.bit); 121662306a36Sopenharmony_ci req->msgmask.bits.bit = bit; 121762306a36Sopenharmony_ci req->msgmask.bits.n_bit = n_bit; 121862306a36Sopenharmony_ci} 121962306a36Sopenharmony_ci 122062306a36Sopenharmony_ci/* 122162306a36Sopenharmony_ci * Set debug message mask. 122262306a36Sopenharmony_ci */ 122362306a36Sopenharmony_ciint ethtool_debug_set(struct ynl_sock *ys, struct ethtool_debug_set_req *req); 122462306a36Sopenharmony_ci 122562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_WOL_GET ============== */ 122662306a36Sopenharmony_ci/* ETHTOOL_MSG_WOL_GET - do */ 122762306a36Sopenharmony_cistruct ethtool_wol_get_req { 122862306a36Sopenharmony_ci struct { 122962306a36Sopenharmony_ci __u32 header:1; 123062306a36Sopenharmony_ci } _present; 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ci struct ethtool_header header; 123362306a36Sopenharmony_ci}; 123462306a36Sopenharmony_ci 123562306a36Sopenharmony_cistatic inline struct ethtool_wol_get_req *ethtool_wol_get_req_alloc(void) 123662306a36Sopenharmony_ci{ 123762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_wol_get_req)); 123862306a36Sopenharmony_ci} 123962306a36Sopenharmony_civoid ethtool_wol_get_req_free(struct ethtool_wol_get_req *req); 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_cistatic inline void 124262306a36Sopenharmony_ciethtool_wol_get_req_set_header_dev_index(struct ethtool_wol_get_req *req, 124362306a36Sopenharmony_ci __u32 dev_index) 124462306a36Sopenharmony_ci{ 124562306a36Sopenharmony_ci req->_present.header = 1; 124662306a36Sopenharmony_ci req->header._present.dev_index = 1; 124762306a36Sopenharmony_ci req->header.dev_index = dev_index; 124862306a36Sopenharmony_ci} 124962306a36Sopenharmony_cistatic inline void 125062306a36Sopenharmony_ciethtool_wol_get_req_set_header_dev_name(struct ethtool_wol_get_req *req, 125162306a36Sopenharmony_ci const char *dev_name) 125262306a36Sopenharmony_ci{ 125362306a36Sopenharmony_ci free(req->header.dev_name); 125462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 125562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 125662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 125762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 125862306a36Sopenharmony_ci} 125962306a36Sopenharmony_cistatic inline void 126062306a36Sopenharmony_ciethtool_wol_get_req_set_header_flags(struct ethtool_wol_get_req *req, 126162306a36Sopenharmony_ci __u32 flags) 126262306a36Sopenharmony_ci{ 126362306a36Sopenharmony_ci req->_present.header = 1; 126462306a36Sopenharmony_ci req->header._present.flags = 1; 126562306a36Sopenharmony_ci req->header.flags = flags; 126662306a36Sopenharmony_ci} 126762306a36Sopenharmony_ci 126862306a36Sopenharmony_cistruct ethtool_wol_get_rsp { 126962306a36Sopenharmony_ci struct { 127062306a36Sopenharmony_ci __u32 header:1; 127162306a36Sopenharmony_ci __u32 modes:1; 127262306a36Sopenharmony_ci __u32 sopass_len; 127362306a36Sopenharmony_ci } _present; 127462306a36Sopenharmony_ci 127562306a36Sopenharmony_ci struct ethtool_header header; 127662306a36Sopenharmony_ci struct ethtool_bitset modes; 127762306a36Sopenharmony_ci void *sopass; 127862306a36Sopenharmony_ci}; 127962306a36Sopenharmony_ci 128062306a36Sopenharmony_civoid ethtool_wol_get_rsp_free(struct ethtool_wol_get_rsp *rsp); 128162306a36Sopenharmony_ci 128262306a36Sopenharmony_ci/* 128362306a36Sopenharmony_ci * Get WOL params. 128462306a36Sopenharmony_ci */ 128562306a36Sopenharmony_cistruct ethtool_wol_get_rsp * 128662306a36Sopenharmony_ciethtool_wol_get(struct ynl_sock *ys, struct ethtool_wol_get_req *req); 128762306a36Sopenharmony_ci 128862306a36Sopenharmony_ci/* ETHTOOL_MSG_WOL_GET - dump */ 128962306a36Sopenharmony_cistruct ethtool_wol_get_req_dump { 129062306a36Sopenharmony_ci struct { 129162306a36Sopenharmony_ci __u32 header:1; 129262306a36Sopenharmony_ci } _present; 129362306a36Sopenharmony_ci 129462306a36Sopenharmony_ci struct ethtool_header header; 129562306a36Sopenharmony_ci}; 129662306a36Sopenharmony_ci 129762306a36Sopenharmony_cistatic inline struct ethtool_wol_get_req_dump * 129862306a36Sopenharmony_ciethtool_wol_get_req_dump_alloc(void) 129962306a36Sopenharmony_ci{ 130062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_wol_get_req_dump)); 130162306a36Sopenharmony_ci} 130262306a36Sopenharmony_civoid ethtool_wol_get_req_dump_free(struct ethtool_wol_get_req_dump *req); 130362306a36Sopenharmony_ci 130462306a36Sopenharmony_cistatic inline void 130562306a36Sopenharmony_ciethtool_wol_get_req_dump_set_header_dev_index(struct ethtool_wol_get_req_dump *req, 130662306a36Sopenharmony_ci __u32 dev_index) 130762306a36Sopenharmony_ci{ 130862306a36Sopenharmony_ci req->_present.header = 1; 130962306a36Sopenharmony_ci req->header._present.dev_index = 1; 131062306a36Sopenharmony_ci req->header.dev_index = dev_index; 131162306a36Sopenharmony_ci} 131262306a36Sopenharmony_cistatic inline void 131362306a36Sopenharmony_ciethtool_wol_get_req_dump_set_header_dev_name(struct ethtool_wol_get_req_dump *req, 131462306a36Sopenharmony_ci const char *dev_name) 131562306a36Sopenharmony_ci{ 131662306a36Sopenharmony_ci free(req->header.dev_name); 131762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 131862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 131962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 132062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 132162306a36Sopenharmony_ci} 132262306a36Sopenharmony_cistatic inline void 132362306a36Sopenharmony_ciethtool_wol_get_req_dump_set_header_flags(struct ethtool_wol_get_req_dump *req, 132462306a36Sopenharmony_ci __u32 flags) 132562306a36Sopenharmony_ci{ 132662306a36Sopenharmony_ci req->_present.header = 1; 132762306a36Sopenharmony_ci req->header._present.flags = 1; 132862306a36Sopenharmony_ci req->header.flags = flags; 132962306a36Sopenharmony_ci} 133062306a36Sopenharmony_ci 133162306a36Sopenharmony_cistruct ethtool_wol_get_list { 133262306a36Sopenharmony_ci struct ethtool_wol_get_list *next; 133362306a36Sopenharmony_ci struct ethtool_wol_get_rsp obj __attribute__ ((aligned (8))); 133462306a36Sopenharmony_ci}; 133562306a36Sopenharmony_ci 133662306a36Sopenharmony_civoid ethtool_wol_get_list_free(struct ethtool_wol_get_list *rsp); 133762306a36Sopenharmony_ci 133862306a36Sopenharmony_cistruct ethtool_wol_get_list * 133962306a36Sopenharmony_ciethtool_wol_get_dump(struct ynl_sock *ys, struct ethtool_wol_get_req_dump *req); 134062306a36Sopenharmony_ci 134162306a36Sopenharmony_ci/* ETHTOOL_MSG_WOL_GET - notify */ 134262306a36Sopenharmony_cistruct ethtool_wol_get_ntf { 134362306a36Sopenharmony_ci __u16 family; 134462306a36Sopenharmony_ci __u8 cmd; 134562306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 134662306a36Sopenharmony_ci void (*free)(struct ethtool_wol_get_ntf *ntf); 134762306a36Sopenharmony_ci struct ethtool_wol_get_rsp obj __attribute__ ((aligned (8))); 134862306a36Sopenharmony_ci}; 134962306a36Sopenharmony_ci 135062306a36Sopenharmony_civoid ethtool_wol_get_ntf_free(struct ethtool_wol_get_ntf *rsp); 135162306a36Sopenharmony_ci 135262306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_WOL_SET ============== */ 135362306a36Sopenharmony_ci/* ETHTOOL_MSG_WOL_SET - do */ 135462306a36Sopenharmony_cistruct ethtool_wol_set_req { 135562306a36Sopenharmony_ci struct { 135662306a36Sopenharmony_ci __u32 header:1; 135762306a36Sopenharmony_ci __u32 modes:1; 135862306a36Sopenharmony_ci __u32 sopass_len; 135962306a36Sopenharmony_ci } _present; 136062306a36Sopenharmony_ci 136162306a36Sopenharmony_ci struct ethtool_header header; 136262306a36Sopenharmony_ci struct ethtool_bitset modes; 136362306a36Sopenharmony_ci void *sopass; 136462306a36Sopenharmony_ci}; 136562306a36Sopenharmony_ci 136662306a36Sopenharmony_cistatic inline struct ethtool_wol_set_req *ethtool_wol_set_req_alloc(void) 136762306a36Sopenharmony_ci{ 136862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_wol_set_req)); 136962306a36Sopenharmony_ci} 137062306a36Sopenharmony_civoid ethtool_wol_set_req_free(struct ethtool_wol_set_req *req); 137162306a36Sopenharmony_ci 137262306a36Sopenharmony_cistatic inline void 137362306a36Sopenharmony_ciethtool_wol_set_req_set_header_dev_index(struct ethtool_wol_set_req *req, 137462306a36Sopenharmony_ci __u32 dev_index) 137562306a36Sopenharmony_ci{ 137662306a36Sopenharmony_ci req->_present.header = 1; 137762306a36Sopenharmony_ci req->header._present.dev_index = 1; 137862306a36Sopenharmony_ci req->header.dev_index = dev_index; 137962306a36Sopenharmony_ci} 138062306a36Sopenharmony_cistatic inline void 138162306a36Sopenharmony_ciethtool_wol_set_req_set_header_dev_name(struct ethtool_wol_set_req *req, 138262306a36Sopenharmony_ci const char *dev_name) 138362306a36Sopenharmony_ci{ 138462306a36Sopenharmony_ci free(req->header.dev_name); 138562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 138662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 138762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 138862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 138962306a36Sopenharmony_ci} 139062306a36Sopenharmony_cistatic inline void 139162306a36Sopenharmony_ciethtool_wol_set_req_set_header_flags(struct ethtool_wol_set_req *req, 139262306a36Sopenharmony_ci __u32 flags) 139362306a36Sopenharmony_ci{ 139462306a36Sopenharmony_ci req->_present.header = 1; 139562306a36Sopenharmony_ci req->header._present.flags = 1; 139662306a36Sopenharmony_ci req->header.flags = flags; 139762306a36Sopenharmony_ci} 139862306a36Sopenharmony_cistatic inline void 139962306a36Sopenharmony_ciethtool_wol_set_req_set_modes_nomask(struct ethtool_wol_set_req *req) 140062306a36Sopenharmony_ci{ 140162306a36Sopenharmony_ci req->_present.modes = 1; 140262306a36Sopenharmony_ci req->modes._present.nomask = 1; 140362306a36Sopenharmony_ci} 140462306a36Sopenharmony_cistatic inline void 140562306a36Sopenharmony_ciethtool_wol_set_req_set_modes_size(struct ethtool_wol_set_req *req, __u32 size) 140662306a36Sopenharmony_ci{ 140762306a36Sopenharmony_ci req->_present.modes = 1; 140862306a36Sopenharmony_ci req->modes._present.size = 1; 140962306a36Sopenharmony_ci req->modes.size = size; 141062306a36Sopenharmony_ci} 141162306a36Sopenharmony_cistatic inline void 141262306a36Sopenharmony_ci__ethtool_wol_set_req_set_modes_bits_bit(struct ethtool_wol_set_req *req, 141362306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 141462306a36Sopenharmony_ci unsigned int n_bit) 141562306a36Sopenharmony_ci{ 141662306a36Sopenharmony_ci free(req->modes.bits.bit); 141762306a36Sopenharmony_ci req->modes.bits.bit = bit; 141862306a36Sopenharmony_ci req->modes.bits.n_bit = n_bit; 141962306a36Sopenharmony_ci} 142062306a36Sopenharmony_cistatic inline void 142162306a36Sopenharmony_ciethtool_wol_set_req_set_sopass(struct ethtool_wol_set_req *req, 142262306a36Sopenharmony_ci const void *sopass, size_t len) 142362306a36Sopenharmony_ci{ 142462306a36Sopenharmony_ci free(req->sopass); 142562306a36Sopenharmony_ci req->_present.sopass_len = len; 142662306a36Sopenharmony_ci req->sopass = malloc(req->_present.sopass_len); 142762306a36Sopenharmony_ci memcpy(req->sopass, sopass, req->_present.sopass_len); 142862306a36Sopenharmony_ci} 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci/* 143162306a36Sopenharmony_ci * Set WOL params. 143262306a36Sopenharmony_ci */ 143362306a36Sopenharmony_ciint ethtool_wol_set(struct ynl_sock *ys, struct ethtool_wol_set_req *req); 143462306a36Sopenharmony_ci 143562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_FEATURES_GET ============== */ 143662306a36Sopenharmony_ci/* ETHTOOL_MSG_FEATURES_GET - do */ 143762306a36Sopenharmony_cistruct ethtool_features_get_req { 143862306a36Sopenharmony_ci struct { 143962306a36Sopenharmony_ci __u32 header:1; 144062306a36Sopenharmony_ci } _present; 144162306a36Sopenharmony_ci 144262306a36Sopenharmony_ci struct ethtool_header header; 144362306a36Sopenharmony_ci}; 144462306a36Sopenharmony_ci 144562306a36Sopenharmony_cistatic inline struct ethtool_features_get_req * 144662306a36Sopenharmony_ciethtool_features_get_req_alloc(void) 144762306a36Sopenharmony_ci{ 144862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_features_get_req)); 144962306a36Sopenharmony_ci} 145062306a36Sopenharmony_civoid ethtool_features_get_req_free(struct ethtool_features_get_req *req); 145162306a36Sopenharmony_ci 145262306a36Sopenharmony_cistatic inline void 145362306a36Sopenharmony_ciethtool_features_get_req_set_header_dev_index(struct ethtool_features_get_req *req, 145462306a36Sopenharmony_ci __u32 dev_index) 145562306a36Sopenharmony_ci{ 145662306a36Sopenharmony_ci req->_present.header = 1; 145762306a36Sopenharmony_ci req->header._present.dev_index = 1; 145862306a36Sopenharmony_ci req->header.dev_index = dev_index; 145962306a36Sopenharmony_ci} 146062306a36Sopenharmony_cistatic inline void 146162306a36Sopenharmony_ciethtool_features_get_req_set_header_dev_name(struct ethtool_features_get_req *req, 146262306a36Sopenharmony_ci const char *dev_name) 146362306a36Sopenharmony_ci{ 146462306a36Sopenharmony_ci free(req->header.dev_name); 146562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 146662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 146762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 146862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 146962306a36Sopenharmony_ci} 147062306a36Sopenharmony_cistatic inline void 147162306a36Sopenharmony_ciethtool_features_get_req_set_header_flags(struct ethtool_features_get_req *req, 147262306a36Sopenharmony_ci __u32 flags) 147362306a36Sopenharmony_ci{ 147462306a36Sopenharmony_ci req->_present.header = 1; 147562306a36Sopenharmony_ci req->header._present.flags = 1; 147662306a36Sopenharmony_ci req->header.flags = flags; 147762306a36Sopenharmony_ci} 147862306a36Sopenharmony_ci 147962306a36Sopenharmony_cistruct ethtool_features_get_rsp { 148062306a36Sopenharmony_ci struct { 148162306a36Sopenharmony_ci __u32 header:1; 148262306a36Sopenharmony_ci __u32 hw:1; 148362306a36Sopenharmony_ci __u32 wanted:1; 148462306a36Sopenharmony_ci __u32 active:1; 148562306a36Sopenharmony_ci __u32 nochange:1; 148662306a36Sopenharmony_ci } _present; 148762306a36Sopenharmony_ci 148862306a36Sopenharmony_ci struct ethtool_header header; 148962306a36Sopenharmony_ci struct ethtool_bitset hw; 149062306a36Sopenharmony_ci struct ethtool_bitset wanted; 149162306a36Sopenharmony_ci struct ethtool_bitset active; 149262306a36Sopenharmony_ci struct ethtool_bitset nochange; 149362306a36Sopenharmony_ci}; 149462306a36Sopenharmony_ci 149562306a36Sopenharmony_civoid ethtool_features_get_rsp_free(struct ethtool_features_get_rsp *rsp); 149662306a36Sopenharmony_ci 149762306a36Sopenharmony_ci/* 149862306a36Sopenharmony_ci * Get features. 149962306a36Sopenharmony_ci */ 150062306a36Sopenharmony_cistruct ethtool_features_get_rsp * 150162306a36Sopenharmony_ciethtool_features_get(struct ynl_sock *ys, struct ethtool_features_get_req *req); 150262306a36Sopenharmony_ci 150362306a36Sopenharmony_ci/* ETHTOOL_MSG_FEATURES_GET - dump */ 150462306a36Sopenharmony_cistruct ethtool_features_get_req_dump { 150562306a36Sopenharmony_ci struct { 150662306a36Sopenharmony_ci __u32 header:1; 150762306a36Sopenharmony_ci } _present; 150862306a36Sopenharmony_ci 150962306a36Sopenharmony_ci struct ethtool_header header; 151062306a36Sopenharmony_ci}; 151162306a36Sopenharmony_ci 151262306a36Sopenharmony_cistatic inline struct ethtool_features_get_req_dump * 151362306a36Sopenharmony_ciethtool_features_get_req_dump_alloc(void) 151462306a36Sopenharmony_ci{ 151562306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_features_get_req_dump)); 151662306a36Sopenharmony_ci} 151762306a36Sopenharmony_civoid 151862306a36Sopenharmony_ciethtool_features_get_req_dump_free(struct ethtool_features_get_req_dump *req); 151962306a36Sopenharmony_ci 152062306a36Sopenharmony_cistatic inline void 152162306a36Sopenharmony_ciethtool_features_get_req_dump_set_header_dev_index(struct ethtool_features_get_req_dump *req, 152262306a36Sopenharmony_ci __u32 dev_index) 152362306a36Sopenharmony_ci{ 152462306a36Sopenharmony_ci req->_present.header = 1; 152562306a36Sopenharmony_ci req->header._present.dev_index = 1; 152662306a36Sopenharmony_ci req->header.dev_index = dev_index; 152762306a36Sopenharmony_ci} 152862306a36Sopenharmony_cistatic inline void 152962306a36Sopenharmony_ciethtool_features_get_req_dump_set_header_dev_name(struct ethtool_features_get_req_dump *req, 153062306a36Sopenharmony_ci const char *dev_name) 153162306a36Sopenharmony_ci{ 153262306a36Sopenharmony_ci free(req->header.dev_name); 153362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 153462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 153562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 153662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 153762306a36Sopenharmony_ci} 153862306a36Sopenharmony_cistatic inline void 153962306a36Sopenharmony_ciethtool_features_get_req_dump_set_header_flags(struct ethtool_features_get_req_dump *req, 154062306a36Sopenharmony_ci __u32 flags) 154162306a36Sopenharmony_ci{ 154262306a36Sopenharmony_ci req->_present.header = 1; 154362306a36Sopenharmony_ci req->header._present.flags = 1; 154462306a36Sopenharmony_ci req->header.flags = flags; 154562306a36Sopenharmony_ci} 154662306a36Sopenharmony_ci 154762306a36Sopenharmony_cistruct ethtool_features_get_list { 154862306a36Sopenharmony_ci struct ethtool_features_get_list *next; 154962306a36Sopenharmony_ci struct ethtool_features_get_rsp obj __attribute__ ((aligned (8))); 155062306a36Sopenharmony_ci}; 155162306a36Sopenharmony_ci 155262306a36Sopenharmony_civoid ethtool_features_get_list_free(struct ethtool_features_get_list *rsp); 155362306a36Sopenharmony_ci 155462306a36Sopenharmony_cistruct ethtool_features_get_list * 155562306a36Sopenharmony_ciethtool_features_get_dump(struct ynl_sock *ys, 155662306a36Sopenharmony_ci struct ethtool_features_get_req_dump *req); 155762306a36Sopenharmony_ci 155862306a36Sopenharmony_ci/* ETHTOOL_MSG_FEATURES_GET - notify */ 155962306a36Sopenharmony_cistruct ethtool_features_get_ntf { 156062306a36Sopenharmony_ci __u16 family; 156162306a36Sopenharmony_ci __u8 cmd; 156262306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 156362306a36Sopenharmony_ci void (*free)(struct ethtool_features_get_ntf *ntf); 156462306a36Sopenharmony_ci struct ethtool_features_get_rsp obj __attribute__ ((aligned (8))); 156562306a36Sopenharmony_ci}; 156662306a36Sopenharmony_ci 156762306a36Sopenharmony_civoid ethtool_features_get_ntf_free(struct ethtool_features_get_ntf *rsp); 156862306a36Sopenharmony_ci 156962306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_FEATURES_SET ============== */ 157062306a36Sopenharmony_ci/* ETHTOOL_MSG_FEATURES_SET - do */ 157162306a36Sopenharmony_cistruct ethtool_features_set_req { 157262306a36Sopenharmony_ci struct { 157362306a36Sopenharmony_ci __u32 header:1; 157462306a36Sopenharmony_ci __u32 hw:1; 157562306a36Sopenharmony_ci __u32 wanted:1; 157662306a36Sopenharmony_ci __u32 active:1; 157762306a36Sopenharmony_ci __u32 nochange:1; 157862306a36Sopenharmony_ci } _present; 157962306a36Sopenharmony_ci 158062306a36Sopenharmony_ci struct ethtool_header header; 158162306a36Sopenharmony_ci struct ethtool_bitset hw; 158262306a36Sopenharmony_ci struct ethtool_bitset wanted; 158362306a36Sopenharmony_ci struct ethtool_bitset active; 158462306a36Sopenharmony_ci struct ethtool_bitset nochange; 158562306a36Sopenharmony_ci}; 158662306a36Sopenharmony_ci 158762306a36Sopenharmony_cistatic inline struct ethtool_features_set_req * 158862306a36Sopenharmony_ciethtool_features_set_req_alloc(void) 158962306a36Sopenharmony_ci{ 159062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_features_set_req)); 159162306a36Sopenharmony_ci} 159262306a36Sopenharmony_civoid ethtool_features_set_req_free(struct ethtool_features_set_req *req); 159362306a36Sopenharmony_ci 159462306a36Sopenharmony_cistatic inline void 159562306a36Sopenharmony_ciethtool_features_set_req_set_header_dev_index(struct ethtool_features_set_req *req, 159662306a36Sopenharmony_ci __u32 dev_index) 159762306a36Sopenharmony_ci{ 159862306a36Sopenharmony_ci req->_present.header = 1; 159962306a36Sopenharmony_ci req->header._present.dev_index = 1; 160062306a36Sopenharmony_ci req->header.dev_index = dev_index; 160162306a36Sopenharmony_ci} 160262306a36Sopenharmony_cistatic inline void 160362306a36Sopenharmony_ciethtool_features_set_req_set_header_dev_name(struct ethtool_features_set_req *req, 160462306a36Sopenharmony_ci const char *dev_name) 160562306a36Sopenharmony_ci{ 160662306a36Sopenharmony_ci free(req->header.dev_name); 160762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 160862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 160962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 161062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 161162306a36Sopenharmony_ci} 161262306a36Sopenharmony_cistatic inline void 161362306a36Sopenharmony_ciethtool_features_set_req_set_header_flags(struct ethtool_features_set_req *req, 161462306a36Sopenharmony_ci __u32 flags) 161562306a36Sopenharmony_ci{ 161662306a36Sopenharmony_ci req->_present.header = 1; 161762306a36Sopenharmony_ci req->header._present.flags = 1; 161862306a36Sopenharmony_ci req->header.flags = flags; 161962306a36Sopenharmony_ci} 162062306a36Sopenharmony_cistatic inline void 162162306a36Sopenharmony_ciethtool_features_set_req_set_hw_nomask(struct ethtool_features_set_req *req) 162262306a36Sopenharmony_ci{ 162362306a36Sopenharmony_ci req->_present.hw = 1; 162462306a36Sopenharmony_ci req->hw._present.nomask = 1; 162562306a36Sopenharmony_ci} 162662306a36Sopenharmony_cistatic inline void 162762306a36Sopenharmony_ciethtool_features_set_req_set_hw_size(struct ethtool_features_set_req *req, 162862306a36Sopenharmony_ci __u32 size) 162962306a36Sopenharmony_ci{ 163062306a36Sopenharmony_ci req->_present.hw = 1; 163162306a36Sopenharmony_ci req->hw._present.size = 1; 163262306a36Sopenharmony_ci req->hw.size = size; 163362306a36Sopenharmony_ci} 163462306a36Sopenharmony_cistatic inline void 163562306a36Sopenharmony_ci__ethtool_features_set_req_set_hw_bits_bit(struct ethtool_features_set_req *req, 163662306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 163762306a36Sopenharmony_ci unsigned int n_bit) 163862306a36Sopenharmony_ci{ 163962306a36Sopenharmony_ci free(req->hw.bits.bit); 164062306a36Sopenharmony_ci req->hw.bits.bit = bit; 164162306a36Sopenharmony_ci req->hw.bits.n_bit = n_bit; 164262306a36Sopenharmony_ci} 164362306a36Sopenharmony_cistatic inline void 164462306a36Sopenharmony_ciethtool_features_set_req_set_wanted_nomask(struct ethtool_features_set_req *req) 164562306a36Sopenharmony_ci{ 164662306a36Sopenharmony_ci req->_present.wanted = 1; 164762306a36Sopenharmony_ci req->wanted._present.nomask = 1; 164862306a36Sopenharmony_ci} 164962306a36Sopenharmony_cistatic inline void 165062306a36Sopenharmony_ciethtool_features_set_req_set_wanted_size(struct ethtool_features_set_req *req, 165162306a36Sopenharmony_ci __u32 size) 165262306a36Sopenharmony_ci{ 165362306a36Sopenharmony_ci req->_present.wanted = 1; 165462306a36Sopenharmony_ci req->wanted._present.size = 1; 165562306a36Sopenharmony_ci req->wanted.size = size; 165662306a36Sopenharmony_ci} 165762306a36Sopenharmony_cistatic inline void 165862306a36Sopenharmony_ci__ethtool_features_set_req_set_wanted_bits_bit(struct ethtool_features_set_req *req, 165962306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 166062306a36Sopenharmony_ci unsigned int n_bit) 166162306a36Sopenharmony_ci{ 166262306a36Sopenharmony_ci free(req->wanted.bits.bit); 166362306a36Sopenharmony_ci req->wanted.bits.bit = bit; 166462306a36Sopenharmony_ci req->wanted.bits.n_bit = n_bit; 166562306a36Sopenharmony_ci} 166662306a36Sopenharmony_cistatic inline void 166762306a36Sopenharmony_ciethtool_features_set_req_set_active_nomask(struct ethtool_features_set_req *req) 166862306a36Sopenharmony_ci{ 166962306a36Sopenharmony_ci req->_present.active = 1; 167062306a36Sopenharmony_ci req->active._present.nomask = 1; 167162306a36Sopenharmony_ci} 167262306a36Sopenharmony_cistatic inline void 167362306a36Sopenharmony_ciethtool_features_set_req_set_active_size(struct ethtool_features_set_req *req, 167462306a36Sopenharmony_ci __u32 size) 167562306a36Sopenharmony_ci{ 167662306a36Sopenharmony_ci req->_present.active = 1; 167762306a36Sopenharmony_ci req->active._present.size = 1; 167862306a36Sopenharmony_ci req->active.size = size; 167962306a36Sopenharmony_ci} 168062306a36Sopenharmony_cistatic inline void 168162306a36Sopenharmony_ci__ethtool_features_set_req_set_active_bits_bit(struct ethtool_features_set_req *req, 168262306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 168362306a36Sopenharmony_ci unsigned int n_bit) 168462306a36Sopenharmony_ci{ 168562306a36Sopenharmony_ci free(req->active.bits.bit); 168662306a36Sopenharmony_ci req->active.bits.bit = bit; 168762306a36Sopenharmony_ci req->active.bits.n_bit = n_bit; 168862306a36Sopenharmony_ci} 168962306a36Sopenharmony_cistatic inline void 169062306a36Sopenharmony_ciethtool_features_set_req_set_nochange_nomask(struct ethtool_features_set_req *req) 169162306a36Sopenharmony_ci{ 169262306a36Sopenharmony_ci req->_present.nochange = 1; 169362306a36Sopenharmony_ci req->nochange._present.nomask = 1; 169462306a36Sopenharmony_ci} 169562306a36Sopenharmony_cistatic inline void 169662306a36Sopenharmony_ciethtool_features_set_req_set_nochange_size(struct ethtool_features_set_req *req, 169762306a36Sopenharmony_ci __u32 size) 169862306a36Sopenharmony_ci{ 169962306a36Sopenharmony_ci req->_present.nochange = 1; 170062306a36Sopenharmony_ci req->nochange._present.size = 1; 170162306a36Sopenharmony_ci req->nochange.size = size; 170262306a36Sopenharmony_ci} 170362306a36Sopenharmony_cistatic inline void 170462306a36Sopenharmony_ci__ethtool_features_set_req_set_nochange_bits_bit(struct ethtool_features_set_req *req, 170562306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 170662306a36Sopenharmony_ci unsigned int n_bit) 170762306a36Sopenharmony_ci{ 170862306a36Sopenharmony_ci free(req->nochange.bits.bit); 170962306a36Sopenharmony_ci req->nochange.bits.bit = bit; 171062306a36Sopenharmony_ci req->nochange.bits.n_bit = n_bit; 171162306a36Sopenharmony_ci} 171262306a36Sopenharmony_ci 171362306a36Sopenharmony_cistruct ethtool_features_set_rsp { 171462306a36Sopenharmony_ci struct { 171562306a36Sopenharmony_ci __u32 header:1; 171662306a36Sopenharmony_ci __u32 hw:1; 171762306a36Sopenharmony_ci __u32 wanted:1; 171862306a36Sopenharmony_ci __u32 active:1; 171962306a36Sopenharmony_ci __u32 nochange:1; 172062306a36Sopenharmony_ci } _present; 172162306a36Sopenharmony_ci 172262306a36Sopenharmony_ci struct ethtool_header header; 172362306a36Sopenharmony_ci struct ethtool_bitset hw; 172462306a36Sopenharmony_ci struct ethtool_bitset wanted; 172562306a36Sopenharmony_ci struct ethtool_bitset active; 172662306a36Sopenharmony_ci struct ethtool_bitset nochange; 172762306a36Sopenharmony_ci}; 172862306a36Sopenharmony_ci 172962306a36Sopenharmony_civoid ethtool_features_set_rsp_free(struct ethtool_features_set_rsp *rsp); 173062306a36Sopenharmony_ci 173162306a36Sopenharmony_ci/* 173262306a36Sopenharmony_ci * Set features. 173362306a36Sopenharmony_ci */ 173462306a36Sopenharmony_cistruct ethtool_features_set_rsp * 173562306a36Sopenharmony_ciethtool_features_set(struct ynl_sock *ys, struct ethtool_features_set_req *req); 173662306a36Sopenharmony_ci 173762306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PRIVFLAGS_GET ============== */ 173862306a36Sopenharmony_ci/* ETHTOOL_MSG_PRIVFLAGS_GET - do */ 173962306a36Sopenharmony_cistruct ethtool_privflags_get_req { 174062306a36Sopenharmony_ci struct { 174162306a36Sopenharmony_ci __u32 header:1; 174262306a36Sopenharmony_ci } _present; 174362306a36Sopenharmony_ci 174462306a36Sopenharmony_ci struct ethtool_header header; 174562306a36Sopenharmony_ci}; 174662306a36Sopenharmony_ci 174762306a36Sopenharmony_cistatic inline struct ethtool_privflags_get_req * 174862306a36Sopenharmony_ciethtool_privflags_get_req_alloc(void) 174962306a36Sopenharmony_ci{ 175062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_privflags_get_req)); 175162306a36Sopenharmony_ci} 175262306a36Sopenharmony_civoid ethtool_privflags_get_req_free(struct ethtool_privflags_get_req *req); 175362306a36Sopenharmony_ci 175462306a36Sopenharmony_cistatic inline void 175562306a36Sopenharmony_ciethtool_privflags_get_req_set_header_dev_index(struct ethtool_privflags_get_req *req, 175662306a36Sopenharmony_ci __u32 dev_index) 175762306a36Sopenharmony_ci{ 175862306a36Sopenharmony_ci req->_present.header = 1; 175962306a36Sopenharmony_ci req->header._present.dev_index = 1; 176062306a36Sopenharmony_ci req->header.dev_index = dev_index; 176162306a36Sopenharmony_ci} 176262306a36Sopenharmony_cistatic inline void 176362306a36Sopenharmony_ciethtool_privflags_get_req_set_header_dev_name(struct ethtool_privflags_get_req *req, 176462306a36Sopenharmony_ci const char *dev_name) 176562306a36Sopenharmony_ci{ 176662306a36Sopenharmony_ci free(req->header.dev_name); 176762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 176862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 176962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 177062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 177162306a36Sopenharmony_ci} 177262306a36Sopenharmony_cistatic inline void 177362306a36Sopenharmony_ciethtool_privflags_get_req_set_header_flags(struct ethtool_privflags_get_req *req, 177462306a36Sopenharmony_ci __u32 flags) 177562306a36Sopenharmony_ci{ 177662306a36Sopenharmony_ci req->_present.header = 1; 177762306a36Sopenharmony_ci req->header._present.flags = 1; 177862306a36Sopenharmony_ci req->header.flags = flags; 177962306a36Sopenharmony_ci} 178062306a36Sopenharmony_ci 178162306a36Sopenharmony_cistruct ethtool_privflags_get_rsp { 178262306a36Sopenharmony_ci struct { 178362306a36Sopenharmony_ci __u32 header:1; 178462306a36Sopenharmony_ci __u32 flags:1; 178562306a36Sopenharmony_ci } _present; 178662306a36Sopenharmony_ci 178762306a36Sopenharmony_ci struct ethtool_header header; 178862306a36Sopenharmony_ci struct ethtool_bitset flags; 178962306a36Sopenharmony_ci}; 179062306a36Sopenharmony_ci 179162306a36Sopenharmony_civoid ethtool_privflags_get_rsp_free(struct ethtool_privflags_get_rsp *rsp); 179262306a36Sopenharmony_ci 179362306a36Sopenharmony_ci/* 179462306a36Sopenharmony_ci * Get device private flags. 179562306a36Sopenharmony_ci */ 179662306a36Sopenharmony_cistruct ethtool_privflags_get_rsp * 179762306a36Sopenharmony_ciethtool_privflags_get(struct ynl_sock *ys, 179862306a36Sopenharmony_ci struct ethtool_privflags_get_req *req); 179962306a36Sopenharmony_ci 180062306a36Sopenharmony_ci/* ETHTOOL_MSG_PRIVFLAGS_GET - dump */ 180162306a36Sopenharmony_cistruct ethtool_privflags_get_req_dump { 180262306a36Sopenharmony_ci struct { 180362306a36Sopenharmony_ci __u32 header:1; 180462306a36Sopenharmony_ci } _present; 180562306a36Sopenharmony_ci 180662306a36Sopenharmony_ci struct ethtool_header header; 180762306a36Sopenharmony_ci}; 180862306a36Sopenharmony_ci 180962306a36Sopenharmony_cistatic inline struct ethtool_privflags_get_req_dump * 181062306a36Sopenharmony_ciethtool_privflags_get_req_dump_alloc(void) 181162306a36Sopenharmony_ci{ 181262306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_privflags_get_req_dump)); 181362306a36Sopenharmony_ci} 181462306a36Sopenharmony_civoid 181562306a36Sopenharmony_ciethtool_privflags_get_req_dump_free(struct ethtool_privflags_get_req_dump *req); 181662306a36Sopenharmony_ci 181762306a36Sopenharmony_cistatic inline void 181862306a36Sopenharmony_ciethtool_privflags_get_req_dump_set_header_dev_index(struct ethtool_privflags_get_req_dump *req, 181962306a36Sopenharmony_ci __u32 dev_index) 182062306a36Sopenharmony_ci{ 182162306a36Sopenharmony_ci req->_present.header = 1; 182262306a36Sopenharmony_ci req->header._present.dev_index = 1; 182362306a36Sopenharmony_ci req->header.dev_index = dev_index; 182462306a36Sopenharmony_ci} 182562306a36Sopenharmony_cistatic inline void 182662306a36Sopenharmony_ciethtool_privflags_get_req_dump_set_header_dev_name(struct ethtool_privflags_get_req_dump *req, 182762306a36Sopenharmony_ci const char *dev_name) 182862306a36Sopenharmony_ci{ 182962306a36Sopenharmony_ci free(req->header.dev_name); 183062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 183162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 183262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 183362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 183462306a36Sopenharmony_ci} 183562306a36Sopenharmony_cistatic inline void 183662306a36Sopenharmony_ciethtool_privflags_get_req_dump_set_header_flags(struct ethtool_privflags_get_req_dump *req, 183762306a36Sopenharmony_ci __u32 flags) 183862306a36Sopenharmony_ci{ 183962306a36Sopenharmony_ci req->_present.header = 1; 184062306a36Sopenharmony_ci req->header._present.flags = 1; 184162306a36Sopenharmony_ci req->header.flags = flags; 184262306a36Sopenharmony_ci} 184362306a36Sopenharmony_ci 184462306a36Sopenharmony_cistruct ethtool_privflags_get_list { 184562306a36Sopenharmony_ci struct ethtool_privflags_get_list *next; 184662306a36Sopenharmony_ci struct ethtool_privflags_get_rsp obj __attribute__ ((aligned (8))); 184762306a36Sopenharmony_ci}; 184862306a36Sopenharmony_ci 184962306a36Sopenharmony_civoid ethtool_privflags_get_list_free(struct ethtool_privflags_get_list *rsp); 185062306a36Sopenharmony_ci 185162306a36Sopenharmony_cistruct ethtool_privflags_get_list * 185262306a36Sopenharmony_ciethtool_privflags_get_dump(struct ynl_sock *ys, 185362306a36Sopenharmony_ci struct ethtool_privflags_get_req_dump *req); 185462306a36Sopenharmony_ci 185562306a36Sopenharmony_ci/* ETHTOOL_MSG_PRIVFLAGS_GET - notify */ 185662306a36Sopenharmony_cistruct ethtool_privflags_get_ntf { 185762306a36Sopenharmony_ci __u16 family; 185862306a36Sopenharmony_ci __u8 cmd; 185962306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 186062306a36Sopenharmony_ci void (*free)(struct ethtool_privflags_get_ntf *ntf); 186162306a36Sopenharmony_ci struct ethtool_privflags_get_rsp obj __attribute__ ((aligned (8))); 186262306a36Sopenharmony_ci}; 186362306a36Sopenharmony_ci 186462306a36Sopenharmony_civoid ethtool_privflags_get_ntf_free(struct ethtool_privflags_get_ntf *rsp); 186562306a36Sopenharmony_ci 186662306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PRIVFLAGS_SET ============== */ 186762306a36Sopenharmony_ci/* ETHTOOL_MSG_PRIVFLAGS_SET - do */ 186862306a36Sopenharmony_cistruct ethtool_privflags_set_req { 186962306a36Sopenharmony_ci struct { 187062306a36Sopenharmony_ci __u32 header:1; 187162306a36Sopenharmony_ci __u32 flags:1; 187262306a36Sopenharmony_ci } _present; 187362306a36Sopenharmony_ci 187462306a36Sopenharmony_ci struct ethtool_header header; 187562306a36Sopenharmony_ci struct ethtool_bitset flags; 187662306a36Sopenharmony_ci}; 187762306a36Sopenharmony_ci 187862306a36Sopenharmony_cistatic inline struct ethtool_privflags_set_req * 187962306a36Sopenharmony_ciethtool_privflags_set_req_alloc(void) 188062306a36Sopenharmony_ci{ 188162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_privflags_set_req)); 188262306a36Sopenharmony_ci} 188362306a36Sopenharmony_civoid ethtool_privflags_set_req_free(struct ethtool_privflags_set_req *req); 188462306a36Sopenharmony_ci 188562306a36Sopenharmony_cistatic inline void 188662306a36Sopenharmony_ciethtool_privflags_set_req_set_header_dev_index(struct ethtool_privflags_set_req *req, 188762306a36Sopenharmony_ci __u32 dev_index) 188862306a36Sopenharmony_ci{ 188962306a36Sopenharmony_ci req->_present.header = 1; 189062306a36Sopenharmony_ci req->header._present.dev_index = 1; 189162306a36Sopenharmony_ci req->header.dev_index = dev_index; 189262306a36Sopenharmony_ci} 189362306a36Sopenharmony_cistatic inline void 189462306a36Sopenharmony_ciethtool_privflags_set_req_set_header_dev_name(struct ethtool_privflags_set_req *req, 189562306a36Sopenharmony_ci const char *dev_name) 189662306a36Sopenharmony_ci{ 189762306a36Sopenharmony_ci free(req->header.dev_name); 189862306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 189962306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 190062306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 190162306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 190262306a36Sopenharmony_ci} 190362306a36Sopenharmony_cistatic inline void 190462306a36Sopenharmony_ciethtool_privflags_set_req_set_header_flags(struct ethtool_privflags_set_req *req, 190562306a36Sopenharmony_ci __u32 flags) 190662306a36Sopenharmony_ci{ 190762306a36Sopenharmony_ci req->_present.header = 1; 190862306a36Sopenharmony_ci req->header._present.flags = 1; 190962306a36Sopenharmony_ci req->header.flags = flags; 191062306a36Sopenharmony_ci} 191162306a36Sopenharmony_cistatic inline void 191262306a36Sopenharmony_ciethtool_privflags_set_req_set_flags_nomask(struct ethtool_privflags_set_req *req) 191362306a36Sopenharmony_ci{ 191462306a36Sopenharmony_ci req->_present.flags = 1; 191562306a36Sopenharmony_ci req->flags._present.nomask = 1; 191662306a36Sopenharmony_ci} 191762306a36Sopenharmony_cistatic inline void 191862306a36Sopenharmony_ciethtool_privflags_set_req_set_flags_size(struct ethtool_privflags_set_req *req, 191962306a36Sopenharmony_ci __u32 size) 192062306a36Sopenharmony_ci{ 192162306a36Sopenharmony_ci req->_present.flags = 1; 192262306a36Sopenharmony_ci req->flags._present.size = 1; 192362306a36Sopenharmony_ci req->flags.size = size; 192462306a36Sopenharmony_ci} 192562306a36Sopenharmony_cistatic inline void 192662306a36Sopenharmony_ci__ethtool_privflags_set_req_set_flags_bits_bit(struct ethtool_privflags_set_req *req, 192762306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 192862306a36Sopenharmony_ci unsigned int n_bit) 192962306a36Sopenharmony_ci{ 193062306a36Sopenharmony_ci free(req->flags.bits.bit); 193162306a36Sopenharmony_ci req->flags.bits.bit = bit; 193262306a36Sopenharmony_ci req->flags.bits.n_bit = n_bit; 193362306a36Sopenharmony_ci} 193462306a36Sopenharmony_ci 193562306a36Sopenharmony_ci/* 193662306a36Sopenharmony_ci * Set device private flags. 193762306a36Sopenharmony_ci */ 193862306a36Sopenharmony_ciint ethtool_privflags_set(struct ynl_sock *ys, 193962306a36Sopenharmony_ci struct ethtool_privflags_set_req *req); 194062306a36Sopenharmony_ci 194162306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_RINGS_GET ============== */ 194262306a36Sopenharmony_ci/* ETHTOOL_MSG_RINGS_GET - do */ 194362306a36Sopenharmony_cistruct ethtool_rings_get_req { 194462306a36Sopenharmony_ci struct { 194562306a36Sopenharmony_ci __u32 header:1; 194662306a36Sopenharmony_ci } _present; 194762306a36Sopenharmony_ci 194862306a36Sopenharmony_ci struct ethtool_header header; 194962306a36Sopenharmony_ci}; 195062306a36Sopenharmony_ci 195162306a36Sopenharmony_cistatic inline struct ethtool_rings_get_req *ethtool_rings_get_req_alloc(void) 195262306a36Sopenharmony_ci{ 195362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_rings_get_req)); 195462306a36Sopenharmony_ci} 195562306a36Sopenharmony_civoid ethtool_rings_get_req_free(struct ethtool_rings_get_req *req); 195662306a36Sopenharmony_ci 195762306a36Sopenharmony_cistatic inline void 195862306a36Sopenharmony_ciethtool_rings_get_req_set_header_dev_index(struct ethtool_rings_get_req *req, 195962306a36Sopenharmony_ci __u32 dev_index) 196062306a36Sopenharmony_ci{ 196162306a36Sopenharmony_ci req->_present.header = 1; 196262306a36Sopenharmony_ci req->header._present.dev_index = 1; 196362306a36Sopenharmony_ci req->header.dev_index = dev_index; 196462306a36Sopenharmony_ci} 196562306a36Sopenharmony_cistatic inline void 196662306a36Sopenharmony_ciethtool_rings_get_req_set_header_dev_name(struct ethtool_rings_get_req *req, 196762306a36Sopenharmony_ci const char *dev_name) 196862306a36Sopenharmony_ci{ 196962306a36Sopenharmony_ci free(req->header.dev_name); 197062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 197162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 197262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 197362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 197462306a36Sopenharmony_ci} 197562306a36Sopenharmony_cistatic inline void 197662306a36Sopenharmony_ciethtool_rings_get_req_set_header_flags(struct ethtool_rings_get_req *req, 197762306a36Sopenharmony_ci __u32 flags) 197862306a36Sopenharmony_ci{ 197962306a36Sopenharmony_ci req->_present.header = 1; 198062306a36Sopenharmony_ci req->header._present.flags = 1; 198162306a36Sopenharmony_ci req->header.flags = flags; 198262306a36Sopenharmony_ci} 198362306a36Sopenharmony_ci 198462306a36Sopenharmony_cistruct ethtool_rings_get_rsp { 198562306a36Sopenharmony_ci struct { 198662306a36Sopenharmony_ci __u32 header:1; 198762306a36Sopenharmony_ci __u32 rx_max:1; 198862306a36Sopenharmony_ci __u32 rx_mini_max:1; 198962306a36Sopenharmony_ci __u32 rx_jumbo_max:1; 199062306a36Sopenharmony_ci __u32 tx_max:1; 199162306a36Sopenharmony_ci __u32 rx:1; 199262306a36Sopenharmony_ci __u32 rx_mini:1; 199362306a36Sopenharmony_ci __u32 rx_jumbo:1; 199462306a36Sopenharmony_ci __u32 tx:1; 199562306a36Sopenharmony_ci __u32 rx_buf_len:1; 199662306a36Sopenharmony_ci __u32 tcp_data_split:1; 199762306a36Sopenharmony_ci __u32 cqe_size:1; 199862306a36Sopenharmony_ci __u32 tx_push:1; 199962306a36Sopenharmony_ci __u32 rx_push:1; 200062306a36Sopenharmony_ci __u32 tx_push_buf_len:1; 200162306a36Sopenharmony_ci __u32 tx_push_buf_len_max:1; 200262306a36Sopenharmony_ci } _present; 200362306a36Sopenharmony_ci 200462306a36Sopenharmony_ci struct ethtool_header header; 200562306a36Sopenharmony_ci __u32 rx_max; 200662306a36Sopenharmony_ci __u32 rx_mini_max; 200762306a36Sopenharmony_ci __u32 rx_jumbo_max; 200862306a36Sopenharmony_ci __u32 tx_max; 200962306a36Sopenharmony_ci __u32 rx; 201062306a36Sopenharmony_ci __u32 rx_mini; 201162306a36Sopenharmony_ci __u32 rx_jumbo; 201262306a36Sopenharmony_ci __u32 tx; 201362306a36Sopenharmony_ci __u32 rx_buf_len; 201462306a36Sopenharmony_ci __u8 tcp_data_split; 201562306a36Sopenharmony_ci __u32 cqe_size; 201662306a36Sopenharmony_ci __u8 tx_push; 201762306a36Sopenharmony_ci __u8 rx_push; 201862306a36Sopenharmony_ci __u32 tx_push_buf_len; 201962306a36Sopenharmony_ci __u32 tx_push_buf_len_max; 202062306a36Sopenharmony_ci}; 202162306a36Sopenharmony_ci 202262306a36Sopenharmony_civoid ethtool_rings_get_rsp_free(struct ethtool_rings_get_rsp *rsp); 202362306a36Sopenharmony_ci 202462306a36Sopenharmony_ci/* 202562306a36Sopenharmony_ci * Get ring params. 202662306a36Sopenharmony_ci */ 202762306a36Sopenharmony_cistruct ethtool_rings_get_rsp * 202862306a36Sopenharmony_ciethtool_rings_get(struct ynl_sock *ys, struct ethtool_rings_get_req *req); 202962306a36Sopenharmony_ci 203062306a36Sopenharmony_ci/* ETHTOOL_MSG_RINGS_GET - dump */ 203162306a36Sopenharmony_cistruct ethtool_rings_get_req_dump { 203262306a36Sopenharmony_ci struct { 203362306a36Sopenharmony_ci __u32 header:1; 203462306a36Sopenharmony_ci } _present; 203562306a36Sopenharmony_ci 203662306a36Sopenharmony_ci struct ethtool_header header; 203762306a36Sopenharmony_ci}; 203862306a36Sopenharmony_ci 203962306a36Sopenharmony_cistatic inline struct ethtool_rings_get_req_dump * 204062306a36Sopenharmony_ciethtool_rings_get_req_dump_alloc(void) 204162306a36Sopenharmony_ci{ 204262306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_rings_get_req_dump)); 204362306a36Sopenharmony_ci} 204462306a36Sopenharmony_civoid ethtool_rings_get_req_dump_free(struct ethtool_rings_get_req_dump *req); 204562306a36Sopenharmony_ci 204662306a36Sopenharmony_cistatic inline void 204762306a36Sopenharmony_ciethtool_rings_get_req_dump_set_header_dev_index(struct ethtool_rings_get_req_dump *req, 204862306a36Sopenharmony_ci __u32 dev_index) 204962306a36Sopenharmony_ci{ 205062306a36Sopenharmony_ci req->_present.header = 1; 205162306a36Sopenharmony_ci req->header._present.dev_index = 1; 205262306a36Sopenharmony_ci req->header.dev_index = dev_index; 205362306a36Sopenharmony_ci} 205462306a36Sopenharmony_cistatic inline void 205562306a36Sopenharmony_ciethtool_rings_get_req_dump_set_header_dev_name(struct ethtool_rings_get_req_dump *req, 205662306a36Sopenharmony_ci const char *dev_name) 205762306a36Sopenharmony_ci{ 205862306a36Sopenharmony_ci free(req->header.dev_name); 205962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 206062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 206162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 206262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 206362306a36Sopenharmony_ci} 206462306a36Sopenharmony_cistatic inline void 206562306a36Sopenharmony_ciethtool_rings_get_req_dump_set_header_flags(struct ethtool_rings_get_req_dump *req, 206662306a36Sopenharmony_ci __u32 flags) 206762306a36Sopenharmony_ci{ 206862306a36Sopenharmony_ci req->_present.header = 1; 206962306a36Sopenharmony_ci req->header._present.flags = 1; 207062306a36Sopenharmony_ci req->header.flags = flags; 207162306a36Sopenharmony_ci} 207262306a36Sopenharmony_ci 207362306a36Sopenharmony_cistruct ethtool_rings_get_list { 207462306a36Sopenharmony_ci struct ethtool_rings_get_list *next; 207562306a36Sopenharmony_ci struct ethtool_rings_get_rsp obj __attribute__ ((aligned (8))); 207662306a36Sopenharmony_ci}; 207762306a36Sopenharmony_ci 207862306a36Sopenharmony_civoid ethtool_rings_get_list_free(struct ethtool_rings_get_list *rsp); 207962306a36Sopenharmony_ci 208062306a36Sopenharmony_cistruct ethtool_rings_get_list * 208162306a36Sopenharmony_ciethtool_rings_get_dump(struct ynl_sock *ys, 208262306a36Sopenharmony_ci struct ethtool_rings_get_req_dump *req); 208362306a36Sopenharmony_ci 208462306a36Sopenharmony_ci/* ETHTOOL_MSG_RINGS_GET - notify */ 208562306a36Sopenharmony_cistruct ethtool_rings_get_ntf { 208662306a36Sopenharmony_ci __u16 family; 208762306a36Sopenharmony_ci __u8 cmd; 208862306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 208962306a36Sopenharmony_ci void (*free)(struct ethtool_rings_get_ntf *ntf); 209062306a36Sopenharmony_ci struct ethtool_rings_get_rsp obj __attribute__ ((aligned (8))); 209162306a36Sopenharmony_ci}; 209262306a36Sopenharmony_ci 209362306a36Sopenharmony_civoid ethtool_rings_get_ntf_free(struct ethtool_rings_get_ntf *rsp); 209462306a36Sopenharmony_ci 209562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_RINGS_SET ============== */ 209662306a36Sopenharmony_ci/* ETHTOOL_MSG_RINGS_SET - do */ 209762306a36Sopenharmony_cistruct ethtool_rings_set_req { 209862306a36Sopenharmony_ci struct { 209962306a36Sopenharmony_ci __u32 header:1; 210062306a36Sopenharmony_ci __u32 rx_max:1; 210162306a36Sopenharmony_ci __u32 rx_mini_max:1; 210262306a36Sopenharmony_ci __u32 rx_jumbo_max:1; 210362306a36Sopenharmony_ci __u32 tx_max:1; 210462306a36Sopenharmony_ci __u32 rx:1; 210562306a36Sopenharmony_ci __u32 rx_mini:1; 210662306a36Sopenharmony_ci __u32 rx_jumbo:1; 210762306a36Sopenharmony_ci __u32 tx:1; 210862306a36Sopenharmony_ci __u32 rx_buf_len:1; 210962306a36Sopenharmony_ci __u32 tcp_data_split:1; 211062306a36Sopenharmony_ci __u32 cqe_size:1; 211162306a36Sopenharmony_ci __u32 tx_push:1; 211262306a36Sopenharmony_ci __u32 rx_push:1; 211362306a36Sopenharmony_ci __u32 tx_push_buf_len:1; 211462306a36Sopenharmony_ci __u32 tx_push_buf_len_max:1; 211562306a36Sopenharmony_ci } _present; 211662306a36Sopenharmony_ci 211762306a36Sopenharmony_ci struct ethtool_header header; 211862306a36Sopenharmony_ci __u32 rx_max; 211962306a36Sopenharmony_ci __u32 rx_mini_max; 212062306a36Sopenharmony_ci __u32 rx_jumbo_max; 212162306a36Sopenharmony_ci __u32 tx_max; 212262306a36Sopenharmony_ci __u32 rx; 212362306a36Sopenharmony_ci __u32 rx_mini; 212462306a36Sopenharmony_ci __u32 rx_jumbo; 212562306a36Sopenharmony_ci __u32 tx; 212662306a36Sopenharmony_ci __u32 rx_buf_len; 212762306a36Sopenharmony_ci __u8 tcp_data_split; 212862306a36Sopenharmony_ci __u32 cqe_size; 212962306a36Sopenharmony_ci __u8 tx_push; 213062306a36Sopenharmony_ci __u8 rx_push; 213162306a36Sopenharmony_ci __u32 tx_push_buf_len; 213262306a36Sopenharmony_ci __u32 tx_push_buf_len_max; 213362306a36Sopenharmony_ci}; 213462306a36Sopenharmony_ci 213562306a36Sopenharmony_cistatic inline struct ethtool_rings_set_req *ethtool_rings_set_req_alloc(void) 213662306a36Sopenharmony_ci{ 213762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_rings_set_req)); 213862306a36Sopenharmony_ci} 213962306a36Sopenharmony_civoid ethtool_rings_set_req_free(struct ethtool_rings_set_req *req); 214062306a36Sopenharmony_ci 214162306a36Sopenharmony_cistatic inline void 214262306a36Sopenharmony_ciethtool_rings_set_req_set_header_dev_index(struct ethtool_rings_set_req *req, 214362306a36Sopenharmony_ci __u32 dev_index) 214462306a36Sopenharmony_ci{ 214562306a36Sopenharmony_ci req->_present.header = 1; 214662306a36Sopenharmony_ci req->header._present.dev_index = 1; 214762306a36Sopenharmony_ci req->header.dev_index = dev_index; 214862306a36Sopenharmony_ci} 214962306a36Sopenharmony_cistatic inline void 215062306a36Sopenharmony_ciethtool_rings_set_req_set_header_dev_name(struct ethtool_rings_set_req *req, 215162306a36Sopenharmony_ci const char *dev_name) 215262306a36Sopenharmony_ci{ 215362306a36Sopenharmony_ci free(req->header.dev_name); 215462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 215562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 215662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 215762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 215862306a36Sopenharmony_ci} 215962306a36Sopenharmony_cistatic inline void 216062306a36Sopenharmony_ciethtool_rings_set_req_set_header_flags(struct ethtool_rings_set_req *req, 216162306a36Sopenharmony_ci __u32 flags) 216262306a36Sopenharmony_ci{ 216362306a36Sopenharmony_ci req->_present.header = 1; 216462306a36Sopenharmony_ci req->header._present.flags = 1; 216562306a36Sopenharmony_ci req->header.flags = flags; 216662306a36Sopenharmony_ci} 216762306a36Sopenharmony_cistatic inline void 216862306a36Sopenharmony_ciethtool_rings_set_req_set_rx_max(struct ethtool_rings_set_req *req, 216962306a36Sopenharmony_ci __u32 rx_max) 217062306a36Sopenharmony_ci{ 217162306a36Sopenharmony_ci req->_present.rx_max = 1; 217262306a36Sopenharmony_ci req->rx_max = rx_max; 217362306a36Sopenharmony_ci} 217462306a36Sopenharmony_cistatic inline void 217562306a36Sopenharmony_ciethtool_rings_set_req_set_rx_mini_max(struct ethtool_rings_set_req *req, 217662306a36Sopenharmony_ci __u32 rx_mini_max) 217762306a36Sopenharmony_ci{ 217862306a36Sopenharmony_ci req->_present.rx_mini_max = 1; 217962306a36Sopenharmony_ci req->rx_mini_max = rx_mini_max; 218062306a36Sopenharmony_ci} 218162306a36Sopenharmony_cistatic inline void 218262306a36Sopenharmony_ciethtool_rings_set_req_set_rx_jumbo_max(struct ethtool_rings_set_req *req, 218362306a36Sopenharmony_ci __u32 rx_jumbo_max) 218462306a36Sopenharmony_ci{ 218562306a36Sopenharmony_ci req->_present.rx_jumbo_max = 1; 218662306a36Sopenharmony_ci req->rx_jumbo_max = rx_jumbo_max; 218762306a36Sopenharmony_ci} 218862306a36Sopenharmony_cistatic inline void 218962306a36Sopenharmony_ciethtool_rings_set_req_set_tx_max(struct ethtool_rings_set_req *req, 219062306a36Sopenharmony_ci __u32 tx_max) 219162306a36Sopenharmony_ci{ 219262306a36Sopenharmony_ci req->_present.tx_max = 1; 219362306a36Sopenharmony_ci req->tx_max = tx_max; 219462306a36Sopenharmony_ci} 219562306a36Sopenharmony_cistatic inline void 219662306a36Sopenharmony_ciethtool_rings_set_req_set_rx(struct ethtool_rings_set_req *req, __u32 rx) 219762306a36Sopenharmony_ci{ 219862306a36Sopenharmony_ci req->_present.rx = 1; 219962306a36Sopenharmony_ci req->rx = rx; 220062306a36Sopenharmony_ci} 220162306a36Sopenharmony_cistatic inline void 220262306a36Sopenharmony_ciethtool_rings_set_req_set_rx_mini(struct ethtool_rings_set_req *req, 220362306a36Sopenharmony_ci __u32 rx_mini) 220462306a36Sopenharmony_ci{ 220562306a36Sopenharmony_ci req->_present.rx_mini = 1; 220662306a36Sopenharmony_ci req->rx_mini = rx_mini; 220762306a36Sopenharmony_ci} 220862306a36Sopenharmony_cistatic inline void 220962306a36Sopenharmony_ciethtool_rings_set_req_set_rx_jumbo(struct ethtool_rings_set_req *req, 221062306a36Sopenharmony_ci __u32 rx_jumbo) 221162306a36Sopenharmony_ci{ 221262306a36Sopenharmony_ci req->_present.rx_jumbo = 1; 221362306a36Sopenharmony_ci req->rx_jumbo = rx_jumbo; 221462306a36Sopenharmony_ci} 221562306a36Sopenharmony_cistatic inline void 221662306a36Sopenharmony_ciethtool_rings_set_req_set_tx(struct ethtool_rings_set_req *req, __u32 tx) 221762306a36Sopenharmony_ci{ 221862306a36Sopenharmony_ci req->_present.tx = 1; 221962306a36Sopenharmony_ci req->tx = tx; 222062306a36Sopenharmony_ci} 222162306a36Sopenharmony_cistatic inline void 222262306a36Sopenharmony_ciethtool_rings_set_req_set_rx_buf_len(struct ethtool_rings_set_req *req, 222362306a36Sopenharmony_ci __u32 rx_buf_len) 222462306a36Sopenharmony_ci{ 222562306a36Sopenharmony_ci req->_present.rx_buf_len = 1; 222662306a36Sopenharmony_ci req->rx_buf_len = rx_buf_len; 222762306a36Sopenharmony_ci} 222862306a36Sopenharmony_cistatic inline void 222962306a36Sopenharmony_ciethtool_rings_set_req_set_tcp_data_split(struct ethtool_rings_set_req *req, 223062306a36Sopenharmony_ci __u8 tcp_data_split) 223162306a36Sopenharmony_ci{ 223262306a36Sopenharmony_ci req->_present.tcp_data_split = 1; 223362306a36Sopenharmony_ci req->tcp_data_split = tcp_data_split; 223462306a36Sopenharmony_ci} 223562306a36Sopenharmony_cistatic inline void 223662306a36Sopenharmony_ciethtool_rings_set_req_set_cqe_size(struct ethtool_rings_set_req *req, 223762306a36Sopenharmony_ci __u32 cqe_size) 223862306a36Sopenharmony_ci{ 223962306a36Sopenharmony_ci req->_present.cqe_size = 1; 224062306a36Sopenharmony_ci req->cqe_size = cqe_size; 224162306a36Sopenharmony_ci} 224262306a36Sopenharmony_cistatic inline void 224362306a36Sopenharmony_ciethtool_rings_set_req_set_tx_push(struct ethtool_rings_set_req *req, 224462306a36Sopenharmony_ci __u8 tx_push) 224562306a36Sopenharmony_ci{ 224662306a36Sopenharmony_ci req->_present.tx_push = 1; 224762306a36Sopenharmony_ci req->tx_push = tx_push; 224862306a36Sopenharmony_ci} 224962306a36Sopenharmony_cistatic inline void 225062306a36Sopenharmony_ciethtool_rings_set_req_set_rx_push(struct ethtool_rings_set_req *req, 225162306a36Sopenharmony_ci __u8 rx_push) 225262306a36Sopenharmony_ci{ 225362306a36Sopenharmony_ci req->_present.rx_push = 1; 225462306a36Sopenharmony_ci req->rx_push = rx_push; 225562306a36Sopenharmony_ci} 225662306a36Sopenharmony_cistatic inline void 225762306a36Sopenharmony_ciethtool_rings_set_req_set_tx_push_buf_len(struct ethtool_rings_set_req *req, 225862306a36Sopenharmony_ci __u32 tx_push_buf_len) 225962306a36Sopenharmony_ci{ 226062306a36Sopenharmony_ci req->_present.tx_push_buf_len = 1; 226162306a36Sopenharmony_ci req->tx_push_buf_len = tx_push_buf_len; 226262306a36Sopenharmony_ci} 226362306a36Sopenharmony_cistatic inline void 226462306a36Sopenharmony_ciethtool_rings_set_req_set_tx_push_buf_len_max(struct ethtool_rings_set_req *req, 226562306a36Sopenharmony_ci __u32 tx_push_buf_len_max) 226662306a36Sopenharmony_ci{ 226762306a36Sopenharmony_ci req->_present.tx_push_buf_len_max = 1; 226862306a36Sopenharmony_ci req->tx_push_buf_len_max = tx_push_buf_len_max; 226962306a36Sopenharmony_ci} 227062306a36Sopenharmony_ci 227162306a36Sopenharmony_ci/* 227262306a36Sopenharmony_ci * Set ring params. 227362306a36Sopenharmony_ci */ 227462306a36Sopenharmony_ciint ethtool_rings_set(struct ynl_sock *ys, struct ethtool_rings_set_req *req); 227562306a36Sopenharmony_ci 227662306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_CHANNELS_GET ============== */ 227762306a36Sopenharmony_ci/* ETHTOOL_MSG_CHANNELS_GET - do */ 227862306a36Sopenharmony_cistruct ethtool_channels_get_req { 227962306a36Sopenharmony_ci struct { 228062306a36Sopenharmony_ci __u32 header:1; 228162306a36Sopenharmony_ci } _present; 228262306a36Sopenharmony_ci 228362306a36Sopenharmony_ci struct ethtool_header header; 228462306a36Sopenharmony_ci}; 228562306a36Sopenharmony_ci 228662306a36Sopenharmony_cistatic inline struct ethtool_channels_get_req * 228762306a36Sopenharmony_ciethtool_channels_get_req_alloc(void) 228862306a36Sopenharmony_ci{ 228962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_channels_get_req)); 229062306a36Sopenharmony_ci} 229162306a36Sopenharmony_civoid ethtool_channels_get_req_free(struct ethtool_channels_get_req *req); 229262306a36Sopenharmony_ci 229362306a36Sopenharmony_cistatic inline void 229462306a36Sopenharmony_ciethtool_channels_get_req_set_header_dev_index(struct ethtool_channels_get_req *req, 229562306a36Sopenharmony_ci __u32 dev_index) 229662306a36Sopenharmony_ci{ 229762306a36Sopenharmony_ci req->_present.header = 1; 229862306a36Sopenharmony_ci req->header._present.dev_index = 1; 229962306a36Sopenharmony_ci req->header.dev_index = dev_index; 230062306a36Sopenharmony_ci} 230162306a36Sopenharmony_cistatic inline void 230262306a36Sopenharmony_ciethtool_channels_get_req_set_header_dev_name(struct ethtool_channels_get_req *req, 230362306a36Sopenharmony_ci const char *dev_name) 230462306a36Sopenharmony_ci{ 230562306a36Sopenharmony_ci free(req->header.dev_name); 230662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 230762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 230862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 230962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 231062306a36Sopenharmony_ci} 231162306a36Sopenharmony_cistatic inline void 231262306a36Sopenharmony_ciethtool_channels_get_req_set_header_flags(struct ethtool_channels_get_req *req, 231362306a36Sopenharmony_ci __u32 flags) 231462306a36Sopenharmony_ci{ 231562306a36Sopenharmony_ci req->_present.header = 1; 231662306a36Sopenharmony_ci req->header._present.flags = 1; 231762306a36Sopenharmony_ci req->header.flags = flags; 231862306a36Sopenharmony_ci} 231962306a36Sopenharmony_ci 232062306a36Sopenharmony_cistruct ethtool_channels_get_rsp { 232162306a36Sopenharmony_ci struct { 232262306a36Sopenharmony_ci __u32 header:1; 232362306a36Sopenharmony_ci __u32 rx_max:1; 232462306a36Sopenharmony_ci __u32 tx_max:1; 232562306a36Sopenharmony_ci __u32 other_max:1; 232662306a36Sopenharmony_ci __u32 combined_max:1; 232762306a36Sopenharmony_ci __u32 rx_count:1; 232862306a36Sopenharmony_ci __u32 tx_count:1; 232962306a36Sopenharmony_ci __u32 other_count:1; 233062306a36Sopenharmony_ci __u32 combined_count:1; 233162306a36Sopenharmony_ci } _present; 233262306a36Sopenharmony_ci 233362306a36Sopenharmony_ci struct ethtool_header header; 233462306a36Sopenharmony_ci __u32 rx_max; 233562306a36Sopenharmony_ci __u32 tx_max; 233662306a36Sopenharmony_ci __u32 other_max; 233762306a36Sopenharmony_ci __u32 combined_max; 233862306a36Sopenharmony_ci __u32 rx_count; 233962306a36Sopenharmony_ci __u32 tx_count; 234062306a36Sopenharmony_ci __u32 other_count; 234162306a36Sopenharmony_ci __u32 combined_count; 234262306a36Sopenharmony_ci}; 234362306a36Sopenharmony_ci 234462306a36Sopenharmony_civoid ethtool_channels_get_rsp_free(struct ethtool_channels_get_rsp *rsp); 234562306a36Sopenharmony_ci 234662306a36Sopenharmony_ci/* 234762306a36Sopenharmony_ci * Get channel params. 234862306a36Sopenharmony_ci */ 234962306a36Sopenharmony_cistruct ethtool_channels_get_rsp * 235062306a36Sopenharmony_ciethtool_channels_get(struct ynl_sock *ys, struct ethtool_channels_get_req *req); 235162306a36Sopenharmony_ci 235262306a36Sopenharmony_ci/* ETHTOOL_MSG_CHANNELS_GET - dump */ 235362306a36Sopenharmony_cistruct ethtool_channels_get_req_dump { 235462306a36Sopenharmony_ci struct { 235562306a36Sopenharmony_ci __u32 header:1; 235662306a36Sopenharmony_ci } _present; 235762306a36Sopenharmony_ci 235862306a36Sopenharmony_ci struct ethtool_header header; 235962306a36Sopenharmony_ci}; 236062306a36Sopenharmony_ci 236162306a36Sopenharmony_cistatic inline struct ethtool_channels_get_req_dump * 236262306a36Sopenharmony_ciethtool_channels_get_req_dump_alloc(void) 236362306a36Sopenharmony_ci{ 236462306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_channels_get_req_dump)); 236562306a36Sopenharmony_ci} 236662306a36Sopenharmony_civoid 236762306a36Sopenharmony_ciethtool_channels_get_req_dump_free(struct ethtool_channels_get_req_dump *req); 236862306a36Sopenharmony_ci 236962306a36Sopenharmony_cistatic inline void 237062306a36Sopenharmony_ciethtool_channels_get_req_dump_set_header_dev_index(struct ethtool_channels_get_req_dump *req, 237162306a36Sopenharmony_ci __u32 dev_index) 237262306a36Sopenharmony_ci{ 237362306a36Sopenharmony_ci req->_present.header = 1; 237462306a36Sopenharmony_ci req->header._present.dev_index = 1; 237562306a36Sopenharmony_ci req->header.dev_index = dev_index; 237662306a36Sopenharmony_ci} 237762306a36Sopenharmony_cistatic inline void 237862306a36Sopenharmony_ciethtool_channels_get_req_dump_set_header_dev_name(struct ethtool_channels_get_req_dump *req, 237962306a36Sopenharmony_ci const char *dev_name) 238062306a36Sopenharmony_ci{ 238162306a36Sopenharmony_ci free(req->header.dev_name); 238262306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 238362306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 238462306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 238562306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 238662306a36Sopenharmony_ci} 238762306a36Sopenharmony_cistatic inline void 238862306a36Sopenharmony_ciethtool_channels_get_req_dump_set_header_flags(struct ethtool_channels_get_req_dump *req, 238962306a36Sopenharmony_ci __u32 flags) 239062306a36Sopenharmony_ci{ 239162306a36Sopenharmony_ci req->_present.header = 1; 239262306a36Sopenharmony_ci req->header._present.flags = 1; 239362306a36Sopenharmony_ci req->header.flags = flags; 239462306a36Sopenharmony_ci} 239562306a36Sopenharmony_ci 239662306a36Sopenharmony_cistruct ethtool_channels_get_list { 239762306a36Sopenharmony_ci struct ethtool_channels_get_list *next; 239862306a36Sopenharmony_ci struct ethtool_channels_get_rsp obj __attribute__ ((aligned (8))); 239962306a36Sopenharmony_ci}; 240062306a36Sopenharmony_ci 240162306a36Sopenharmony_civoid ethtool_channels_get_list_free(struct ethtool_channels_get_list *rsp); 240262306a36Sopenharmony_ci 240362306a36Sopenharmony_cistruct ethtool_channels_get_list * 240462306a36Sopenharmony_ciethtool_channels_get_dump(struct ynl_sock *ys, 240562306a36Sopenharmony_ci struct ethtool_channels_get_req_dump *req); 240662306a36Sopenharmony_ci 240762306a36Sopenharmony_ci/* ETHTOOL_MSG_CHANNELS_GET - notify */ 240862306a36Sopenharmony_cistruct ethtool_channels_get_ntf { 240962306a36Sopenharmony_ci __u16 family; 241062306a36Sopenharmony_ci __u8 cmd; 241162306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 241262306a36Sopenharmony_ci void (*free)(struct ethtool_channels_get_ntf *ntf); 241362306a36Sopenharmony_ci struct ethtool_channels_get_rsp obj __attribute__ ((aligned (8))); 241462306a36Sopenharmony_ci}; 241562306a36Sopenharmony_ci 241662306a36Sopenharmony_civoid ethtool_channels_get_ntf_free(struct ethtool_channels_get_ntf *rsp); 241762306a36Sopenharmony_ci 241862306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_CHANNELS_SET ============== */ 241962306a36Sopenharmony_ci/* ETHTOOL_MSG_CHANNELS_SET - do */ 242062306a36Sopenharmony_cistruct ethtool_channels_set_req { 242162306a36Sopenharmony_ci struct { 242262306a36Sopenharmony_ci __u32 header:1; 242362306a36Sopenharmony_ci __u32 rx_max:1; 242462306a36Sopenharmony_ci __u32 tx_max:1; 242562306a36Sopenharmony_ci __u32 other_max:1; 242662306a36Sopenharmony_ci __u32 combined_max:1; 242762306a36Sopenharmony_ci __u32 rx_count:1; 242862306a36Sopenharmony_ci __u32 tx_count:1; 242962306a36Sopenharmony_ci __u32 other_count:1; 243062306a36Sopenharmony_ci __u32 combined_count:1; 243162306a36Sopenharmony_ci } _present; 243262306a36Sopenharmony_ci 243362306a36Sopenharmony_ci struct ethtool_header header; 243462306a36Sopenharmony_ci __u32 rx_max; 243562306a36Sopenharmony_ci __u32 tx_max; 243662306a36Sopenharmony_ci __u32 other_max; 243762306a36Sopenharmony_ci __u32 combined_max; 243862306a36Sopenharmony_ci __u32 rx_count; 243962306a36Sopenharmony_ci __u32 tx_count; 244062306a36Sopenharmony_ci __u32 other_count; 244162306a36Sopenharmony_ci __u32 combined_count; 244262306a36Sopenharmony_ci}; 244362306a36Sopenharmony_ci 244462306a36Sopenharmony_cistatic inline struct ethtool_channels_set_req * 244562306a36Sopenharmony_ciethtool_channels_set_req_alloc(void) 244662306a36Sopenharmony_ci{ 244762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_channels_set_req)); 244862306a36Sopenharmony_ci} 244962306a36Sopenharmony_civoid ethtool_channels_set_req_free(struct ethtool_channels_set_req *req); 245062306a36Sopenharmony_ci 245162306a36Sopenharmony_cistatic inline void 245262306a36Sopenharmony_ciethtool_channels_set_req_set_header_dev_index(struct ethtool_channels_set_req *req, 245362306a36Sopenharmony_ci __u32 dev_index) 245462306a36Sopenharmony_ci{ 245562306a36Sopenharmony_ci req->_present.header = 1; 245662306a36Sopenharmony_ci req->header._present.dev_index = 1; 245762306a36Sopenharmony_ci req->header.dev_index = dev_index; 245862306a36Sopenharmony_ci} 245962306a36Sopenharmony_cistatic inline void 246062306a36Sopenharmony_ciethtool_channels_set_req_set_header_dev_name(struct ethtool_channels_set_req *req, 246162306a36Sopenharmony_ci const char *dev_name) 246262306a36Sopenharmony_ci{ 246362306a36Sopenharmony_ci free(req->header.dev_name); 246462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 246562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 246662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 246762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 246862306a36Sopenharmony_ci} 246962306a36Sopenharmony_cistatic inline void 247062306a36Sopenharmony_ciethtool_channels_set_req_set_header_flags(struct ethtool_channels_set_req *req, 247162306a36Sopenharmony_ci __u32 flags) 247262306a36Sopenharmony_ci{ 247362306a36Sopenharmony_ci req->_present.header = 1; 247462306a36Sopenharmony_ci req->header._present.flags = 1; 247562306a36Sopenharmony_ci req->header.flags = flags; 247662306a36Sopenharmony_ci} 247762306a36Sopenharmony_cistatic inline void 247862306a36Sopenharmony_ciethtool_channels_set_req_set_rx_max(struct ethtool_channels_set_req *req, 247962306a36Sopenharmony_ci __u32 rx_max) 248062306a36Sopenharmony_ci{ 248162306a36Sopenharmony_ci req->_present.rx_max = 1; 248262306a36Sopenharmony_ci req->rx_max = rx_max; 248362306a36Sopenharmony_ci} 248462306a36Sopenharmony_cistatic inline void 248562306a36Sopenharmony_ciethtool_channels_set_req_set_tx_max(struct ethtool_channels_set_req *req, 248662306a36Sopenharmony_ci __u32 tx_max) 248762306a36Sopenharmony_ci{ 248862306a36Sopenharmony_ci req->_present.tx_max = 1; 248962306a36Sopenharmony_ci req->tx_max = tx_max; 249062306a36Sopenharmony_ci} 249162306a36Sopenharmony_cistatic inline void 249262306a36Sopenharmony_ciethtool_channels_set_req_set_other_max(struct ethtool_channels_set_req *req, 249362306a36Sopenharmony_ci __u32 other_max) 249462306a36Sopenharmony_ci{ 249562306a36Sopenharmony_ci req->_present.other_max = 1; 249662306a36Sopenharmony_ci req->other_max = other_max; 249762306a36Sopenharmony_ci} 249862306a36Sopenharmony_cistatic inline void 249962306a36Sopenharmony_ciethtool_channels_set_req_set_combined_max(struct ethtool_channels_set_req *req, 250062306a36Sopenharmony_ci __u32 combined_max) 250162306a36Sopenharmony_ci{ 250262306a36Sopenharmony_ci req->_present.combined_max = 1; 250362306a36Sopenharmony_ci req->combined_max = combined_max; 250462306a36Sopenharmony_ci} 250562306a36Sopenharmony_cistatic inline void 250662306a36Sopenharmony_ciethtool_channels_set_req_set_rx_count(struct ethtool_channels_set_req *req, 250762306a36Sopenharmony_ci __u32 rx_count) 250862306a36Sopenharmony_ci{ 250962306a36Sopenharmony_ci req->_present.rx_count = 1; 251062306a36Sopenharmony_ci req->rx_count = rx_count; 251162306a36Sopenharmony_ci} 251262306a36Sopenharmony_cistatic inline void 251362306a36Sopenharmony_ciethtool_channels_set_req_set_tx_count(struct ethtool_channels_set_req *req, 251462306a36Sopenharmony_ci __u32 tx_count) 251562306a36Sopenharmony_ci{ 251662306a36Sopenharmony_ci req->_present.tx_count = 1; 251762306a36Sopenharmony_ci req->tx_count = tx_count; 251862306a36Sopenharmony_ci} 251962306a36Sopenharmony_cistatic inline void 252062306a36Sopenharmony_ciethtool_channels_set_req_set_other_count(struct ethtool_channels_set_req *req, 252162306a36Sopenharmony_ci __u32 other_count) 252262306a36Sopenharmony_ci{ 252362306a36Sopenharmony_ci req->_present.other_count = 1; 252462306a36Sopenharmony_ci req->other_count = other_count; 252562306a36Sopenharmony_ci} 252662306a36Sopenharmony_cistatic inline void 252762306a36Sopenharmony_ciethtool_channels_set_req_set_combined_count(struct ethtool_channels_set_req *req, 252862306a36Sopenharmony_ci __u32 combined_count) 252962306a36Sopenharmony_ci{ 253062306a36Sopenharmony_ci req->_present.combined_count = 1; 253162306a36Sopenharmony_ci req->combined_count = combined_count; 253262306a36Sopenharmony_ci} 253362306a36Sopenharmony_ci 253462306a36Sopenharmony_ci/* 253562306a36Sopenharmony_ci * Set channel params. 253662306a36Sopenharmony_ci */ 253762306a36Sopenharmony_ciint ethtool_channels_set(struct ynl_sock *ys, 253862306a36Sopenharmony_ci struct ethtool_channels_set_req *req); 253962306a36Sopenharmony_ci 254062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_COALESCE_GET ============== */ 254162306a36Sopenharmony_ci/* ETHTOOL_MSG_COALESCE_GET - do */ 254262306a36Sopenharmony_cistruct ethtool_coalesce_get_req { 254362306a36Sopenharmony_ci struct { 254462306a36Sopenharmony_ci __u32 header:1; 254562306a36Sopenharmony_ci } _present; 254662306a36Sopenharmony_ci 254762306a36Sopenharmony_ci struct ethtool_header header; 254862306a36Sopenharmony_ci}; 254962306a36Sopenharmony_ci 255062306a36Sopenharmony_cistatic inline struct ethtool_coalesce_get_req * 255162306a36Sopenharmony_ciethtool_coalesce_get_req_alloc(void) 255262306a36Sopenharmony_ci{ 255362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_coalesce_get_req)); 255462306a36Sopenharmony_ci} 255562306a36Sopenharmony_civoid ethtool_coalesce_get_req_free(struct ethtool_coalesce_get_req *req); 255662306a36Sopenharmony_ci 255762306a36Sopenharmony_cistatic inline void 255862306a36Sopenharmony_ciethtool_coalesce_get_req_set_header_dev_index(struct ethtool_coalesce_get_req *req, 255962306a36Sopenharmony_ci __u32 dev_index) 256062306a36Sopenharmony_ci{ 256162306a36Sopenharmony_ci req->_present.header = 1; 256262306a36Sopenharmony_ci req->header._present.dev_index = 1; 256362306a36Sopenharmony_ci req->header.dev_index = dev_index; 256462306a36Sopenharmony_ci} 256562306a36Sopenharmony_cistatic inline void 256662306a36Sopenharmony_ciethtool_coalesce_get_req_set_header_dev_name(struct ethtool_coalesce_get_req *req, 256762306a36Sopenharmony_ci const char *dev_name) 256862306a36Sopenharmony_ci{ 256962306a36Sopenharmony_ci free(req->header.dev_name); 257062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 257162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 257262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 257362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 257462306a36Sopenharmony_ci} 257562306a36Sopenharmony_cistatic inline void 257662306a36Sopenharmony_ciethtool_coalesce_get_req_set_header_flags(struct ethtool_coalesce_get_req *req, 257762306a36Sopenharmony_ci __u32 flags) 257862306a36Sopenharmony_ci{ 257962306a36Sopenharmony_ci req->_present.header = 1; 258062306a36Sopenharmony_ci req->header._present.flags = 1; 258162306a36Sopenharmony_ci req->header.flags = flags; 258262306a36Sopenharmony_ci} 258362306a36Sopenharmony_ci 258462306a36Sopenharmony_cistruct ethtool_coalesce_get_rsp { 258562306a36Sopenharmony_ci struct { 258662306a36Sopenharmony_ci __u32 header:1; 258762306a36Sopenharmony_ci __u32 rx_usecs:1; 258862306a36Sopenharmony_ci __u32 rx_max_frames:1; 258962306a36Sopenharmony_ci __u32 rx_usecs_irq:1; 259062306a36Sopenharmony_ci __u32 rx_max_frames_irq:1; 259162306a36Sopenharmony_ci __u32 tx_usecs:1; 259262306a36Sopenharmony_ci __u32 tx_max_frames:1; 259362306a36Sopenharmony_ci __u32 tx_usecs_irq:1; 259462306a36Sopenharmony_ci __u32 tx_max_frames_irq:1; 259562306a36Sopenharmony_ci __u32 stats_block_usecs:1; 259662306a36Sopenharmony_ci __u32 use_adaptive_rx:1; 259762306a36Sopenharmony_ci __u32 use_adaptive_tx:1; 259862306a36Sopenharmony_ci __u32 pkt_rate_low:1; 259962306a36Sopenharmony_ci __u32 rx_usecs_low:1; 260062306a36Sopenharmony_ci __u32 rx_max_frames_low:1; 260162306a36Sopenharmony_ci __u32 tx_usecs_low:1; 260262306a36Sopenharmony_ci __u32 tx_max_frames_low:1; 260362306a36Sopenharmony_ci __u32 pkt_rate_high:1; 260462306a36Sopenharmony_ci __u32 rx_usecs_high:1; 260562306a36Sopenharmony_ci __u32 rx_max_frames_high:1; 260662306a36Sopenharmony_ci __u32 tx_usecs_high:1; 260762306a36Sopenharmony_ci __u32 tx_max_frames_high:1; 260862306a36Sopenharmony_ci __u32 rate_sample_interval:1; 260962306a36Sopenharmony_ci __u32 use_cqe_mode_tx:1; 261062306a36Sopenharmony_ci __u32 use_cqe_mode_rx:1; 261162306a36Sopenharmony_ci __u32 tx_aggr_max_bytes:1; 261262306a36Sopenharmony_ci __u32 tx_aggr_max_frames:1; 261362306a36Sopenharmony_ci __u32 tx_aggr_time_usecs:1; 261462306a36Sopenharmony_ci } _present; 261562306a36Sopenharmony_ci 261662306a36Sopenharmony_ci struct ethtool_header header; 261762306a36Sopenharmony_ci __u32 rx_usecs; 261862306a36Sopenharmony_ci __u32 rx_max_frames; 261962306a36Sopenharmony_ci __u32 rx_usecs_irq; 262062306a36Sopenharmony_ci __u32 rx_max_frames_irq; 262162306a36Sopenharmony_ci __u32 tx_usecs; 262262306a36Sopenharmony_ci __u32 tx_max_frames; 262362306a36Sopenharmony_ci __u32 tx_usecs_irq; 262462306a36Sopenharmony_ci __u32 tx_max_frames_irq; 262562306a36Sopenharmony_ci __u32 stats_block_usecs; 262662306a36Sopenharmony_ci __u8 use_adaptive_rx; 262762306a36Sopenharmony_ci __u8 use_adaptive_tx; 262862306a36Sopenharmony_ci __u32 pkt_rate_low; 262962306a36Sopenharmony_ci __u32 rx_usecs_low; 263062306a36Sopenharmony_ci __u32 rx_max_frames_low; 263162306a36Sopenharmony_ci __u32 tx_usecs_low; 263262306a36Sopenharmony_ci __u32 tx_max_frames_low; 263362306a36Sopenharmony_ci __u32 pkt_rate_high; 263462306a36Sopenharmony_ci __u32 rx_usecs_high; 263562306a36Sopenharmony_ci __u32 rx_max_frames_high; 263662306a36Sopenharmony_ci __u32 tx_usecs_high; 263762306a36Sopenharmony_ci __u32 tx_max_frames_high; 263862306a36Sopenharmony_ci __u32 rate_sample_interval; 263962306a36Sopenharmony_ci __u8 use_cqe_mode_tx; 264062306a36Sopenharmony_ci __u8 use_cqe_mode_rx; 264162306a36Sopenharmony_ci __u32 tx_aggr_max_bytes; 264262306a36Sopenharmony_ci __u32 tx_aggr_max_frames; 264362306a36Sopenharmony_ci __u32 tx_aggr_time_usecs; 264462306a36Sopenharmony_ci}; 264562306a36Sopenharmony_ci 264662306a36Sopenharmony_civoid ethtool_coalesce_get_rsp_free(struct ethtool_coalesce_get_rsp *rsp); 264762306a36Sopenharmony_ci 264862306a36Sopenharmony_ci/* 264962306a36Sopenharmony_ci * Get coalesce params. 265062306a36Sopenharmony_ci */ 265162306a36Sopenharmony_cistruct ethtool_coalesce_get_rsp * 265262306a36Sopenharmony_ciethtool_coalesce_get(struct ynl_sock *ys, struct ethtool_coalesce_get_req *req); 265362306a36Sopenharmony_ci 265462306a36Sopenharmony_ci/* ETHTOOL_MSG_COALESCE_GET - dump */ 265562306a36Sopenharmony_cistruct ethtool_coalesce_get_req_dump { 265662306a36Sopenharmony_ci struct { 265762306a36Sopenharmony_ci __u32 header:1; 265862306a36Sopenharmony_ci } _present; 265962306a36Sopenharmony_ci 266062306a36Sopenharmony_ci struct ethtool_header header; 266162306a36Sopenharmony_ci}; 266262306a36Sopenharmony_ci 266362306a36Sopenharmony_cistatic inline struct ethtool_coalesce_get_req_dump * 266462306a36Sopenharmony_ciethtool_coalesce_get_req_dump_alloc(void) 266562306a36Sopenharmony_ci{ 266662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_coalesce_get_req_dump)); 266762306a36Sopenharmony_ci} 266862306a36Sopenharmony_civoid 266962306a36Sopenharmony_ciethtool_coalesce_get_req_dump_free(struct ethtool_coalesce_get_req_dump *req); 267062306a36Sopenharmony_ci 267162306a36Sopenharmony_cistatic inline void 267262306a36Sopenharmony_ciethtool_coalesce_get_req_dump_set_header_dev_index(struct ethtool_coalesce_get_req_dump *req, 267362306a36Sopenharmony_ci __u32 dev_index) 267462306a36Sopenharmony_ci{ 267562306a36Sopenharmony_ci req->_present.header = 1; 267662306a36Sopenharmony_ci req->header._present.dev_index = 1; 267762306a36Sopenharmony_ci req->header.dev_index = dev_index; 267862306a36Sopenharmony_ci} 267962306a36Sopenharmony_cistatic inline void 268062306a36Sopenharmony_ciethtool_coalesce_get_req_dump_set_header_dev_name(struct ethtool_coalesce_get_req_dump *req, 268162306a36Sopenharmony_ci const char *dev_name) 268262306a36Sopenharmony_ci{ 268362306a36Sopenharmony_ci free(req->header.dev_name); 268462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 268562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 268662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 268762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 268862306a36Sopenharmony_ci} 268962306a36Sopenharmony_cistatic inline void 269062306a36Sopenharmony_ciethtool_coalesce_get_req_dump_set_header_flags(struct ethtool_coalesce_get_req_dump *req, 269162306a36Sopenharmony_ci __u32 flags) 269262306a36Sopenharmony_ci{ 269362306a36Sopenharmony_ci req->_present.header = 1; 269462306a36Sopenharmony_ci req->header._present.flags = 1; 269562306a36Sopenharmony_ci req->header.flags = flags; 269662306a36Sopenharmony_ci} 269762306a36Sopenharmony_ci 269862306a36Sopenharmony_cistruct ethtool_coalesce_get_list { 269962306a36Sopenharmony_ci struct ethtool_coalesce_get_list *next; 270062306a36Sopenharmony_ci struct ethtool_coalesce_get_rsp obj __attribute__ ((aligned (8))); 270162306a36Sopenharmony_ci}; 270262306a36Sopenharmony_ci 270362306a36Sopenharmony_civoid ethtool_coalesce_get_list_free(struct ethtool_coalesce_get_list *rsp); 270462306a36Sopenharmony_ci 270562306a36Sopenharmony_cistruct ethtool_coalesce_get_list * 270662306a36Sopenharmony_ciethtool_coalesce_get_dump(struct ynl_sock *ys, 270762306a36Sopenharmony_ci struct ethtool_coalesce_get_req_dump *req); 270862306a36Sopenharmony_ci 270962306a36Sopenharmony_ci/* ETHTOOL_MSG_COALESCE_GET - notify */ 271062306a36Sopenharmony_cistruct ethtool_coalesce_get_ntf { 271162306a36Sopenharmony_ci __u16 family; 271262306a36Sopenharmony_ci __u8 cmd; 271362306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 271462306a36Sopenharmony_ci void (*free)(struct ethtool_coalesce_get_ntf *ntf); 271562306a36Sopenharmony_ci struct ethtool_coalesce_get_rsp obj __attribute__ ((aligned (8))); 271662306a36Sopenharmony_ci}; 271762306a36Sopenharmony_ci 271862306a36Sopenharmony_civoid ethtool_coalesce_get_ntf_free(struct ethtool_coalesce_get_ntf *rsp); 271962306a36Sopenharmony_ci 272062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_COALESCE_SET ============== */ 272162306a36Sopenharmony_ci/* ETHTOOL_MSG_COALESCE_SET - do */ 272262306a36Sopenharmony_cistruct ethtool_coalesce_set_req { 272362306a36Sopenharmony_ci struct { 272462306a36Sopenharmony_ci __u32 header:1; 272562306a36Sopenharmony_ci __u32 rx_usecs:1; 272662306a36Sopenharmony_ci __u32 rx_max_frames:1; 272762306a36Sopenharmony_ci __u32 rx_usecs_irq:1; 272862306a36Sopenharmony_ci __u32 rx_max_frames_irq:1; 272962306a36Sopenharmony_ci __u32 tx_usecs:1; 273062306a36Sopenharmony_ci __u32 tx_max_frames:1; 273162306a36Sopenharmony_ci __u32 tx_usecs_irq:1; 273262306a36Sopenharmony_ci __u32 tx_max_frames_irq:1; 273362306a36Sopenharmony_ci __u32 stats_block_usecs:1; 273462306a36Sopenharmony_ci __u32 use_adaptive_rx:1; 273562306a36Sopenharmony_ci __u32 use_adaptive_tx:1; 273662306a36Sopenharmony_ci __u32 pkt_rate_low:1; 273762306a36Sopenharmony_ci __u32 rx_usecs_low:1; 273862306a36Sopenharmony_ci __u32 rx_max_frames_low:1; 273962306a36Sopenharmony_ci __u32 tx_usecs_low:1; 274062306a36Sopenharmony_ci __u32 tx_max_frames_low:1; 274162306a36Sopenharmony_ci __u32 pkt_rate_high:1; 274262306a36Sopenharmony_ci __u32 rx_usecs_high:1; 274362306a36Sopenharmony_ci __u32 rx_max_frames_high:1; 274462306a36Sopenharmony_ci __u32 tx_usecs_high:1; 274562306a36Sopenharmony_ci __u32 tx_max_frames_high:1; 274662306a36Sopenharmony_ci __u32 rate_sample_interval:1; 274762306a36Sopenharmony_ci __u32 use_cqe_mode_tx:1; 274862306a36Sopenharmony_ci __u32 use_cqe_mode_rx:1; 274962306a36Sopenharmony_ci __u32 tx_aggr_max_bytes:1; 275062306a36Sopenharmony_ci __u32 tx_aggr_max_frames:1; 275162306a36Sopenharmony_ci __u32 tx_aggr_time_usecs:1; 275262306a36Sopenharmony_ci } _present; 275362306a36Sopenharmony_ci 275462306a36Sopenharmony_ci struct ethtool_header header; 275562306a36Sopenharmony_ci __u32 rx_usecs; 275662306a36Sopenharmony_ci __u32 rx_max_frames; 275762306a36Sopenharmony_ci __u32 rx_usecs_irq; 275862306a36Sopenharmony_ci __u32 rx_max_frames_irq; 275962306a36Sopenharmony_ci __u32 tx_usecs; 276062306a36Sopenharmony_ci __u32 tx_max_frames; 276162306a36Sopenharmony_ci __u32 tx_usecs_irq; 276262306a36Sopenharmony_ci __u32 tx_max_frames_irq; 276362306a36Sopenharmony_ci __u32 stats_block_usecs; 276462306a36Sopenharmony_ci __u8 use_adaptive_rx; 276562306a36Sopenharmony_ci __u8 use_adaptive_tx; 276662306a36Sopenharmony_ci __u32 pkt_rate_low; 276762306a36Sopenharmony_ci __u32 rx_usecs_low; 276862306a36Sopenharmony_ci __u32 rx_max_frames_low; 276962306a36Sopenharmony_ci __u32 tx_usecs_low; 277062306a36Sopenharmony_ci __u32 tx_max_frames_low; 277162306a36Sopenharmony_ci __u32 pkt_rate_high; 277262306a36Sopenharmony_ci __u32 rx_usecs_high; 277362306a36Sopenharmony_ci __u32 rx_max_frames_high; 277462306a36Sopenharmony_ci __u32 tx_usecs_high; 277562306a36Sopenharmony_ci __u32 tx_max_frames_high; 277662306a36Sopenharmony_ci __u32 rate_sample_interval; 277762306a36Sopenharmony_ci __u8 use_cqe_mode_tx; 277862306a36Sopenharmony_ci __u8 use_cqe_mode_rx; 277962306a36Sopenharmony_ci __u32 tx_aggr_max_bytes; 278062306a36Sopenharmony_ci __u32 tx_aggr_max_frames; 278162306a36Sopenharmony_ci __u32 tx_aggr_time_usecs; 278262306a36Sopenharmony_ci}; 278362306a36Sopenharmony_ci 278462306a36Sopenharmony_cistatic inline struct ethtool_coalesce_set_req * 278562306a36Sopenharmony_ciethtool_coalesce_set_req_alloc(void) 278662306a36Sopenharmony_ci{ 278762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_coalesce_set_req)); 278862306a36Sopenharmony_ci} 278962306a36Sopenharmony_civoid ethtool_coalesce_set_req_free(struct ethtool_coalesce_set_req *req); 279062306a36Sopenharmony_ci 279162306a36Sopenharmony_cistatic inline void 279262306a36Sopenharmony_ciethtool_coalesce_set_req_set_header_dev_index(struct ethtool_coalesce_set_req *req, 279362306a36Sopenharmony_ci __u32 dev_index) 279462306a36Sopenharmony_ci{ 279562306a36Sopenharmony_ci req->_present.header = 1; 279662306a36Sopenharmony_ci req->header._present.dev_index = 1; 279762306a36Sopenharmony_ci req->header.dev_index = dev_index; 279862306a36Sopenharmony_ci} 279962306a36Sopenharmony_cistatic inline void 280062306a36Sopenharmony_ciethtool_coalesce_set_req_set_header_dev_name(struct ethtool_coalesce_set_req *req, 280162306a36Sopenharmony_ci const char *dev_name) 280262306a36Sopenharmony_ci{ 280362306a36Sopenharmony_ci free(req->header.dev_name); 280462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 280562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 280662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 280762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 280862306a36Sopenharmony_ci} 280962306a36Sopenharmony_cistatic inline void 281062306a36Sopenharmony_ciethtool_coalesce_set_req_set_header_flags(struct ethtool_coalesce_set_req *req, 281162306a36Sopenharmony_ci __u32 flags) 281262306a36Sopenharmony_ci{ 281362306a36Sopenharmony_ci req->_present.header = 1; 281462306a36Sopenharmony_ci req->header._present.flags = 1; 281562306a36Sopenharmony_ci req->header.flags = flags; 281662306a36Sopenharmony_ci} 281762306a36Sopenharmony_cistatic inline void 281862306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_usecs(struct ethtool_coalesce_set_req *req, 281962306a36Sopenharmony_ci __u32 rx_usecs) 282062306a36Sopenharmony_ci{ 282162306a36Sopenharmony_ci req->_present.rx_usecs = 1; 282262306a36Sopenharmony_ci req->rx_usecs = rx_usecs; 282362306a36Sopenharmony_ci} 282462306a36Sopenharmony_cistatic inline void 282562306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_max_frames(struct ethtool_coalesce_set_req *req, 282662306a36Sopenharmony_ci __u32 rx_max_frames) 282762306a36Sopenharmony_ci{ 282862306a36Sopenharmony_ci req->_present.rx_max_frames = 1; 282962306a36Sopenharmony_ci req->rx_max_frames = rx_max_frames; 283062306a36Sopenharmony_ci} 283162306a36Sopenharmony_cistatic inline void 283262306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_usecs_irq(struct ethtool_coalesce_set_req *req, 283362306a36Sopenharmony_ci __u32 rx_usecs_irq) 283462306a36Sopenharmony_ci{ 283562306a36Sopenharmony_ci req->_present.rx_usecs_irq = 1; 283662306a36Sopenharmony_ci req->rx_usecs_irq = rx_usecs_irq; 283762306a36Sopenharmony_ci} 283862306a36Sopenharmony_cistatic inline void 283962306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_max_frames_irq(struct ethtool_coalesce_set_req *req, 284062306a36Sopenharmony_ci __u32 rx_max_frames_irq) 284162306a36Sopenharmony_ci{ 284262306a36Sopenharmony_ci req->_present.rx_max_frames_irq = 1; 284362306a36Sopenharmony_ci req->rx_max_frames_irq = rx_max_frames_irq; 284462306a36Sopenharmony_ci} 284562306a36Sopenharmony_cistatic inline void 284662306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_usecs(struct ethtool_coalesce_set_req *req, 284762306a36Sopenharmony_ci __u32 tx_usecs) 284862306a36Sopenharmony_ci{ 284962306a36Sopenharmony_ci req->_present.tx_usecs = 1; 285062306a36Sopenharmony_ci req->tx_usecs = tx_usecs; 285162306a36Sopenharmony_ci} 285262306a36Sopenharmony_cistatic inline void 285362306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_max_frames(struct ethtool_coalesce_set_req *req, 285462306a36Sopenharmony_ci __u32 tx_max_frames) 285562306a36Sopenharmony_ci{ 285662306a36Sopenharmony_ci req->_present.tx_max_frames = 1; 285762306a36Sopenharmony_ci req->tx_max_frames = tx_max_frames; 285862306a36Sopenharmony_ci} 285962306a36Sopenharmony_cistatic inline void 286062306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_usecs_irq(struct ethtool_coalesce_set_req *req, 286162306a36Sopenharmony_ci __u32 tx_usecs_irq) 286262306a36Sopenharmony_ci{ 286362306a36Sopenharmony_ci req->_present.tx_usecs_irq = 1; 286462306a36Sopenharmony_ci req->tx_usecs_irq = tx_usecs_irq; 286562306a36Sopenharmony_ci} 286662306a36Sopenharmony_cistatic inline void 286762306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_max_frames_irq(struct ethtool_coalesce_set_req *req, 286862306a36Sopenharmony_ci __u32 tx_max_frames_irq) 286962306a36Sopenharmony_ci{ 287062306a36Sopenharmony_ci req->_present.tx_max_frames_irq = 1; 287162306a36Sopenharmony_ci req->tx_max_frames_irq = tx_max_frames_irq; 287262306a36Sopenharmony_ci} 287362306a36Sopenharmony_cistatic inline void 287462306a36Sopenharmony_ciethtool_coalesce_set_req_set_stats_block_usecs(struct ethtool_coalesce_set_req *req, 287562306a36Sopenharmony_ci __u32 stats_block_usecs) 287662306a36Sopenharmony_ci{ 287762306a36Sopenharmony_ci req->_present.stats_block_usecs = 1; 287862306a36Sopenharmony_ci req->stats_block_usecs = stats_block_usecs; 287962306a36Sopenharmony_ci} 288062306a36Sopenharmony_cistatic inline void 288162306a36Sopenharmony_ciethtool_coalesce_set_req_set_use_adaptive_rx(struct ethtool_coalesce_set_req *req, 288262306a36Sopenharmony_ci __u8 use_adaptive_rx) 288362306a36Sopenharmony_ci{ 288462306a36Sopenharmony_ci req->_present.use_adaptive_rx = 1; 288562306a36Sopenharmony_ci req->use_adaptive_rx = use_adaptive_rx; 288662306a36Sopenharmony_ci} 288762306a36Sopenharmony_cistatic inline void 288862306a36Sopenharmony_ciethtool_coalesce_set_req_set_use_adaptive_tx(struct ethtool_coalesce_set_req *req, 288962306a36Sopenharmony_ci __u8 use_adaptive_tx) 289062306a36Sopenharmony_ci{ 289162306a36Sopenharmony_ci req->_present.use_adaptive_tx = 1; 289262306a36Sopenharmony_ci req->use_adaptive_tx = use_adaptive_tx; 289362306a36Sopenharmony_ci} 289462306a36Sopenharmony_cistatic inline void 289562306a36Sopenharmony_ciethtool_coalesce_set_req_set_pkt_rate_low(struct ethtool_coalesce_set_req *req, 289662306a36Sopenharmony_ci __u32 pkt_rate_low) 289762306a36Sopenharmony_ci{ 289862306a36Sopenharmony_ci req->_present.pkt_rate_low = 1; 289962306a36Sopenharmony_ci req->pkt_rate_low = pkt_rate_low; 290062306a36Sopenharmony_ci} 290162306a36Sopenharmony_cistatic inline void 290262306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_usecs_low(struct ethtool_coalesce_set_req *req, 290362306a36Sopenharmony_ci __u32 rx_usecs_low) 290462306a36Sopenharmony_ci{ 290562306a36Sopenharmony_ci req->_present.rx_usecs_low = 1; 290662306a36Sopenharmony_ci req->rx_usecs_low = rx_usecs_low; 290762306a36Sopenharmony_ci} 290862306a36Sopenharmony_cistatic inline void 290962306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_max_frames_low(struct ethtool_coalesce_set_req *req, 291062306a36Sopenharmony_ci __u32 rx_max_frames_low) 291162306a36Sopenharmony_ci{ 291262306a36Sopenharmony_ci req->_present.rx_max_frames_low = 1; 291362306a36Sopenharmony_ci req->rx_max_frames_low = rx_max_frames_low; 291462306a36Sopenharmony_ci} 291562306a36Sopenharmony_cistatic inline void 291662306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_usecs_low(struct ethtool_coalesce_set_req *req, 291762306a36Sopenharmony_ci __u32 tx_usecs_low) 291862306a36Sopenharmony_ci{ 291962306a36Sopenharmony_ci req->_present.tx_usecs_low = 1; 292062306a36Sopenharmony_ci req->tx_usecs_low = tx_usecs_low; 292162306a36Sopenharmony_ci} 292262306a36Sopenharmony_cistatic inline void 292362306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_max_frames_low(struct ethtool_coalesce_set_req *req, 292462306a36Sopenharmony_ci __u32 tx_max_frames_low) 292562306a36Sopenharmony_ci{ 292662306a36Sopenharmony_ci req->_present.tx_max_frames_low = 1; 292762306a36Sopenharmony_ci req->tx_max_frames_low = tx_max_frames_low; 292862306a36Sopenharmony_ci} 292962306a36Sopenharmony_cistatic inline void 293062306a36Sopenharmony_ciethtool_coalesce_set_req_set_pkt_rate_high(struct ethtool_coalesce_set_req *req, 293162306a36Sopenharmony_ci __u32 pkt_rate_high) 293262306a36Sopenharmony_ci{ 293362306a36Sopenharmony_ci req->_present.pkt_rate_high = 1; 293462306a36Sopenharmony_ci req->pkt_rate_high = pkt_rate_high; 293562306a36Sopenharmony_ci} 293662306a36Sopenharmony_cistatic inline void 293762306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_usecs_high(struct ethtool_coalesce_set_req *req, 293862306a36Sopenharmony_ci __u32 rx_usecs_high) 293962306a36Sopenharmony_ci{ 294062306a36Sopenharmony_ci req->_present.rx_usecs_high = 1; 294162306a36Sopenharmony_ci req->rx_usecs_high = rx_usecs_high; 294262306a36Sopenharmony_ci} 294362306a36Sopenharmony_cistatic inline void 294462306a36Sopenharmony_ciethtool_coalesce_set_req_set_rx_max_frames_high(struct ethtool_coalesce_set_req *req, 294562306a36Sopenharmony_ci __u32 rx_max_frames_high) 294662306a36Sopenharmony_ci{ 294762306a36Sopenharmony_ci req->_present.rx_max_frames_high = 1; 294862306a36Sopenharmony_ci req->rx_max_frames_high = rx_max_frames_high; 294962306a36Sopenharmony_ci} 295062306a36Sopenharmony_cistatic inline void 295162306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_usecs_high(struct ethtool_coalesce_set_req *req, 295262306a36Sopenharmony_ci __u32 tx_usecs_high) 295362306a36Sopenharmony_ci{ 295462306a36Sopenharmony_ci req->_present.tx_usecs_high = 1; 295562306a36Sopenharmony_ci req->tx_usecs_high = tx_usecs_high; 295662306a36Sopenharmony_ci} 295762306a36Sopenharmony_cistatic inline void 295862306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_max_frames_high(struct ethtool_coalesce_set_req *req, 295962306a36Sopenharmony_ci __u32 tx_max_frames_high) 296062306a36Sopenharmony_ci{ 296162306a36Sopenharmony_ci req->_present.tx_max_frames_high = 1; 296262306a36Sopenharmony_ci req->tx_max_frames_high = tx_max_frames_high; 296362306a36Sopenharmony_ci} 296462306a36Sopenharmony_cistatic inline void 296562306a36Sopenharmony_ciethtool_coalesce_set_req_set_rate_sample_interval(struct ethtool_coalesce_set_req *req, 296662306a36Sopenharmony_ci __u32 rate_sample_interval) 296762306a36Sopenharmony_ci{ 296862306a36Sopenharmony_ci req->_present.rate_sample_interval = 1; 296962306a36Sopenharmony_ci req->rate_sample_interval = rate_sample_interval; 297062306a36Sopenharmony_ci} 297162306a36Sopenharmony_cistatic inline void 297262306a36Sopenharmony_ciethtool_coalesce_set_req_set_use_cqe_mode_tx(struct ethtool_coalesce_set_req *req, 297362306a36Sopenharmony_ci __u8 use_cqe_mode_tx) 297462306a36Sopenharmony_ci{ 297562306a36Sopenharmony_ci req->_present.use_cqe_mode_tx = 1; 297662306a36Sopenharmony_ci req->use_cqe_mode_tx = use_cqe_mode_tx; 297762306a36Sopenharmony_ci} 297862306a36Sopenharmony_cistatic inline void 297962306a36Sopenharmony_ciethtool_coalesce_set_req_set_use_cqe_mode_rx(struct ethtool_coalesce_set_req *req, 298062306a36Sopenharmony_ci __u8 use_cqe_mode_rx) 298162306a36Sopenharmony_ci{ 298262306a36Sopenharmony_ci req->_present.use_cqe_mode_rx = 1; 298362306a36Sopenharmony_ci req->use_cqe_mode_rx = use_cqe_mode_rx; 298462306a36Sopenharmony_ci} 298562306a36Sopenharmony_cistatic inline void 298662306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_aggr_max_bytes(struct ethtool_coalesce_set_req *req, 298762306a36Sopenharmony_ci __u32 tx_aggr_max_bytes) 298862306a36Sopenharmony_ci{ 298962306a36Sopenharmony_ci req->_present.tx_aggr_max_bytes = 1; 299062306a36Sopenharmony_ci req->tx_aggr_max_bytes = tx_aggr_max_bytes; 299162306a36Sopenharmony_ci} 299262306a36Sopenharmony_cistatic inline void 299362306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_aggr_max_frames(struct ethtool_coalesce_set_req *req, 299462306a36Sopenharmony_ci __u32 tx_aggr_max_frames) 299562306a36Sopenharmony_ci{ 299662306a36Sopenharmony_ci req->_present.tx_aggr_max_frames = 1; 299762306a36Sopenharmony_ci req->tx_aggr_max_frames = tx_aggr_max_frames; 299862306a36Sopenharmony_ci} 299962306a36Sopenharmony_cistatic inline void 300062306a36Sopenharmony_ciethtool_coalesce_set_req_set_tx_aggr_time_usecs(struct ethtool_coalesce_set_req *req, 300162306a36Sopenharmony_ci __u32 tx_aggr_time_usecs) 300262306a36Sopenharmony_ci{ 300362306a36Sopenharmony_ci req->_present.tx_aggr_time_usecs = 1; 300462306a36Sopenharmony_ci req->tx_aggr_time_usecs = tx_aggr_time_usecs; 300562306a36Sopenharmony_ci} 300662306a36Sopenharmony_ci 300762306a36Sopenharmony_ci/* 300862306a36Sopenharmony_ci * Set coalesce params. 300962306a36Sopenharmony_ci */ 301062306a36Sopenharmony_ciint ethtool_coalesce_set(struct ynl_sock *ys, 301162306a36Sopenharmony_ci struct ethtool_coalesce_set_req *req); 301262306a36Sopenharmony_ci 301362306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PAUSE_GET ============== */ 301462306a36Sopenharmony_ci/* ETHTOOL_MSG_PAUSE_GET - do */ 301562306a36Sopenharmony_cistruct ethtool_pause_get_req { 301662306a36Sopenharmony_ci struct { 301762306a36Sopenharmony_ci __u32 header:1; 301862306a36Sopenharmony_ci } _present; 301962306a36Sopenharmony_ci 302062306a36Sopenharmony_ci struct ethtool_header header; 302162306a36Sopenharmony_ci}; 302262306a36Sopenharmony_ci 302362306a36Sopenharmony_cistatic inline struct ethtool_pause_get_req *ethtool_pause_get_req_alloc(void) 302462306a36Sopenharmony_ci{ 302562306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pause_get_req)); 302662306a36Sopenharmony_ci} 302762306a36Sopenharmony_civoid ethtool_pause_get_req_free(struct ethtool_pause_get_req *req); 302862306a36Sopenharmony_ci 302962306a36Sopenharmony_cistatic inline void 303062306a36Sopenharmony_ciethtool_pause_get_req_set_header_dev_index(struct ethtool_pause_get_req *req, 303162306a36Sopenharmony_ci __u32 dev_index) 303262306a36Sopenharmony_ci{ 303362306a36Sopenharmony_ci req->_present.header = 1; 303462306a36Sopenharmony_ci req->header._present.dev_index = 1; 303562306a36Sopenharmony_ci req->header.dev_index = dev_index; 303662306a36Sopenharmony_ci} 303762306a36Sopenharmony_cistatic inline void 303862306a36Sopenharmony_ciethtool_pause_get_req_set_header_dev_name(struct ethtool_pause_get_req *req, 303962306a36Sopenharmony_ci const char *dev_name) 304062306a36Sopenharmony_ci{ 304162306a36Sopenharmony_ci free(req->header.dev_name); 304262306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 304362306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 304462306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 304562306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 304662306a36Sopenharmony_ci} 304762306a36Sopenharmony_cistatic inline void 304862306a36Sopenharmony_ciethtool_pause_get_req_set_header_flags(struct ethtool_pause_get_req *req, 304962306a36Sopenharmony_ci __u32 flags) 305062306a36Sopenharmony_ci{ 305162306a36Sopenharmony_ci req->_present.header = 1; 305262306a36Sopenharmony_ci req->header._present.flags = 1; 305362306a36Sopenharmony_ci req->header.flags = flags; 305462306a36Sopenharmony_ci} 305562306a36Sopenharmony_ci 305662306a36Sopenharmony_cistruct ethtool_pause_get_rsp { 305762306a36Sopenharmony_ci struct { 305862306a36Sopenharmony_ci __u32 header:1; 305962306a36Sopenharmony_ci __u32 autoneg:1; 306062306a36Sopenharmony_ci __u32 rx:1; 306162306a36Sopenharmony_ci __u32 tx:1; 306262306a36Sopenharmony_ci __u32 stats:1; 306362306a36Sopenharmony_ci __u32 stats_src:1; 306462306a36Sopenharmony_ci } _present; 306562306a36Sopenharmony_ci 306662306a36Sopenharmony_ci struct ethtool_header header; 306762306a36Sopenharmony_ci __u8 autoneg; 306862306a36Sopenharmony_ci __u8 rx; 306962306a36Sopenharmony_ci __u8 tx; 307062306a36Sopenharmony_ci struct ethtool_pause_stat stats; 307162306a36Sopenharmony_ci __u32 stats_src; 307262306a36Sopenharmony_ci}; 307362306a36Sopenharmony_ci 307462306a36Sopenharmony_civoid ethtool_pause_get_rsp_free(struct ethtool_pause_get_rsp *rsp); 307562306a36Sopenharmony_ci 307662306a36Sopenharmony_ci/* 307762306a36Sopenharmony_ci * Get pause params. 307862306a36Sopenharmony_ci */ 307962306a36Sopenharmony_cistruct ethtool_pause_get_rsp * 308062306a36Sopenharmony_ciethtool_pause_get(struct ynl_sock *ys, struct ethtool_pause_get_req *req); 308162306a36Sopenharmony_ci 308262306a36Sopenharmony_ci/* ETHTOOL_MSG_PAUSE_GET - dump */ 308362306a36Sopenharmony_cistruct ethtool_pause_get_req_dump { 308462306a36Sopenharmony_ci struct { 308562306a36Sopenharmony_ci __u32 header:1; 308662306a36Sopenharmony_ci } _present; 308762306a36Sopenharmony_ci 308862306a36Sopenharmony_ci struct ethtool_header header; 308962306a36Sopenharmony_ci}; 309062306a36Sopenharmony_ci 309162306a36Sopenharmony_cistatic inline struct ethtool_pause_get_req_dump * 309262306a36Sopenharmony_ciethtool_pause_get_req_dump_alloc(void) 309362306a36Sopenharmony_ci{ 309462306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pause_get_req_dump)); 309562306a36Sopenharmony_ci} 309662306a36Sopenharmony_civoid ethtool_pause_get_req_dump_free(struct ethtool_pause_get_req_dump *req); 309762306a36Sopenharmony_ci 309862306a36Sopenharmony_cistatic inline void 309962306a36Sopenharmony_ciethtool_pause_get_req_dump_set_header_dev_index(struct ethtool_pause_get_req_dump *req, 310062306a36Sopenharmony_ci __u32 dev_index) 310162306a36Sopenharmony_ci{ 310262306a36Sopenharmony_ci req->_present.header = 1; 310362306a36Sopenharmony_ci req->header._present.dev_index = 1; 310462306a36Sopenharmony_ci req->header.dev_index = dev_index; 310562306a36Sopenharmony_ci} 310662306a36Sopenharmony_cistatic inline void 310762306a36Sopenharmony_ciethtool_pause_get_req_dump_set_header_dev_name(struct ethtool_pause_get_req_dump *req, 310862306a36Sopenharmony_ci const char *dev_name) 310962306a36Sopenharmony_ci{ 311062306a36Sopenharmony_ci free(req->header.dev_name); 311162306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 311262306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 311362306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 311462306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 311562306a36Sopenharmony_ci} 311662306a36Sopenharmony_cistatic inline void 311762306a36Sopenharmony_ciethtool_pause_get_req_dump_set_header_flags(struct ethtool_pause_get_req_dump *req, 311862306a36Sopenharmony_ci __u32 flags) 311962306a36Sopenharmony_ci{ 312062306a36Sopenharmony_ci req->_present.header = 1; 312162306a36Sopenharmony_ci req->header._present.flags = 1; 312262306a36Sopenharmony_ci req->header.flags = flags; 312362306a36Sopenharmony_ci} 312462306a36Sopenharmony_ci 312562306a36Sopenharmony_cistruct ethtool_pause_get_list { 312662306a36Sopenharmony_ci struct ethtool_pause_get_list *next; 312762306a36Sopenharmony_ci struct ethtool_pause_get_rsp obj __attribute__ ((aligned (8))); 312862306a36Sopenharmony_ci}; 312962306a36Sopenharmony_ci 313062306a36Sopenharmony_civoid ethtool_pause_get_list_free(struct ethtool_pause_get_list *rsp); 313162306a36Sopenharmony_ci 313262306a36Sopenharmony_cistruct ethtool_pause_get_list * 313362306a36Sopenharmony_ciethtool_pause_get_dump(struct ynl_sock *ys, 313462306a36Sopenharmony_ci struct ethtool_pause_get_req_dump *req); 313562306a36Sopenharmony_ci 313662306a36Sopenharmony_ci/* ETHTOOL_MSG_PAUSE_GET - notify */ 313762306a36Sopenharmony_cistruct ethtool_pause_get_ntf { 313862306a36Sopenharmony_ci __u16 family; 313962306a36Sopenharmony_ci __u8 cmd; 314062306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 314162306a36Sopenharmony_ci void (*free)(struct ethtool_pause_get_ntf *ntf); 314262306a36Sopenharmony_ci struct ethtool_pause_get_rsp obj __attribute__ ((aligned (8))); 314362306a36Sopenharmony_ci}; 314462306a36Sopenharmony_ci 314562306a36Sopenharmony_civoid ethtool_pause_get_ntf_free(struct ethtool_pause_get_ntf *rsp); 314662306a36Sopenharmony_ci 314762306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PAUSE_SET ============== */ 314862306a36Sopenharmony_ci/* ETHTOOL_MSG_PAUSE_SET - do */ 314962306a36Sopenharmony_cistruct ethtool_pause_set_req { 315062306a36Sopenharmony_ci struct { 315162306a36Sopenharmony_ci __u32 header:1; 315262306a36Sopenharmony_ci __u32 autoneg:1; 315362306a36Sopenharmony_ci __u32 rx:1; 315462306a36Sopenharmony_ci __u32 tx:1; 315562306a36Sopenharmony_ci __u32 stats:1; 315662306a36Sopenharmony_ci __u32 stats_src:1; 315762306a36Sopenharmony_ci } _present; 315862306a36Sopenharmony_ci 315962306a36Sopenharmony_ci struct ethtool_header header; 316062306a36Sopenharmony_ci __u8 autoneg; 316162306a36Sopenharmony_ci __u8 rx; 316262306a36Sopenharmony_ci __u8 tx; 316362306a36Sopenharmony_ci struct ethtool_pause_stat stats; 316462306a36Sopenharmony_ci __u32 stats_src; 316562306a36Sopenharmony_ci}; 316662306a36Sopenharmony_ci 316762306a36Sopenharmony_cistatic inline struct ethtool_pause_set_req *ethtool_pause_set_req_alloc(void) 316862306a36Sopenharmony_ci{ 316962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pause_set_req)); 317062306a36Sopenharmony_ci} 317162306a36Sopenharmony_civoid ethtool_pause_set_req_free(struct ethtool_pause_set_req *req); 317262306a36Sopenharmony_ci 317362306a36Sopenharmony_cistatic inline void 317462306a36Sopenharmony_ciethtool_pause_set_req_set_header_dev_index(struct ethtool_pause_set_req *req, 317562306a36Sopenharmony_ci __u32 dev_index) 317662306a36Sopenharmony_ci{ 317762306a36Sopenharmony_ci req->_present.header = 1; 317862306a36Sopenharmony_ci req->header._present.dev_index = 1; 317962306a36Sopenharmony_ci req->header.dev_index = dev_index; 318062306a36Sopenharmony_ci} 318162306a36Sopenharmony_cistatic inline void 318262306a36Sopenharmony_ciethtool_pause_set_req_set_header_dev_name(struct ethtool_pause_set_req *req, 318362306a36Sopenharmony_ci const char *dev_name) 318462306a36Sopenharmony_ci{ 318562306a36Sopenharmony_ci free(req->header.dev_name); 318662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 318762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 318862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 318962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 319062306a36Sopenharmony_ci} 319162306a36Sopenharmony_cistatic inline void 319262306a36Sopenharmony_ciethtool_pause_set_req_set_header_flags(struct ethtool_pause_set_req *req, 319362306a36Sopenharmony_ci __u32 flags) 319462306a36Sopenharmony_ci{ 319562306a36Sopenharmony_ci req->_present.header = 1; 319662306a36Sopenharmony_ci req->header._present.flags = 1; 319762306a36Sopenharmony_ci req->header.flags = flags; 319862306a36Sopenharmony_ci} 319962306a36Sopenharmony_cistatic inline void 320062306a36Sopenharmony_ciethtool_pause_set_req_set_autoneg(struct ethtool_pause_set_req *req, 320162306a36Sopenharmony_ci __u8 autoneg) 320262306a36Sopenharmony_ci{ 320362306a36Sopenharmony_ci req->_present.autoneg = 1; 320462306a36Sopenharmony_ci req->autoneg = autoneg; 320562306a36Sopenharmony_ci} 320662306a36Sopenharmony_cistatic inline void 320762306a36Sopenharmony_ciethtool_pause_set_req_set_rx(struct ethtool_pause_set_req *req, __u8 rx) 320862306a36Sopenharmony_ci{ 320962306a36Sopenharmony_ci req->_present.rx = 1; 321062306a36Sopenharmony_ci req->rx = rx; 321162306a36Sopenharmony_ci} 321262306a36Sopenharmony_cistatic inline void 321362306a36Sopenharmony_ciethtool_pause_set_req_set_tx(struct ethtool_pause_set_req *req, __u8 tx) 321462306a36Sopenharmony_ci{ 321562306a36Sopenharmony_ci req->_present.tx = 1; 321662306a36Sopenharmony_ci req->tx = tx; 321762306a36Sopenharmony_ci} 321862306a36Sopenharmony_cistatic inline void 321962306a36Sopenharmony_ciethtool_pause_set_req_set_stats_tx_frames(struct ethtool_pause_set_req *req, 322062306a36Sopenharmony_ci __u64 tx_frames) 322162306a36Sopenharmony_ci{ 322262306a36Sopenharmony_ci req->_present.stats = 1; 322362306a36Sopenharmony_ci req->stats._present.tx_frames = 1; 322462306a36Sopenharmony_ci req->stats.tx_frames = tx_frames; 322562306a36Sopenharmony_ci} 322662306a36Sopenharmony_cistatic inline void 322762306a36Sopenharmony_ciethtool_pause_set_req_set_stats_rx_frames(struct ethtool_pause_set_req *req, 322862306a36Sopenharmony_ci __u64 rx_frames) 322962306a36Sopenharmony_ci{ 323062306a36Sopenharmony_ci req->_present.stats = 1; 323162306a36Sopenharmony_ci req->stats._present.rx_frames = 1; 323262306a36Sopenharmony_ci req->stats.rx_frames = rx_frames; 323362306a36Sopenharmony_ci} 323462306a36Sopenharmony_cistatic inline void 323562306a36Sopenharmony_ciethtool_pause_set_req_set_stats_src(struct ethtool_pause_set_req *req, 323662306a36Sopenharmony_ci __u32 stats_src) 323762306a36Sopenharmony_ci{ 323862306a36Sopenharmony_ci req->_present.stats_src = 1; 323962306a36Sopenharmony_ci req->stats_src = stats_src; 324062306a36Sopenharmony_ci} 324162306a36Sopenharmony_ci 324262306a36Sopenharmony_ci/* 324362306a36Sopenharmony_ci * Set pause params. 324462306a36Sopenharmony_ci */ 324562306a36Sopenharmony_ciint ethtool_pause_set(struct ynl_sock *ys, struct ethtool_pause_set_req *req); 324662306a36Sopenharmony_ci 324762306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_EEE_GET ============== */ 324862306a36Sopenharmony_ci/* ETHTOOL_MSG_EEE_GET - do */ 324962306a36Sopenharmony_cistruct ethtool_eee_get_req { 325062306a36Sopenharmony_ci struct { 325162306a36Sopenharmony_ci __u32 header:1; 325262306a36Sopenharmony_ci } _present; 325362306a36Sopenharmony_ci 325462306a36Sopenharmony_ci struct ethtool_header header; 325562306a36Sopenharmony_ci}; 325662306a36Sopenharmony_ci 325762306a36Sopenharmony_cistatic inline struct ethtool_eee_get_req *ethtool_eee_get_req_alloc(void) 325862306a36Sopenharmony_ci{ 325962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_eee_get_req)); 326062306a36Sopenharmony_ci} 326162306a36Sopenharmony_civoid ethtool_eee_get_req_free(struct ethtool_eee_get_req *req); 326262306a36Sopenharmony_ci 326362306a36Sopenharmony_cistatic inline void 326462306a36Sopenharmony_ciethtool_eee_get_req_set_header_dev_index(struct ethtool_eee_get_req *req, 326562306a36Sopenharmony_ci __u32 dev_index) 326662306a36Sopenharmony_ci{ 326762306a36Sopenharmony_ci req->_present.header = 1; 326862306a36Sopenharmony_ci req->header._present.dev_index = 1; 326962306a36Sopenharmony_ci req->header.dev_index = dev_index; 327062306a36Sopenharmony_ci} 327162306a36Sopenharmony_cistatic inline void 327262306a36Sopenharmony_ciethtool_eee_get_req_set_header_dev_name(struct ethtool_eee_get_req *req, 327362306a36Sopenharmony_ci const char *dev_name) 327462306a36Sopenharmony_ci{ 327562306a36Sopenharmony_ci free(req->header.dev_name); 327662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 327762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 327862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 327962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 328062306a36Sopenharmony_ci} 328162306a36Sopenharmony_cistatic inline void 328262306a36Sopenharmony_ciethtool_eee_get_req_set_header_flags(struct ethtool_eee_get_req *req, 328362306a36Sopenharmony_ci __u32 flags) 328462306a36Sopenharmony_ci{ 328562306a36Sopenharmony_ci req->_present.header = 1; 328662306a36Sopenharmony_ci req->header._present.flags = 1; 328762306a36Sopenharmony_ci req->header.flags = flags; 328862306a36Sopenharmony_ci} 328962306a36Sopenharmony_ci 329062306a36Sopenharmony_cistruct ethtool_eee_get_rsp { 329162306a36Sopenharmony_ci struct { 329262306a36Sopenharmony_ci __u32 header:1; 329362306a36Sopenharmony_ci __u32 modes_ours:1; 329462306a36Sopenharmony_ci __u32 modes_peer:1; 329562306a36Sopenharmony_ci __u32 active:1; 329662306a36Sopenharmony_ci __u32 enabled:1; 329762306a36Sopenharmony_ci __u32 tx_lpi_enabled:1; 329862306a36Sopenharmony_ci __u32 tx_lpi_timer:1; 329962306a36Sopenharmony_ci } _present; 330062306a36Sopenharmony_ci 330162306a36Sopenharmony_ci struct ethtool_header header; 330262306a36Sopenharmony_ci struct ethtool_bitset modes_ours; 330362306a36Sopenharmony_ci struct ethtool_bitset modes_peer; 330462306a36Sopenharmony_ci __u8 active; 330562306a36Sopenharmony_ci __u8 enabled; 330662306a36Sopenharmony_ci __u8 tx_lpi_enabled; 330762306a36Sopenharmony_ci __u32 tx_lpi_timer; 330862306a36Sopenharmony_ci}; 330962306a36Sopenharmony_ci 331062306a36Sopenharmony_civoid ethtool_eee_get_rsp_free(struct ethtool_eee_get_rsp *rsp); 331162306a36Sopenharmony_ci 331262306a36Sopenharmony_ci/* 331362306a36Sopenharmony_ci * Get eee params. 331462306a36Sopenharmony_ci */ 331562306a36Sopenharmony_cistruct ethtool_eee_get_rsp * 331662306a36Sopenharmony_ciethtool_eee_get(struct ynl_sock *ys, struct ethtool_eee_get_req *req); 331762306a36Sopenharmony_ci 331862306a36Sopenharmony_ci/* ETHTOOL_MSG_EEE_GET - dump */ 331962306a36Sopenharmony_cistruct ethtool_eee_get_req_dump { 332062306a36Sopenharmony_ci struct { 332162306a36Sopenharmony_ci __u32 header:1; 332262306a36Sopenharmony_ci } _present; 332362306a36Sopenharmony_ci 332462306a36Sopenharmony_ci struct ethtool_header header; 332562306a36Sopenharmony_ci}; 332662306a36Sopenharmony_ci 332762306a36Sopenharmony_cistatic inline struct ethtool_eee_get_req_dump * 332862306a36Sopenharmony_ciethtool_eee_get_req_dump_alloc(void) 332962306a36Sopenharmony_ci{ 333062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_eee_get_req_dump)); 333162306a36Sopenharmony_ci} 333262306a36Sopenharmony_civoid ethtool_eee_get_req_dump_free(struct ethtool_eee_get_req_dump *req); 333362306a36Sopenharmony_ci 333462306a36Sopenharmony_cistatic inline void 333562306a36Sopenharmony_ciethtool_eee_get_req_dump_set_header_dev_index(struct ethtool_eee_get_req_dump *req, 333662306a36Sopenharmony_ci __u32 dev_index) 333762306a36Sopenharmony_ci{ 333862306a36Sopenharmony_ci req->_present.header = 1; 333962306a36Sopenharmony_ci req->header._present.dev_index = 1; 334062306a36Sopenharmony_ci req->header.dev_index = dev_index; 334162306a36Sopenharmony_ci} 334262306a36Sopenharmony_cistatic inline void 334362306a36Sopenharmony_ciethtool_eee_get_req_dump_set_header_dev_name(struct ethtool_eee_get_req_dump *req, 334462306a36Sopenharmony_ci const char *dev_name) 334562306a36Sopenharmony_ci{ 334662306a36Sopenharmony_ci free(req->header.dev_name); 334762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 334862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 334962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 335062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 335162306a36Sopenharmony_ci} 335262306a36Sopenharmony_cistatic inline void 335362306a36Sopenharmony_ciethtool_eee_get_req_dump_set_header_flags(struct ethtool_eee_get_req_dump *req, 335462306a36Sopenharmony_ci __u32 flags) 335562306a36Sopenharmony_ci{ 335662306a36Sopenharmony_ci req->_present.header = 1; 335762306a36Sopenharmony_ci req->header._present.flags = 1; 335862306a36Sopenharmony_ci req->header.flags = flags; 335962306a36Sopenharmony_ci} 336062306a36Sopenharmony_ci 336162306a36Sopenharmony_cistruct ethtool_eee_get_list { 336262306a36Sopenharmony_ci struct ethtool_eee_get_list *next; 336362306a36Sopenharmony_ci struct ethtool_eee_get_rsp obj __attribute__ ((aligned (8))); 336462306a36Sopenharmony_ci}; 336562306a36Sopenharmony_ci 336662306a36Sopenharmony_civoid ethtool_eee_get_list_free(struct ethtool_eee_get_list *rsp); 336762306a36Sopenharmony_ci 336862306a36Sopenharmony_cistruct ethtool_eee_get_list * 336962306a36Sopenharmony_ciethtool_eee_get_dump(struct ynl_sock *ys, struct ethtool_eee_get_req_dump *req); 337062306a36Sopenharmony_ci 337162306a36Sopenharmony_ci/* ETHTOOL_MSG_EEE_GET - notify */ 337262306a36Sopenharmony_cistruct ethtool_eee_get_ntf { 337362306a36Sopenharmony_ci __u16 family; 337462306a36Sopenharmony_ci __u8 cmd; 337562306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 337662306a36Sopenharmony_ci void (*free)(struct ethtool_eee_get_ntf *ntf); 337762306a36Sopenharmony_ci struct ethtool_eee_get_rsp obj __attribute__ ((aligned (8))); 337862306a36Sopenharmony_ci}; 337962306a36Sopenharmony_ci 338062306a36Sopenharmony_civoid ethtool_eee_get_ntf_free(struct ethtool_eee_get_ntf *rsp); 338162306a36Sopenharmony_ci 338262306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_EEE_SET ============== */ 338362306a36Sopenharmony_ci/* ETHTOOL_MSG_EEE_SET - do */ 338462306a36Sopenharmony_cistruct ethtool_eee_set_req { 338562306a36Sopenharmony_ci struct { 338662306a36Sopenharmony_ci __u32 header:1; 338762306a36Sopenharmony_ci __u32 modes_ours:1; 338862306a36Sopenharmony_ci __u32 modes_peer:1; 338962306a36Sopenharmony_ci __u32 active:1; 339062306a36Sopenharmony_ci __u32 enabled:1; 339162306a36Sopenharmony_ci __u32 tx_lpi_enabled:1; 339262306a36Sopenharmony_ci __u32 tx_lpi_timer:1; 339362306a36Sopenharmony_ci } _present; 339462306a36Sopenharmony_ci 339562306a36Sopenharmony_ci struct ethtool_header header; 339662306a36Sopenharmony_ci struct ethtool_bitset modes_ours; 339762306a36Sopenharmony_ci struct ethtool_bitset modes_peer; 339862306a36Sopenharmony_ci __u8 active; 339962306a36Sopenharmony_ci __u8 enabled; 340062306a36Sopenharmony_ci __u8 tx_lpi_enabled; 340162306a36Sopenharmony_ci __u32 tx_lpi_timer; 340262306a36Sopenharmony_ci}; 340362306a36Sopenharmony_ci 340462306a36Sopenharmony_cistatic inline struct ethtool_eee_set_req *ethtool_eee_set_req_alloc(void) 340562306a36Sopenharmony_ci{ 340662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_eee_set_req)); 340762306a36Sopenharmony_ci} 340862306a36Sopenharmony_civoid ethtool_eee_set_req_free(struct ethtool_eee_set_req *req); 340962306a36Sopenharmony_ci 341062306a36Sopenharmony_cistatic inline void 341162306a36Sopenharmony_ciethtool_eee_set_req_set_header_dev_index(struct ethtool_eee_set_req *req, 341262306a36Sopenharmony_ci __u32 dev_index) 341362306a36Sopenharmony_ci{ 341462306a36Sopenharmony_ci req->_present.header = 1; 341562306a36Sopenharmony_ci req->header._present.dev_index = 1; 341662306a36Sopenharmony_ci req->header.dev_index = dev_index; 341762306a36Sopenharmony_ci} 341862306a36Sopenharmony_cistatic inline void 341962306a36Sopenharmony_ciethtool_eee_set_req_set_header_dev_name(struct ethtool_eee_set_req *req, 342062306a36Sopenharmony_ci const char *dev_name) 342162306a36Sopenharmony_ci{ 342262306a36Sopenharmony_ci free(req->header.dev_name); 342362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 342462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 342562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 342662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 342762306a36Sopenharmony_ci} 342862306a36Sopenharmony_cistatic inline void 342962306a36Sopenharmony_ciethtool_eee_set_req_set_header_flags(struct ethtool_eee_set_req *req, 343062306a36Sopenharmony_ci __u32 flags) 343162306a36Sopenharmony_ci{ 343262306a36Sopenharmony_ci req->_present.header = 1; 343362306a36Sopenharmony_ci req->header._present.flags = 1; 343462306a36Sopenharmony_ci req->header.flags = flags; 343562306a36Sopenharmony_ci} 343662306a36Sopenharmony_cistatic inline void 343762306a36Sopenharmony_ciethtool_eee_set_req_set_modes_ours_nomask(struct ethtool_eee_set_req *req) 343862306a36Sopenharmony_ci{ 343962306a36Sopenharmony_ci req->_present.modes_ours = 1; 344062306a36Sopenharmony_ci req->modes_ours._present.nomask = 1; 344162306a36Sopenharmony_ci} 344262306a36Sopenharmony_cistatic inline void 344362306a36Sopenharmony_ciethtool_eee_set_req_set_modes_ours_size(struct ethtool_eee_set_req *req, 344462306a36Sopenharmony_ci __u32 size) 344562306a36Sopenharmony_ci{ 344662306a36Sopenharmony_ci req->_present.modes_ours = 1; 344762306a36Sopenharmony_ci req->modes_ours._present.size = 1; 344862306a36Sopenharmony_ci req->modes_ours.size = size; 344962306a36Sopenharmony_ci} 345062306a36Sopenharmony_cistatic inline void 345162306a36Sopenharmony_ci__ethtool_eee_set_req_set_modes_ours_bits_bit(struct ethtool_eee_set_req *req, 345262306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 345362306a36Sopenharmony_ci unsigned int n_bit) 345462306a36Sopenharmony_ci{ 345562306a36Sopenharmony_ci free(req->modes_ours.bits.bit); 345662306a36Sopenharmony_ci req->modes_ours.bits.bit = bit; 345762306a36Sopenharmony_ci req->modes_ours.bits.n_bit = n_bit; 345862306a36Sopenharmony_ci} 345962306a36Sopenharmony_cistatic inline void 346062306a36Sopenharmony_ciethtool_eee_set_req_set_modes_peer_nomask(struct ethtool_eee_set_req *req) 346162306a36Sopenharmony_ci{ 346262306a36Sopenharmony_ci req->_present.modes_peer = 1; 346362306a36Sopenharmony_ci req->modes_peer._present.nomask = 1; 346462306a36Sopenharmony_ci} 346562306a36Sopenharmony_cistatic inline void 346662306a36Sopenharmony_ciethtool_eee_set_req_set_modes_peer_size(struct ethtool_eee_set_req *req, 346762306a36Sopenharmony_ci __u32 size) 346862306a36Sopenharmony_ci{ 346962306a36Sopenharmony_ci req->_present.modes_peer = 1; 347062306a36Sopenharmony_ci req->modes_peer._present.size = 1; 347162306a36Sopenharmony_ci req->modes_peer.size = size; 347262306a36Sopenharmony_ci} 347362306a36Sopenharmony_cistatic inline void 347462306a36Sopenharmony_ci__ethtool_eee_set_req_set_modes_peer_bits_bit(struct ethtool_eee_set_req *req, 347562306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 347662306a36Sopenharmony_ci unsigned int n_bit) 347762306a36Sopenharmony_ci{ 347862306a36Sopenharmony_ci free(req->modes_peer.bits.bit); 347962306a36Sopenharmony_ci req->modes_peer.bits.bit = bit; 348062306a36Sopenharmony_ci req->modes_peer.bits.n_bit = n_bit; 348162306a36Sopenharmony_ci} 348262306a36Sopenharmony_cistatic inline void 348362306a36Sopenharmony_ciethtool_eee_set_req_set_active(struct ethtool_eee_set_req *req, __u8 active) 348462306a36Sopenharmony_ci{ 348562306a36Sopenharmony_ci req->_present.active = 1; 348662306a36Sopenharmony_ci req->active = active; 348762306a36Sopenharmony_ci} 348862306a36Sopenharmony_cistatic inline void 348962306a36Sopenharmony_ciethtool_eee_set_req_set_enabled(struct ethtool_eee_set_req *req, __u8 enabled) 349062306a36Sopenharmony_ci{ 349162306a36Sopenharmony_ci req->_present.enabled = 1; 349262306a36Sopenharmony_ci req->enabled = enabled; 349362306a36Sopenharmony_ci} 349462306a36Sopenharmony_cistatic inline void 349562306a36Sopenharmony_ciethtool_eee_set_req_set_tx_lpi_enabled(struct ethtool_eee_set_req *req, 349662306a36Sopenharmony_ci __u8 tx_lpi_enabled) 349762306a36Sopenharmony_ci{ 349862306a36Sopenharmony_ci req->_present.tx_lpi_enabled = 1; 349962306a36Sopenharmony_ci req->tx_lpi_enabled = tx_lpi_enabled; 350062306a36Sopenharmony_ci} 350162306a36Sopenharmony_cistatic inline void 350262306a36Sopenharmony_ciethtool_eee_set_req_set_tx_lpi_timer(struct ethtool_eee_set_req *req, 350362306a36Sopenharmony_ci __u32 tx_lpi_timer) 350462306a36Sopenharmony_ci{ 350562306a36Sopenharmony_ci req->_present.tx_lpi_timer = 1; 350662306a36Sopenharmony_ci req->tx_lpi_timer = tx_lpi_timer; 350762306a36Sopenharmony_ci} 350862306a36Sopenharmony_ci 350962306a36Sopenharmony_ci/* 351062306a36Sopenharmony_ci * Set eee params. 351162306a36Sopenharmony_ci */ 351262306a36Sopenharmony_ciint ethtool_eee_set(struct ynl_sock *ys, struct ethtool_eee_set_req *req); 351362306a36Sopenharmony_ci 351462306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_TSINFO_GET ============== */ 351562306a36Sopenharmony_ci/* ETHTOOL_MSG_TSINFO_GET - do */ 351662306a36Sopenharmony_cistruct ethtool_tsinfo_get_req { 351762306a36Sopenharmony_ci struct { 351862306a36Sopenharmony_ci __u32 header:1; 351962306a36Sopenharmony_ci } _present; 352062306a36Sopenharmony_ci 352162306a36Sopenharmony_ci struct ethtool_header header; 352262306a36Sopenharmony_ci}; 352362306a36Sopenharmony_ci 352462306a36Sopenharmony_cistatic inline struct ethtool_tsinfo_get_req *ethtool_tsinfo_get_req_alloc(void) 352562306a36Sopenharmony_ci{ 352662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_tsinfo_get_req)); 352762306a36Sopenharmony_ci} 352862306a36Sopenharmony_civoid ethtool_tsinfo_get_req_free(struct ethtool_tsinfo_get_req *req); 352962306a36Sopenharmony_ci 353062306a36Sopenharmony_cistatic inline void 353162306a36Sopenharmony_ciethtool_tsinfo_get_req_set_header_dev_index(struct ethtool_tsinfo_get_req *req, 353262306a36Sopenharmony_ci __u32 dev_index) 353362306a36Sopenharmony_ci{ 353462306a36Sopenharmony_ci req->_present.header = 1; 353562306a36Sopenharmony_ci req->header._present.dev_index = 1; 353662306a36Sopenharmony_ci req->header.dev_index = dev_index; 353762306a36Sopenharmony_ci} 353862306a36Sopenharmony_cistatic inline void 353962306a36Sopenharmony_ciethtool_tsinfo_get_req_set_header_dev_name(struct ethtool_tsinfo_get_req *req, 354062306a36Sopenharmony_ci const char *dev_name) 354162306a36Sopenharmony_ci{ 354262306a36Sopenharmony_ci free(req->header.dev_name); 354362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 354462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 354562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 354662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 354762306a36Sopenharmony_ci} 354862306a36Sopenharmony_cistatic inline void 354962306a36Sopenharmony_ciethtool_tsinfo_get_req_set_header_flags(struct ethtool_tsinfo_get_req *req, 355062306a36Sopenharmony_ci __u32 flags) 355162306a36Sopenharmony_ci{ 355262306a36Sopenharmony_ci req->_present.header = 1; 355362306a36Sopenharmony_ci req->header._present.flags = 1; 355462306a36Sopenharmony_ci req->header.flags = flags; 355562306a36Sopenharmony_ci} 355662306a36Sopenharmony_ci 355762306a36Sopenharmony_cistruct ethtool_tsinfo_get_rsp { 355862306a36Sopenharmony_ci struct { 355962306a36Sopenharmony_ci __u32 header:1; 356062306a36Sopenharmony_ci __u32 timestamping:1; 356162306a36Sopenharmony_ci __u32 tx_types:1; 356262306a36Sopenharmony_ci __u32 rx_filters:1; 356362306a36Sopenharmony_ci __u32 phc_index:1; 356462306a36Sopenharmony_ci } _present; 356562306a36Sopenharmony_ci 356662306a36Sopenharmony_ci struct ethtool_header header; 356762306a36Sopenharmony_ci struct ethtool_bitset timestamping; 356862306a36Sopenharmony_ci struct ethtool_bitset tx_types; 356962306a36Sopenharmony_ci struct ethtool_bitset rx_filters; 357062306a36Sopenharmony_ci __u32 phc_index; 357162306a36Sopenharmony_ci}; 357262306a36Sopenharmony_ci 357362306a36Sopenharmony_civoid ethtool_tsinfo_get_rsp_free(struct ethtool_tsinfo_get_rsp *rsp); 357462306a36Sopenharmony_ci 357562306a36Sopenharmony_ci/* 357662306a36Sopenharmony_ci * Get tsinfo params. 357762306a36Sopenharmony_ci */ 357862306a36Sopenharmony_cistruct ethtool_tsinfo_get_rsp * 357962306a36Sopenharmony_ciethtool_tsinfo_get(struct ynl_sock *ys, struct ethtool_tsinfo_get_req *req); 358062306a36Sopenharmony_ci 358162306a36Sopenharmony_ci/* ETHTOOL_MSG_TSINFO_GET - dump */ 358262306a36Sopenharmony_cistruct ethtool_tsinfo_get_req_dump { 358362306a36Sopenharmony_ci struct { 358462306a36Sopenharmony_ci __u32 header:1; 358562306a36Sopenharmony_ci } _present; 358662306a36Sopenharmony_ci 358762306a36Sopenharmony_ci struct ethtool_header header; 358862306a36Sopenharmony_ci}; 358962306a36Sopenharmony_ci 359062306a36Sopenharmony_cistatic inline struct ethtool_tsinfo_get_req_dump * 359162306a36Sopenharmony_ciethtool_tsinfo_get_req_dump_alloc(void) 359262306a36Sopenharmony_ci{ 359362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_tsinfo_get_req_dump)); 359462306a36Sopenharmony_ci} 359562306a36Sopenharmony_civoid ethtool_tsinfo_get_req_dump_free(struct ethtool_tsinfo_get_req_dump *req); 359662306a36Sopenharmony_ci 359762306a36Sopenharmony_cistatic inline void 359862306a36Sopenharmony_ciethtool_tsinfo_get_req_dump_set_header_dev_index(struct ethtool_tsinfo_get_req_dump *req, 359962306a36Sopenharmony_ci __u32 dev_index) 360062306a36Sopenharmony_ci{ 360162306a36Sopenharmony_ci req->_present.header = 1; 360262306a36Sopenharmony_ci req->header._present.dev_index = 1; 360362306a36Sopenharmony_ci req->header.dev_index = dev_index; 360462306a36Sopenharmony_ci} 360562306a36Sopenharmony_cistatic inline void 360662306a36Sopenharmony_ciethtool_tsinfo_get_req_dump_set_header_dev_name(struct ethtool_tsinfo_get_req_dump *req, 360762306a36Sopenharmony_ci const char *dev_name) 360862306a36Sopenharmony_ci{ 360962306a36Sopenharmony_ci free(req->header.dev_name); 361062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 361162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 361262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 361362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 361462306a36Sopenharmony_ci} 361562306a36Sopenharmony_cistatic inline void 361662306a36Sopenharmony_ciethtool_tsinfo_get_req_dump_set_header_flags(struct ethtool_tsinfo_get_req_dump *req, 361762306a36Sopenharmony_ci __u32 flags) 361862306a36Sopenharmony_ci{ 361962306a36Sopenharmony_ci req->_present.header = 1; 362062306a36Sopenharmony_ci req->header._present.flags = 1; 362162306a36Sopenharmony_ci req->header.flags = flags; 362262306a36Sopenharmony_ci} 362362306a36Sopenharmony_ci 362462306a36Sopenharmony_cistruct ethtool_tsinfo_get_list { 362562306a36Sopenharmony_ci struct ethtool_tsinfo_get_list *next; 362662306a36Sopenharmony_ci struct ethtool_tsinfo_get_rsp obj __attribute__ ((aligned (8))); 362762306a36Sopenharmony_ci}; 362862306a36Sopenharmony_ci 362962306a36Sopenharmony_civoid ethtool_tsinfo_get_list_free(struct ethtool_tsinfo_get_list *rsp); 363062306a36Sopenharmony_ci 363162306a36Sopenharmony_cistruct ethtool_tsinfo_get_list * 363262306a36Sopenharmony_ciethtool_tsinfo_get_dump(struct ynl_sock *ys, 363362306a36Sopenharmony_ci struct ethtool_tsinfo_get_req_dump *req); 363462306a36Sopenharmony_ci 363562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_CABLE_TEST_ACT ============== */ 363662306a36Sopenharmony_ci/* ETHTOOL_MSG_CABLE_TEST_ACT - do */ 363762306a36Sopenharmony_cistruct ethtool_cable_test_act_req { 363862306a36Sopenharmony_ci struct { 363962306a36Sopenharmony_ci __u32 header:1; 364062306a36Sopenharmony_ci } _present; 364162306a36Sopenharmony_ci 364262306a36Sopenharmony_ci struct ethtool_header header; 364362306a36Sopenharmony_ci}; 364462306a36Sopenharmony_ci 364562306a36Sopenharmony_cistatic inline struct ethtool_cable_test_act_req * 364662306a36Sopenharmony_ciethtool_cable_test_act_req_alloc(void) 364762306a36Sopenharmony_ci{ 364862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_cable_test_act_req)); 364962306a36Sopenharmony_ci} 365062306a36Sopenharmony_civoid ethtool_cable_test_act_req_free(struct ethtool_cable_test_act_req *req); 365162306a36Sopenharmony_ci 365262306a36Sopenharmony_cistatic inline void 365362306a36Sopenharmony_ciethtool_cable_test_act_req_set_header_dev_index(struct ethtool_cable_test_act_req *req, 365462306a36Sopenharmony_ci __u32 dev_index) 365562306a36Sopenharmony_ci{ 365662306a36Sopenharmony_ci req->_present.header = 1; 365762306a36Sopenharmony_ci req->header._present.dev_index = 1; 365862306a36Sopenharmony_ci req->header.dev_index = dev_index; 365962306a36Sopenharmony_ci} 366062306a36Sopenharmony_cistatic inline void 366162306a36Sopenharmony_ciethtool_cable_test_act_req_set_header_dev_name(struct ethtool_cable_test_act_req *req, 366262306a36Sopenharmony_ci const char *dev_name) 366362306a36Sopenharmony_ci{ 366462306a36Sopenharmony_ci free(req->header.dev_name); 366562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 366662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 366762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 366862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 366962306a36Sopenharmony_ci} 367062306a36Sopenharmony_cistatic inline void 367162306a36Sopenharmony_ciethtool_cable_test_act_req_set_header_flags(struct ethtool_cable_test_act_req *req, 367262306a36Sopenharmony_ci __u32 flags) 367362306a36Sopenharmony_ci{ 367462306a36Sopenharmony_ci req->_present.header = 1; 367562306a36Sopenharmony_ci req->header._present.flags = 1; 367662306a36Sopenharmony_ci req->header.flags = flags; 367762306a36Sopenharmony_ci} 367862306a36Sopenharmony_ci 367962306a36Sopenharmony_ci/* 368062306a36Sopenharmony_ci * Cable test. 368162306a36Sopenharmony_ci */ 368262306a36Sopenharmony_ciint ethtool_cable_test_act(struct ynl_sock *ys, 368362306a36Sopenharmony_ci struct ethtool_cable_test_act_req *req); 368462306a36Sopenharmony_ci 368562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_CABLE_TEST_TDR_ACT ============== */ 368662306a36Sopenharmony_ci/* ETHTOOL_MSG_CABLE_TEST_TDR_ACT - do */ 368762306a36Sopenharmony_cistruct ethtool_cable_test_tdr_act_req { 368862306a36Sopenharmony_ci struct { 368962306a36Sopenharmony_ci __u32 header:1; 369062306a36Sopenharmony_ci } _present; 369162306a36Sopenharmony_ci 369262306a36Sopenharmony_ci struct ethtool_header header; 369362306a36Sopenharmony_ci}; 369462306a36Sopenharmony_ci 369562306a36Sopenharmony_cistatic inline struct ethtool_cable_test_tdr_act_req * 369662306a36Sopenharmony_ciethtool_cable_test_tdr_act_req_alloc(void) 369762306a36Sopenharmony_ci{ 369862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_cable_test_tdr_act_req)); 369962306a36Sopenharmony_ci} 370062306a36Sopenharmony_civoid 370162306a36Sopenharmony_ciethtool_cable_test_tdr_act_req_free(struct ethtool_cable_test_tdr_act_req *req); 370262306a36Sopenharmony_ci 370362306a36Sopenharmony_cistatic inline void 370462306a36Sopenharmony_ciethtool_cable_test_tdr_act_req_set_header_dev_index(struct ethtool_cable_test_tdr_act_req *req, 370562306a36Sopenharmony_ci __u32 dev_index) 370662306a36Sopenharmony_ci{ 370762306a36Sopenharmony_ci req->_present.header = 1; 370862306a36Sopenharmony_ci req->header._present.dev_index = 1; 370962306a36Sopenharmony_ci req->header.dev_index = dev_index; 371062306a36Sopenharmony_ci} 371162306a36Sopenharmony_cistatic inline void 371262306a36Sopenharmony_ciethtool_cable_test_tdr_act_req_set_header_dev_name(struct ethtool_cable_test_tdr_act_req *req, 371362306a36Sopenharmony_ci const char *dev_name) 371462306a36Sopenharmony_ci{ 371562306a36Sopenharmony_ci free(req->header.dev_name); 371662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 371762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 371862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 371962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 372062306a36Sopenharmony_ci} 372162306a36Sopenharmony_cistatic inline void 372262306a36Sopenharmony_ciethtool_cable_test_tdr_act_req_set_header_flags(struct ethtool_cable_test_tdr_act_req *req, 372362306a36Sopenharmony_ci __u32 flags) 372462306a36Sopenharmony_ci{ 372562306a36Sopenharmony_ci req->_present.header = 1; 372662306a36Sopenharmony_ci req->header._present.flags = 1; 372762306a36Sopenharmony_ci req->header.flags = flags; 372862306a36Sopenharmony_ci} 372962306a36Sopenharmony_ci 373062306a36Sopenharmony_ci/* 373162306a36Sopenharmony_ci * Cable test TDR. 373262306a36Sopenharmony_ci */ 373362306a36Sopenharmony_ciint ethtool_cable_test_tdr_act(struct ynl_sock *ys, 373462306a36Sopenharmony_ci struct ethtool_cable_test_tdr_act_req *req); 373562306a36Sopenharmony_ci 373662306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_TUNNEL_INFO_GET ============== */ 373762306a36Sopenharmony_ci/* ETHTOOL_MSG_TUNNEL_INFO_GET - do */ 373862306a36Sopenharmony_cistruct ethtool_tunnel_info_get_req { 373962306a36Sopenharmony_ci struct { 374062306a36Sopenharmony_ci __u32 header:1; 374162306a36Sopenharmony_ci } _present; 374262306a36Sopenharmony_ci 374362306a36Sopenharmony_ci struct ethtool_header header; 374462306a36Sopenharmony_ci}; 374562306a36Sopenharmony_ci 374662306a36Sopenharmony_cistatic inline struct ethtool_tunnel_info_get_req * 374762306a36Sopenharmony_ciethtool_tunnel_info_get_req_alloc(void) 374862306a36Sopenharmony_ci{ 374962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_tunnel_info_get_req)); 375062306a36Sopenharmony_ci} 375162306a36Sopenharmony_civoid ethtool_tunnel_info_get_req_free(struct ethtool_tunnel_info_get_req *req); 375262306a36Sopenharmony_ci 375362306a36Sopenharmony_cistatic inline void 375462306a36Sopenharmony_ciethtool_tunnel_info_get_req_set_header_dev_index(struct ethtool_tunnel_info_get_req *req, 375562306a36Sopenharmony_ci __u32 dev_index) 375662306a36Sopenharmony_ci{ 375762306a36Sopenharmony_ci req->_present.header = 1; 375862306a36Sopenharmony_ci req->header._present.dev_index = 1; 375962306a36Sopenharmony_ci req->header.dev_index = dev_index; 376062306a36Sopenharmony_ci} 376162306a36Sopenharmony_cistatic inline void 376262306a36Sopenharmony_ciethtool_tunnel_info_get_req_set_header_dev_name(struct ethtool_tunnel_info_get_req *req, 376362306a36Sopenharmony_ci const char *dev_name) 376462306a36Sopenharmony_ci{ 376562306a36Sopenharmony_ci free(req->header.dev_name); 376662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 376762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 376862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 376962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 377062306a36Sopenharmony_ci} 377162306a36Sopenharmony_cistatic inline void 377262306a36Sopenharmony_ciethtool_tunnel_info_get_req_set_header_flags(struct ethtool_tunnel_info_get_req *req, 377362306a36Sopenharmony_ci __u32 flags) 377462306a36Sopenharmony_ci{ 377562306a36Sopenharmony_ci req->_present.header = 1; 377662306a36Sopenharmony_ci req->header._present.flags = 1; 377762306a36Sopenharmony_ci req->header.flags = flags; 377862306a36Sopenharmony_ci} 377962306a36Sopenharmony_ci 378062306a36Sopenharmony_cistruct ethtool_tunnel_info_get_rsp { 378162306a36Sopenharmony_ci struct { 378262306a36Sopenharmony_ci __u32 header:1; 378362306a36Sopenharmony_ci __u32 udp_ports:1; 378462306a36Sopenharmony_ci } _present; 378562306a36Sopenharmony_ci 378662306a36Sopenharmony_ci struct ethtool_header header; 378762306a36Sopenharmony_ci struct ethtool_tunnel_udp udp_ports; 378862306a36Sopenharmony_ci}; 378962306a36Sopenharmony_ci 379062306a36Sopenharmony_civoid ethtool_tunnel_info_get_rsp_free(struct ethtool_tunnel_info_get_rsp *rsp); 379162306a36Sopenharmony_ci 379262306a36Sopenharmony_ci/* 379362306a36Sopenharmony_ci * Get tsinfo params. 379462306a36Sopenharmony_ci */ 379562306a36Sopenharmony_cistruct ethtool_tunnel_info_get_rsp * 379662306a36Sopenharmony_ciethtool_tunnel_info_get(struct ynl_sock *ys, 379762306a36Sopenharmony_ci struct ethtool_tunnel_info_get_req *req); 379862306a36Sopenharmony_ci 379962306a36Sopenharmony_ci/* ETHTOOL_MSG_TUNNEL_INFO_GET - dump */ 380062306a36Sopenharmony_cistruct ethtool_tunnel_info_get_req_dump { 380162306a36Sopenharmony_ci struct { 380262306a36Sopenharmony_ci __u32 header:1; 380362306a36Sopenharmony_ci } _present; 380462306a36Sopenharmony_ci 380562306a36Sopenharmony_ci struct ethtool_header header; 380662306a36Sopenharmony_ci}; 380762306a36Sopenharmony_ci 380862306a36Sopenharmony_cistatic inline struct ethtool_tunnel_info_get_req_dump * 380962306a36Sopenharmony_ciethtool_tunnel_info_get_req_dump_alloc(void) 381062306a36Sopenharmony_ci{ 381162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_tunnel_info_get_req_dump)); 381262306a36Sopenharmony_ci} 381362306a36Sopenharmony_civoid 381462306a36Sopenharmony_ciethtool_tunnel_info_get_req_dump_free(struct ethtool_tunnel_info_get_req_dump *req); 381562306a36Sopenharmony_ci 381662306a36Sopenharmony_cistatic inline void 381762306a36Sopenharmony_ciethtool_tunnel_info_get_req_dump_set_header_dev_index(struct ethtool_tunnel_info_get_req_dump *req, 381862306a36Sopenharmony_ci __u32 dev_index) 381962306a36Sopenharmony_ci{ 382062306a36Sopenharmony_ci req->_present.header = 1; 382162306a36Sopenharmony_ci req->header._present.dev_index = 1; 382262306a36Sopenharmony_ci req->header.dev_index = dev_index; 382362306a36Sopenharmony_ci} 382462306a36Sopenharmony_cistatic inline void 382562306a36Sopenharmony_ciethtool_tunnel_info_get_req_dump_set_header_dev_name(struct ethtool_tunnel_info_get_req_dump *req, 382662306a36Sopenharmony_ci const char *dev_name) 382762306a36Sopenharmony_ci{ 382862306a36Sopenharmony_ci free(req->header.dev_name); 382962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 383062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 383162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 383262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 383362306a36Sopenharmony_ci} 383462306a36Sopenharmony_cistatic inline void 383562306a36Sopenharmony_ciethtool_tunnel_info_get_req_dump_set_header_flags(struct ethtool_tunnel_info_get_req_dump *req, 383662306a36Sopenharmony_ci __u32 flags) 383762306a36Sopenharmony_ci{ 383862306a36Sopenharmony_ci req->_present.header = 1; 383962306a36Sopenharmony_ci req->header._present.flags = 1; 384062306a36Sopenharmony_ci req->header.flags = flags; 384162306a36Sopenharmony_ci} 384262306a36Sopenharmony_ci 384362306a36Sopenharmony_cistruct ethtool_tunnel_info_get_list { 384462306a36Sopenharmony_ci struct ethtool_tunnel_info_get_list *next; 384562306a36Sopenharmony_ci struct ethtool_tunnel_info_get_rsp obj __attribute__ ((aligned (8))); 384662306a36Sopenharmony_ci}; 384762306a36Sopenharmony_ci 384862306a36Sopenharmony_civoid 384962306a36Sopenharmony_ciethtool_tunnel_info_get_list_free(struct ethtool_tunnel_info_get_list *rsp); 385062306a36Sopenharmony_ci 385162306a36Sopenharmony_cistruct ethtool_tunnel_info_get_list * 385262306a36Sopenharmony_ciethtool_tunnel_info_get_dump(struct ynl_sock *ys, 385362306a36Sopenharmony_ci struct ethtool_tunnel_info_get_req_dump *req); 385462306a36Sopenharmony_ci 385562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_FEC_GET ============== */ 385662306a36Sopenharmony_ci/* ETHTOOL_MSG_FEC_GET - do */ 385762306a36Sopenharmony_cistruct ethtool_fec_get_req { 385862306a36Sopenharmony_ci struct { 385962306a36Sopenharmony_ci __u32 header:1; 386062306a36Sopenharmony_ci } _present; 386162306a36Sopenharmony_ci 386262306a36Sopenharmony_ci struct ethtool_header header; 386362306a36Sopenharmony_ci}; 386462306a36Sopenharmony_ci 386562306a36Sopenharmony_cistatic inline struct ethtool_fec_get_req *ethtool_fec_get_req_alloc(void) 386662306a36Sopenharmony_ci{ 386762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_fec_get_req)); 386862306a36Sopenharmony_ci} 386962306a36Sopenharmony_civoid ethtool_fec_get_req_free(struct ethtool_fec_get_req *req); 387062306a36Sopenharmony_ci 387162306a36Sopenharmony_cistatic inline void 387262306a36Sopenharmony_ciethtool_fec_get_req_set_header_dev_index(struct ethtool_fec_get_req *req, 387362306a36Sopenharmony_ci __u32 dev_index) 387462306a36Sopenharmony_ci{ 387562306a36Sopenharmony_ci req->_present.header = 1; 387662306a36Sopenharmony_ci req->header._present.dev_index = 1; 387762306a36Sopenharmony_ci req->header.dev_index = dev_index; 387862306a36Sopenharmony_ci} 387962306a36Sopenharmony_cistatic inline void 388062306a36Sopenharmony_ciethtool_fec_get_req_set_header_dev_name(struct ethtool_fec_get_req *req, 388162306a36Sopenharmony_ci const char *dev_name) 388262306a36Sopenharmony_ci{ 388362306a36Sopenharmony_ci free(req->header.dev_name); 388462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 388562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 388662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 388762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 388862306a36Sopenharmony_ci} 388962306a36Sopenharmony_cistatic inline void 389062306a36Sopenharmony_ciethtool_fec_get_req_set_header_flags(struct ethtool_fec_get_req *req, 389162306a36Sopenharmony_ci __u32 flags) 389262306a36Sopenharmony_ci{ 389362306a36Sopenharmony_ci req->_present.header = 1; 389462306a36Sopenharmony_ci req->header._present.flags = 1; 389562306a36Sopenharmony_ci req->header.flags = flags; 389662306a36Sopenharmony_ci} 389762306a36Sopenharmony_ci 389862306a36Sopenharmony_cistruct ethtool_fec_get_rsp { 389962306a36Sopenharmony_ci struct { 390062306a36Sopenharmony_ci __u32 header:1; 390162306a36Sopenharmony_ci __u32 modes:1; 390262306a36Sopenharmony_ci __u32 auto_:1; 390362306a36Sopenharmony_ci __u32 active:1; 390462306a36Sopenharmony_ci __u32 stats:1; 390562306a36Sopenharmony_ci } _present; 390662306a36Sopenharmony_ci 390762306a36Sopenharmony_ci struct ethtool_header header; 390862306a36Sopenharmony_ci struct ethtool_bitset modes; 390962306a36Sopenharmony_ci __u8 auto_; 391062306a36Sopenharmony_ci __u32 active; 391162306a36Sopenharmony_ci struct ethtool_fec_stat stats; 391262306a36Sopenharmony_ci}; 391362306a36Sopenharmony_ci 391462306a36Sopenharmony_civoid ethtool_fec_get_rsp_free(struct ethtool_fec_get_rsp *rsp); 391562306a36Sopenharmony_ci 391662306a36Sopenharmony_ci/* 391762306a36Sopenharmony_ci * Get FEC params. 391862306a36Sopenharmony_ci */ 391962306a36Sopenharmony_cistruct ethtool_fec_get_rsp * 392062306a36Sopenharmony_ciethtool_fec_get(struct ynl_sock *ys, struct ethtool_fec_get_req *req); 392162306a36Sopenharmony_ci 392262306a36Sopenharmony_ci/* ETHTOOL_MSG_FEC_GET - dump */ 392362306a36Sopenharmony_cistruct ethtool_fec_get_req_dump { 392462306a36Sopenharmony_ci struct { 392562306a36Sopenharmony_ci __u32 header:1; 392662306a36Sopenharmony_ci } _present; 392762306a36Sopenharmony_ci 392862306a36Sopenharmony_ci struct ethtool_header header; 392962306a36Sopenharmony_ci}; 393062306a36Sopenharmony_ci 393162306a36Sopenharmony_cistatic inline struct ethtool_fec_get_req_dump * 393262306a36Sopenharmony_ciethtool_fec_get_req_dump_alloc(void) 393362306a36Sopenharmony_ci{ 393462306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_fec_get_req_dump)); 393562306a36Sopenharmony_ci} 393662306a36Sopenharmony_civoid ethtool_fec_get_req_dump_free(struct ethtool_fec_get_req_dump *req); 393762306a36Sopenharmony_ci 393862306a36Sopenharmony_cistatic inline void 393962306a36Sopenharmony_ciethtool_fec_get_req_dump_set_header_dev_index(struct ethtool_fec_get_req_dump *req, 394062306a36Sopenharmony_ci __u32 dev_index) 394162306a36Sopenharmony_ci{ 394262306a36Sopenharmony_ci req->_present.header = 1; 394362306a36Sopenharmony_ci req->header._present.dev_index = 1; 394462306a36Sopenharmony_ci req->header.dev_index = dev_index; 394562306a36Sopenharmony_ci} 394662306a36Sopenharmony_cistatic inline void 394762306a36Sopenharmony_ciethtool_fec_get_req_dump_set_header_dev_name(struct ethtool_fec_get_req_dump *req, 394862306a36Sopenharmony_ci const char *dev_name) 394962306a36Sopenharmony_ci{ 395062306a36Sopenharmony_ci free(req->header.dev_name); 395162306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 395262306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 395362306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 395462306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 395562306a36Sopenharmony_ci} 395662306a36Sopenharmony_cistatic inline void 395762306a36Sopenharmony_ciethtool_fec_get_req_dump_set_header_flags(struct ethtool_fec_get_req_dump *req, 395862306a36Sopenharmony_ci __u32 flags) 395962306a36Sopenharmony_ci{ 396062306a36Sopenharmony_ci req->_present.header = 1; 396162306a36Sopenharmony_ci req->header._present.flags = 1; 396262306a36Sopenharmony_ci req->header.flags = flags; 396362306a36Sopenharmony_ci} 396462306a36Sopenharmony_ci 396562306a36Sopenharmony_cistruct ethtool_fec_get_list { 396662306a36Sopenharmony_ci struct ethtool_fec_get_list *next; 396762306a36Sopenharmony_ci struct ethtool_fec_get_rsp obj __attribute__ ((aligned (8))); 396862306a36Sopenharmony_ci}; 396962306a36Sopenharmony_ci 397062306a36Sopenharmony_civoid ethtool_fec_get_list_free(struct ethtool_fec_get_list *rsp); 397162306a36Sopenharmony_ci 397262306a36Sopenharmony_cistruct ethtool_fec_get_list * 397362306a36Sopenharmony_ciethtool_fec_get_dump(struct ynl_sock *ys, struct ethtool_fec_get_req_dump *req); 397462306a36Sopenharmony_ci 397562306a36Sopenharmony_ci/* ETHTOOL_MSG_FEC_GET - notify */ 397662306a36Sopenharmony_cistruct ethtool_fec_get_ntf { 397762306a36Sopenharmony_ci __u16 family; 397862306a36Sopenharmony_ci __u8 cmd; 397962306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 398062306a36Sopenharmony_ci void (*free)(struct ethtool_fec_get_ntf *ntf); 398162306a36Sopenharmony_ci struct ethtool_fec_get_rsp obj __attribute__ ((aligned (8))); 398262306a36Sopenharmony_ci}; 398362306a36Sopenharmony_ci 398462306a36Sopenharmony_civoid ethtool_fec_get_ntf_free(struct ethtool_fec_get_ntf *rsp); 398562306a36Sopenharmony_ci 398662306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_FEC_SET ============== */ 398762306a36Sopenharmony_ci/* ETHTOOL_MSG_FEC_SET - do */ 398862306a36Sopenharmony_cistruct ethtool_fec_set_req { 398962306a36Sopenharmony_ci struct { 399062306a36Sopenharmony_ci __u32 header:1; 399162306a36Sopenharmony_ci __u32 modes:1; 399262306a36Sopenharmony_ci __u32 auto_:1; 399362306a36Sopenharmony_ci __u32 active:1; 399462306a36Sopenharmony_ci __u32 stats:1; 399562306a36Sopenharmony_ci } _present; 399662306a36Sopenharmony_ci 399762306a36Sopenharmony_ci struct ethtool_header header; 399862306a36Sopenharmony_ci struct ethtool_bitset modes; 399962306a36Sopenharmony_ci __u8 auto_; 400062306a36Sopenharmony_ci __u32 active; 400162306a36Sopenharmony_ci struct ethtool_fec_stat stats; 400262306a36Sopenharmony_ci}; 400362306a36Sopenharmony_ci 400462306a36Sopenharmony_cistatic inline struct ethtool_fec_set_req *ethtool_fec_set_req_alloc(void) 400562306a36Sopenharmony_ci{ 400662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_fec_set_req)); 400762306a36Sopenharmony_ci} 400862306a36Sopenharmony_civoid ethtool_fec_set_req_free(struct ethtool_fec_set_req *req); 400962306a36Sopenharmony_ci 401062306a36Sopenharmony_cistatic inline void 401162306a36Sopenharmony_ciethtool_fec_set_req_set_header_dev_index(struct ethtool_fec_set_req *req, 401262306a36Sopenharmony_ci __u32 dev_index) 401362306a36Sopenharmony_ci{ 401462306a36Sopenharmony_ci req->_present.header = 1; 401562306a36Sopenharmony_ci req->header._present.dev_index = 1; 401662306a36Sopenharmony_ci req->header.dev_index = dev_index; 401762306a36Sopenharmony_ci} 401862306a36Sopenharmony_cistatic inline void 401962306a36Sopenharmony_ciethtool_fec_set_req_set_header_dev_name(struct ethtool_fec_set_req *req, 402062306a36Sopenharmony_ci const char *dev_name) 402162306a36Sopenharmony_ci{ 402262306a36Sopenharmony_ci free(req->header.dev_name); 402362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 402462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 402562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 402662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 402762306a36Sopenharmony_ci} 402862306a36Sopenharmony_cistatic inline void 402962306a36Sopenharmony_ciethtool_fec_set_req_set_header_flags(struct ethtool_fec_set_req *req, 403062306a36Sopenharmony_ci __u32 flags) 403162306a36Sopenharmony_ci{ 403262306a36Sopenharmony_ci req->_present.header = 1; 403362306a36Sopenharmony_ci req->header._present.flags = 1; 403462306a36Sopenharmony_ci req->header.flags = flags; 403562306a36Sopenharmony_ci} 403662306a36Sopenharmony_cistatic inline void 403762306a36Sopenharmony_ciethtool_fec_set_req_set_modes_nomask(struct ethtool_fec_set_req *req) 403862306a36Sopenharmony_ci{ 403962306a36Sopenharmony_ci req->_present.modes = 1; 404062306a36Sopenharmony_ci req->modes._present.nomask = 1; 404162306a36Sopenharmony_ci} 404262306a36Sopenharmony_cistatic inline void 404362306a36Sopenharmony_ciethtool_fec_set_req_set_modes_size(struct ethtool_fec_set_req *req, __u32 size) 404462306a36Sopenharmony_ci{ 404562306a36Sopenharmony_ci req->_present.modes = 1; 404662306a36Sopenharmony_ci req->modes._present.size = 1; 404762306a36Sopenharmony_ci req->modes.size = size; 404862306a36Sopenharmony_ci} 404962306a36Sopenharmony_cistatic inline void 405062306a36Sopenharmony_ci__ethtool_fec_set_req_set_modes_bits_bit(struct ethtool_fec_set_req *req, 405162306a36Sopenharmony_ci struct ethtool_bitset_bit *bit, 405262306a36Sopenharmony_ci unsigned int n_bit) 405362306a36Sopenharmony_ci{ 405462306a36Sopenharmony_ci free(req->modes.bits.bit); 405562306a36Sopenharmony_ci req->modes.bits.bit = bit; 405662306a36Sopenharmony_ci req->modes.bits.n_bit = n_bit; 405762306a36Sopenharmony_ci} 405862306a36Sopenharmony_cistatic inline void 405962306a36Sopenharmony_ciethtool_fec_set_req_set_auto_(struct ethtool_fec_set_req *req, __u8 auto_) 406062306a36Sopenharmony_ci{ 406162306a36Sopenharmony_ci req->_present.auto_ = 1; 406262306a36Sopenharmony_ci req->auto_ = auto_; 406362306a36Sopenharmony_ci} 406462306a36Sopenharmony_cistatic inline void 406562306a36Sopenharmony_ciethtool_fec_set_req_set_active(struct ethtool_fec_set_req *req, __u32 active) 406662306a36Sopenharmony_ci{ 406762306a36Sopenharmony_ci req->_present.active = 1; 406862306a36Sopenharmony_ci req->active = active; 406962306a36Sopenharmony_ci} 407062306a36Sopenharmony_cistatic inline void 407162306a36Sopenharmony_ciethtool_fec_set_req_set_stats_corrected(struct ethtool_fec_set_req *req, 407262306a36Sopenharmony_ci const void *corrected, size_t len) 407362306a36Sopenharmony_ci{ 407462306a36Sopenharmony_ci free(req->stats.corrected); 407562306a36Sopenharmony_ci req->stats._present.corrected_len = len; 407662306a36Sopenharmony_ci req->stats.corrected = malloc(req->stats._present.corrected_len); 407762306a36Sopenharmony_ci memcpy(req->stats.corrected, corrected, req->stats._present.corrected_len); 407862306a36Sopenharmony_ci} 407962306a36Sopenharmony_cistatic inline void 408062306a36Sopenharmony_ciethtool_fec_set_req_set_stats_uncorr(struct ethtool_fec_set_req *req, 408162306a36Sopenharmony_ci const void *uncorr, size_t len) 408262306a36Sopenharmony_ci{ 408362306a36Sopenharmony_ci free(req->stats.uncorr); 408462306a36Sopenharmony_ci req->stats._present.uncorr_len = len; 408562306a36Sopenharmony_ci req->stats.uncorr = malloc(req->stats._present.uncorr_len); 408662306a36Sopenharmony_ci memcpy(req->stats.uncorr, uncorr, req->stats._present.uncorr_len); 408762306a36Sopenharmony_ci} 408862306a36Sopenharmony_cistatic inline void 408962306a36Sopenharmony_ciethtool_fec_set_req_set_stats_corr_bits(struct ethtool_fec_set_req *req, 409062306a36Sopenharmony_ci const void *corr_bits, size_t len) 409162306a36Sopenharmony_ci{ 409262306a36Sopenharmony_ci free(req->stats.corr_bits); 409362306a36Sopenharmony_ci req->stats._present.corr_bits_len = len; 409462306a36Sopenharmony_ci req->stats.corr_bits = malloc(req->stats._present.corr_bits_len); 409562306a36Sopenharmony_ci memcpy(req->stats.corr_bits, corr_bits, req->stats._present.corr_bits_len); 409662306a36Sopenharmony_ci} 409762306a36Sopenharmony_ci 409862306a36Sopenharmony_ci/* 409962306a36Sopenharmony_ci * Set FEC params. 410062306a36Sopenharmony_ci */ 410162306a36Sopenharmony_ciint ethtool_fec_set(struct ynl_sock *ys, struct ethtool_fec_set_req *req); 410262306a36Sopenharmony_ci 410362306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_MODULE_EEPROM_GET ============== */ 410462306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_EEPROM_GET - do */ 410562306a36Sopenharmony_cistruct ethtool_module_eeprom_get_req { 410662306a36Sopenharmony_ci struct { 410762306a36Sopenharmony_ci __u32 header:1; 410862306a36Sopenharmony_ci } _present; 410962306a36Sopenharmony_ci 411062306a36Sopenharmony_ci struct ethtool_header header; 411162306a36Sopenharmony_ci}; 411262306a36Sopenharmony_ci 411362306a36Sopenharmony_cistatic inline struct ethtool_module_eeprom_get_req * 411462306a36Sopenharmony_ciethtool_module_eeprom_get_req_alloc(void) 411562306a36Sopenharmony_ci{ 411662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_module_eeprom_get_req)); 411762306a36Sopenharmony_ci} 411862306a36Sopenharmony_civoid 411962306a36Sopenharmony_ciethtool_module_eeprom_get_req_free(struct ethtool_module_eeprom_get_req *req); 412062306a36Sopenharmony_ci 412162306a36Sopenharmony_cistatic inline void 412262306a36Sopenharmony_ciethtool_module_eeprom_get_req_set_header_dev_index(struct ethtool_module_eeprom_get_req *req, 412362306a36Sopenharmony_ci __u32 dev_index) 412462306a36Sopenharmony_ci{ 412562306a36Sopenharmony_ci req->_present.header = 1; 412662306a36Sopenharmony_ci req->header._present.dev_index = 1; 412762306a36Sopenharmony_ci req->header.dev_index = dev_index; 412862306a36Sopenharmony_ci} 412962306a36Sopenharmony_cistatic inline void 413062306a36Sopenharmony_ciethtool_module_eeprom_get_req_set_header_dev_name(struct ethtool_module_eeprom_get_req *req, 413162306a36Sopenharmony_ci const char *dev_name) 413262306a36Sopenharmony_ci{ 413362306a36Sopenharmony_ci free(req->header.dev_name); 413462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 413562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 413662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 413762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 413862306a36Sopenharmony_ci} 413962306a36Sopenharmony_cistatic inline void 414062306a36Sopenharmony_ciethtool_module_eeprom_get_req_set_header_flags(struct ethtool_module_eeprom_get_req *req, 414162306a36Sopenharmony_ci __u32 flags) 414262306a36Sopenharmony_ci{ 414362306a36Sopenharmony_ci req->_present.header = 1; 414462306a36Sopenharmony_ci req->header._present.flags = 1; 414562306a36Sopenharmony_ci req->header.flags = flags; 414662306a36Sopenharmony_ci} 414762306a36Sopenharmony_ci 414862306a36Sopenharmony_cistruct ethtool_module_eeprom_get_rsp { 414962306a36Sopenharmony_ci struct { 415062306a36Sopenharmony_ci __u32 header:1; 415162306a36Sopenharmony_ci __u32 offset:1; 415262306a36Sopenharmony_ci __u32 length:1; 415362306a36Sopenharmony_ci __u32 page:1; 415462306a36Sopenharmony_ci __u32 bank:1; 415562306a36Sopenharmony_ci __u32 i2c_address:1; 415662306a36Sopenharmony_ci __u32 data_len; 415762306a36Sopenharmony_ci } _present; 415862306a36Sopenharmony_ci 415962306a36Sopenharmony_ci struct ethtool_header header; 416062306a36Sopenharmony_ci __u32 offset; 416162306a36Sopenharmony_ci __u32 length; 416262306a36Sopenharmony_ci __u8 page; 416362306a36Sopenharmony_ci __u8 bank; 416462306a36Sopenharmony_ci __u8 i2c_address; 416562306a36Sopenharmony_ci void *data; 416662306a36Sopenharmony_ci}; 416762306a36Sopenharmony_ci 416862306a36Sopenharmony_civoid 416962306a36Sopenharmony_ciethtool_module_eeprom_get_rsp_free(struct ethtool_module_eeprom_get_rsp *rsp); 417062306a36Sopenharmony_ci 417162306a36Sopenharmony_ci/* 417262306a36Sopenharmony_ci * Get module EEPROM params. 417362306a36Sopenharmony_ci */ 417462306a36Sopenharmony_cistruct ethtool_module_eeprom_get_rsp * 417562306a36Sopenharmony_ciethtool_module_eeprom_get(struct ynl_sock *ys, 417662306a36Sopenharmony_ci struct ethtool_module_eeprom_get_req *req); 417762306a36Sopenharmony_ci 417862306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_EEPROM_GET - dump */ 417962306a36Sopenharmony_cistruct ethtool_module_eeprom_get_req_dump { 418062306a36Sopenharmony_ci struct { 418162306a36Sopenharmony_ci __u32 header:1; 418262306a36Sopenharmony_ci } _present; 418362306a36Sopenharmony_ci 418462306a36Sopenharmony_ci struct ethtool_header header; 418562306a36Sopenharmony_ci}; 418662306a36Sopenharmony_ci 418762306a36Sopenharmony_cistatic inline struct ethtool_module_eeprom_get_req_dump * 418862306a36Sopenharmony_ciethtool_module_eeprom_get_req_dump_alloc(void) 418962306a36Sopenharmony_ci{ 419062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_module_eeprom_get_req_dump)); 419162306a36Sopenharmony_ci} 419262306a36Sopenharmony_civoid 419362306a36Sopenharmony_ciethtool_module_eeprom_get_req_dump_free(struct ethtool_module_eeprom_get_req_dump *req); 419462306a36Sopenharmony_ci 419562306a36Sopenharmony_cistatic inline void 419662306a36Sopenharmony_ciethtool_module_eeprom_get_req_dump_set_header_dev_index(struct ethtool_module_eeprom_get_req_dump *req, 419762306a36Sopenharmony_ci __u32 dev_index) 419862306a36Sopenharmony_ci{ 419962306a36Sopenharmony_ci req->_present.header = 1; 420062306a36Sopenharmony_ci req->header._present.dev_index = 1; 420162306a36Sopenharmony_ci req->header.dev_index = dev_index; 420262306a36Sopenharmony_ci} 420362306a36Sopenharmony_cistatic inline void 420462306a36Sopenharmony_ciethtool_module_eeprom_get_req_dump_set_header_dev_name(struct ethtool_module_eeprom_get_req_dump *req, 420562306a36Sopenharmony_ci const char *dev_name) 420662306a36Sopenharmony_ci{ 420762306a36Sopenharmony_ci free(req->header.dev_name); 420862306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 420962306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 421062306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 421162306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 421262306a36Sopenharmony_ci} 421362306a36Sopenharmony_cistatic inline void 421462306a36Sopenharmony_ciethtool_module_eeprom_get_req_dump_set_header_flags(struct ethtool_module_eeprom_get_req_dump *req, 421562306a36Sopenharmony_ci __u32 flags) 421662306a36Sopenharmony_ci{ 421762306a36Sopenharmony_ci req->_present.header = 1; 421862306a36Sopenharmony_ci req->header._present.flags = 1; 421962306a36Sopenharmony_ci req->header.flags = flags; 422062306a36Sopenharmony_ci} 422162306a36Sopenharmony_ci 422262306a36Sopenharmony_cistruct ethtool_module_eeprom_get_list { 422362306a36Sopenharmony_ci struct ethtool_module_eeprom_get_list *next; 422462306a36Sopenharmony_ci struct ethtool_module_eeprom_get_rsp obj __attribute__ ((aligned (8))); 422562306a36Sopenharmony_ci}; 422662306a36Sopenharmony_ci 422762306a36Sopenharmony_civoid 422862306a36Sopenharmony_ciethtool_module_eeprom_get_list_free(struct ethtool_module_eeprom_get_list *rsp); 422962306a36Sopenharmony_ci 423062306a36Sopenharmony_cistruct ethtool_module_eeprom_get_list * 423162306a36Sopenharmony_ciethtool_module_eeprom_get_dump(struct ynl_sock *ys, 423262306a36Sopenharmony_ci struct ethtool_module_eeprom_get_req_dump *req); 423362306a36Sopenharmony_ci 423462306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PHC_VCLOCKS_GET ============== */ 423562306a36Sopenharmony_ci/* ETHTOOL_MSG_PHC_VCLOCKS_GET - do */ 423662306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_req { 423762306a36Sopenharmony_ci struct { 423862306a36Sopenharmony_ci __u32 header:1; 423962306a36Sopenharmony_ci } _present; 424062306a36Sopenharmony_ci 424162306a36Sopenharmony_ci struct ethtool_header header; 424262306a36Sopenharmony_ci}; 424362306a36Sopenharmony_ci 424462306a36Sopenharmony_cistatic inline struct ethtool_phc_vclocks_get_req * 424562306a36Sopenharmony_ciethtool_phc_vclocks_get_req_alloc(void) 424662306a36Sopenharmony_ci{ 424762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_phc_vclocks_get_req)); 424862306a36Sopenharmony_ci} 424962306a36Sopenharmony_civoid ethtool_phc_vclocks_get_req_free(struct ethtool_phc_vclocks_get_req *req); 425062306a36Sopenharmony_ci 425162306a36Sopenharmony_cistatic inline void 425262306a36Sopenharmony_ciethtool_phc_vclocks_get_req_set_header_dev_index(struct ethtool_phc_vclocks_get_req *req, 425362306a36Sopenharmony_ci __u32 dev_index) 425462306a36Sopenharmony_ci{ 425562306a36Sopenharmony_ci req->_present.header = 1; 425662306a36Sopenharmony_ci req->header._present.dev_index = 1; 425762306a36Sopenharmony_ci req->header.dev_index = dev_index; 425862306a36Sopenharmony_ci} 425962306a36Sopenharmony_cistatic inline void 426062306a36Sopenharmony_ciethtool_phc_vclocks_get_req_set_header_dev_name(struct ethtool_phc_vclocks_get_req *req, 426162306a36Sopenharmony_ci const char *dev_name) 426262306a36Sopenharmony_ci{ 426362306a36Sopenharmony_ci free(req->header.dev_name); 426462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 426562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 426662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 426762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 426862306a36Sopenharmony_ci} 426962306a36Sopenharmony_cistatic inline void 427062306a36Sopenharmony_ciethtool_phc_vclocks_get_req_set_header_flags(struct ethtool_phc_vclocks_get_req *req, 427162306a36Sopenharmony_ci __u32 flags) 427262306a36Sopenharmony_ci{ 427362306a36Sopenharmony_ci req->_present.header = 1; 427462306a36Sopenharmony_ci req->header._present.flags = 1; 427562306a36Sopenharmony_ci req->header.flags = flags; 427662306a36Sopenharmony_ci} 427762306a36Sopenharmony_ci 427862306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_rsp { 427962306a36Sopenharmony_ci struct { 428062306a36Sopenharmony_ci __u32 header:1; 428162306a36Sopenharmony_ci __u32 num:1; 428262306a36Sopenharmony_ci } _present; 428362306a36Sopenharmony_ci 428462306a36Sopenharmony_ci struct ethtool_header header; 428562306a36Sopenharmony_ci __u32 num; 428662306a36Sopenharmony_ci}; 428762306a36Sopenharmony_ci 428862306a36Sopenharmony_civoid ethtool_phc_vclocks_get_rsp_free(struct ethtool_phc_vclocks_get_rsp *rsp); 428962306a36Sopenharmony_ci 429062306a36Sopenharmony_ci/* 429162306a36Sopenharmony_ci * Get PHC VCLOCKs. 429262306a36Sopenharmony_ci */ 429362306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_rsp * 429462306a36Sopenharmony_ciethtool_phc_vclocks_get(struct ynl_sock *ys, 429562306a36Sopenharmony_ci struct ethtool_phc_vclocks_get_req *req); 429662306a36Sopenharmony_ci 429762306a36Sopenharmony_ci/* ETHTOOL_MSG_PHC_VCLOCKS_GET - dump */ 429862306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_req_dump { 429962306a36Sopenharmony_ci struct { 430062306a36Sopenharmony_ci __u32 header:1; 430162306a36Sopenharmony_ci } _present; 430262306a36Sopenharmony_ci 430362306a36Sopenharmony_ci struct ethtool_header header; 430462306a36Sopenharmony_ci}; 430562306a36Sopenharmony_ci 430662306a36Sopenharmony_cistatic inline struct ethtool_phc_vclocks_get_req_dump * 430762306a36Sopenharmony_ciethtool_phc_vclocks_get_req_dump_alloc(void) 430862306a36Sopenharmony_ci{ 430962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_phc_vclocks_get_req_dump)); 431062306a36Sopenharmony_ci} 431162306a36Sopenharmony_civoid 431262306a36Sopenharmony_ciethtool_phc_vclocks_get_req_dump_free(struct ethtool_phc_vclocks_get_req_dump *req); 431362306a36Sopenharmony_ci 431462306a36Sopenharmony_cistatic inline void 431562306a36Sopenharmony_ciethtool_phc_vclocks_get_req_dump_set_header_dev_index(struct ethtool_phc_vclocks_get_req_dump *req, 431662306a36Sopenharmony_ci __u32 dev_index) 431762306a36Sopenharmony_ci{ 431862306a36Sopenharmony_ci req->_present.header = 1; 431962306a36Sopenharmony_ci req->header._present.dev_index = 1; 432062306a36Sopenharmony_ci req->header.dev_index = dev_index; 432162306a36Sopenharmony_ci} 432262306a36Sopenharmony_cistatic inline void 432362306a36Sopenharmony_ciethtool_phc_vclocks_get_req_dump_set_header_dev_name(struct ethtool_phc_vclocks_get_req_dump *req, 432462306a36Sopenharmony_ci const char *dev_name) 432562306a36Sopenharmony_ci{ 432662306a36Sopenharmony_ci free(req->header.dev_name); 432762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 432862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 432962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 433062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 433162306a36Sopenharmony_ci} 433262306a36Sopenharmony_cistatic inline void 433362306a36Sopenharmony_ciethtool_phc_vclocks_get_req_dump_set_header_flags(struct ethtool_phc_vclocks_get_req_dump *req, 433462306a36Sopenharmony_ci __u32 flags) 433562306a36Sopenharmony_ci{ 433662306a36Sopenharmony_ci req->_present.header = 1; 433762306a36Sopenharmony_ci req->header._present.flags = 1; 433862306a36Sopenharmony_ci req->header.flags = flags; 433962306a36Sopenharmony_ci} 434062306a36Sopenharmony_ci 434162306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_list { 434262306a36Sopenharmony_ci struct ethtool_phc_vclocks_get_list *next; 434362306a36Sopenharmony_ci struct ethtool_phc_vclocks_get_rsp obj __attribute__ ((aligned (8))); 434462306a36Sopenharmony_ci}; 434562306a36Sopenharmony_ci 434662306a36Sopenharmony_civoid 434762306a36Sopenharmony_ciethtool_phc_vclocks_get_list_free(struct ethtool_phc_vclocks_get_list *rsp); 434862306a36Sopenharmony_ci 434962306a36Sopenharmony_cistruct ethtool_phc_vclocks_get_list * 435062306a36Sopenharmony_ciethtool_phc_vclocks_get_dump(struct ynl_sock *ys, 435162306a36Sopenharmony_ci struct ethtool_phc_vclocks_get_req_dump *req); 435262306a36Sopenharmony_ci 435362306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_MODULE_GET ============== */ 435462306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_GET - do */ 435562306a36Sopenharmony_cistruct ethtool_module_get_req { 435662306a36Sopenharmony_ci struct { 435762306a36Sopenharmony_ci __u32 header:1; 435862306a36Sopenharmony_ci } _present; 435962306a36Sopenharmony_ci 436062306a36Sopenharmony_ci struct ethtool_header header; 436162306a36Sopenharmony_ci}; 436262306a36Sopenharmony_ci 436362306a36Sopenharmony_cistatic inline struct ethtool_module_get_req *ethtool_module_get_req_alloc(void) 436462306a36Sopenharmony_ci{ 436562306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_module_get_req)); 436662306a36Sopenharmony_ci} 436762306a36Sopenharmony_civoid ethtool_module_get_req_free(struct ethtool_module_get_req *req); 436862306a36Sopenharmony_ci 436962306a36Sopenharmony_cistatic inline void 437062306a36Sopenharmony_ciethtool_module_get_req_set_header_dev_index(struct ethtool_module_get_req *req, 437162306a36Sopenharmony_ci __u32 dev_index) 437262306a36Sopenharmony_ci{ 437362306a36Sopenharmony_ci req->_present.header = 1; 437462306a36Sopenharmony_ci req->header._present.dev_index = 1; 437562306a36Sopenharmony_ci req->header.dev_index = dev_index; 437662306a36Sopenharmony_ci} 437762306a36Sopenharmony_cistatic inline void 437862306a36Sopenharmony_ciethtool_module_get_req_set_header_dev_name(struct ethtool_module_get_req *req, 437962306a36Sopenharmony_ci const char *dev_name) 438062306a36Sopenharmony_ci{ 438162306a36Sopenharmony_ci free(req->header.dev_name); 438262306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 438362306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 438462306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 438562306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 438662306a36Sopenharmony_ci} 438762306a36Sopenharmony_cistatic inline void 438862306a36Sopenharmony_ciethtool_module_get_req_set_header_flags(struct ethtool_module_get_req *req, 438962306a36Sopenharmony_ci __u32 flags) 439062306a36Sopenharmony_ci{ 439162306a36Sopenharmony_ci req->_present.header = 1; 439262306a36Sopenharmony_ci req->header._present.flags = 1; 439362306a36Sopenharmony_ci req->header.flags = flags; 439462306a36Sopenharmony_ci} 439562306a36Sopenharmony_ci 439662306a36Sopenharmony_cistruct ethtool_module_get_rsp { 439762306a36Sopenharmony_ci struct { 439862306a36Sopenharmony_ci __u32 header:1; 439962306a36Sopenharmony_ci __u32 power_mode_policy:1; 440062306a36Sopenharmony_ci __u32 power_mode:1; 440162306a36Sopenharmony_ci } _present; 440262306a36Sopenharmony_ci 440362306a36Sopenharmony_ci struct ethtool_header header; 440462306a36Sopenharmony_ci __u8 power_mode_policy; 440562306a36Sopenharmony_ci __u8 power_mode; 440662306a36Sopenharmony_ci}; 440762306a36Sopenharmony_ci 440862306a36Sopenharmony_civoid ethtool_module_get_rsp_free(struct ethtool_module_get_rsp *rsp); 440962306a36Sopenharmony_ci 441062306a36Sopenharmony_ci/* 441162306a36Sopenharmony_ci * Get module params. 441262306a36Sopenharmony_ci */ 441362306a36Sopenharmony_cistruct ethtool_module_get_rsp * 441462306a36Sopenharmony_ciethtool_module_get(struct ynl_sock *ys, struct ethtool_module_get_req *req); 441562306a36Sopenharmony_ci 441662306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_GET - dump */ 441762306a36Sopenharmony_cistruct ethtool_module_get_req_dump { 441862306a36Sopenharmony_ci struct { 441962306a36Sopenharmony_ci __u32 header:1; 442062306a36Sopenharmony_ci } _present; 442162306a36Sopenharmony_ci 442262306a36Sopenharmony_ci struct ethtool_header header; 442362306a36Sopenharmony_ci}; 442462306a36Sopenharmony_ci 442562306a36Sopenharmony_cistatic inline struct ethtool_module_get_req_dump * 442662306a36Sopenharmony_ciethtool_module_get_req_dump_alloc(void) 442762306a36Sopenharmony_ci{ 442862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_module_get_req_dump)); 442962306a36Sopenharmony_ci} 443062306a36Sopenharmony_civoid ethtool_module_get_req_dump_free(struct ethtool_module_get_req_dump *req); 443162306a36Sopenharmony_ci 443262306a36Sopenharmony_cistatic inline void 443362306a36Sopenharmony_ciethtool_module_get_req_dump_set_header_dev_index(struct ethtool_module_get_req_dump *req, 443462306a36Sopenharmony_ci __u32 dev_index) 443562306a36Sopenharmony_ci{ 443662306a36Sopenharmony_ci req->_present.header = 1; 443762306a36Sopenharmony_ci req->header._present.dev_index = 1; 443862306a36Sopenharmony_ci req->header.dev_index = dev_index; 443962306a36Sopenharmony_ci} 444062306a36Sopenharmony_cistatic inline void 444162306a36Sopenharmony_ciethtool_module_get_req_dump_set_header_dev_name(struct ethtool_module_get_req_dump *req, 444262306a36Sopenharmony_ci const char *dev_name) 444362306a36Sopenharmony_ci{ 444462306a36Sopenharmony_ci free(req->header.dev_name); 444562306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 444662306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 444762306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 444862306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 444962306a36Sopenharmony_ci} 445062306a36Sopenharmony_cistatic inline void 445162306a36Sopenharmony_ciethtool_module_get_req_dump_set_header_flags(struct ethtool_module_get_req_dump *req, 445262306a36Sopenharmony_ci __u32 flags) 445362306a36Sopenharmony_ci{ 445462306a36Sopenharmony_ci req->_present.header = 1; 445562306a36Sopenharmony_ci req->header._present.flags = 1; 445662306a36Sopenharmony_ci req->header.flags = flags; 445762306a36Sopenharmony_ci} 445862306a36Sopenharmony_ci 445962306a36Sopenharmony_cistruct ethtool_module_get_list { 446062306a36Sopenharmony_ci struct ethtool_module_get_list *next; 446162306a36Sopenharmony_ci struct ethtool_module_get_rsp obj __attribute__ ((aligned (8))); 446262306a36Sopenharmony_ci}; 446362306a36Sopenharmony_ci 446462306a36Sopenharmony_civoid ethtool_module_get_list_free(struct ethtool_module_get_list *rsp); 446562306a36Sopenharmony_ci 446662306a36Sopenharmony_cistruct ethtool_module_get_list * 446762306a36Sopenharmony_ciethtool_module_get_dump(struct ynl_sock *ys, 446862306a36Sopenharmony_ci struct ethtool_module_get_req_dump *req); 446962306a36Sopenharmony_ci 447062306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_GET - notify */ 447162306a36Sopenharmony_cistruct ethtool_module_get_ntf { 447262306a36Sopenharmony_ci __u16 family; 447362306a36Sopenharmony_ci __u8 cmd; 447462306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 447562306a36Sopenharmony_ci void (*free)(struct ethtool_module_get_ntf *ntf); 447662306a36Sopenharmony_ci struct ethtool_module_get_rsp obj __attribute__ ((aligned (8))); 447762306a36Sopenharmony_ci}; 447862306a36Sopenharmony_ci 447962306a36Sopenharmony_civoid ethtool_module_get_ntf_free(struct ethtool_module_get_ntf *rsp); 448062306a36Sopenharmony_ci 448162306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_MODULE_SET ============== */ 448262306a36Sopenharmony_ci/* ETHTOOL_MSG_MODULE_SET - do */ 448362306a36Sopenharmony_cistruct ethtool_module_set_req { 448462306a36Sopenharmony_ci struct { 448562306a36Sopenharmony_ci __u32 header:1; 448662306a36Sopenharmony_ci __u32 power_mode_policy:1; 448762306a36Sopenharmony_ci __u32 power_mode:1; 448862306a36Sopenharmony_ci } _present; 448962306a36Sopenharmony_ci 449062306a36Sopenharmony_ci struct ethtool_header header; 449162306a36Sopenharmony_ci __u8 power_mode_policy; 449262306a36Sopenharmony_ci __u8 power_mode; 449362306a36Sopenharmony_ci}; 449462306a36Sopenharmony_ci 449562306a36Sopenharmony_cistatic inline struct ethtool_module_set_req *ethtool_module_set_req_alloc(void) 449662306a36Sopenharmony_ci{ 449762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_module_set_req)); 449862306a36Sopenharmony_ci} 449962306a36Sopenharmony_civoid ethtool_module_set_req_free(struct ethtool_module_set_req *req); 450062306a36Sopenharmony_ci 450162306a36Sopenharmony_cistatic inline void 450262306a36Sopenharmony_ciethtool_module_set_req_set_header_dev_index(struct ethtool_module_set_req *req, 450362306a36Sopenharmony_ci __u32 dev_index) 450462306a36Sopenharmony_ci{ 450562306a36Sopenharmony_ci req->_present.header = 1; 450662306a36Sopenharmony_ci req->header._present.dev_index = 1; 450762306a36Sopenharmony_ci req->header.dev_index = dev_index; 450862306a36Sopenharmony_ci} 450962306a36Sopenharmony_cistatic inline void 451062306a36Sopenharmony_ciethtool_module_set_req_set_header_dev_name(struct ethtool_module_set_req *req, 451162306a36Sopenharmony_ci const char *dev_name) 451262306a36Sopenharmony_ci{ 451362306a36Sopenharmony_ci free(req->header.dev_name); 451462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 451562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 451662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 451762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 451862306a36Sopenharmony_ci} 451962306a36Sopenharmony_cistatic inline void 452062306a36Sopenharmony_ciethtool_module_set_req_set_header_flags(struct ethtool_module_set_req *req, 452162306a36Sopenharmony_ci __u32 flags) 452262306a36Sopenharmony_ci{ 452362306a36Sopenharmony_ci req->_present.header = 1; 452462306a36Sopenharmony_ci req->header._present.flags = 1; 452562306a36Sopenharmony_ci req->header.flags = flags; 452662306a36Sopenharmony_ci} 452762306a36Sopenharmony_cistatic inline void 452862306a36Sopenharmony_ciethtool_module_set_req_set_power_mode_policy(struct ethtool_module_set_req *req, 452962306a36Sopenharmony_ci __u8 power_mode_policy) 453062306a36Sopenharmony_ci{ 453162306a36Sopenharmony_ci req->_present.power_mode_policy = 1; 453262306a36Sopenharmony_ci req->power_mode_policy = power_mode_policy; 453362306a36Sopenharmony_ci} 453462306a36Sopenharmony_cistatic inline void 453562306a36Sopenharmony_ciethtool_module_set_req_set_power_mode(struct ethtool_module_set_req *req, 453662306a36Sopenharmony_ci __u8 power_mode) 453762306a36Sopenharmony_ci{ 453862306a36Sopenharmony_ci req->_present.power_mode = 1; 453962306a36Sopenharmony_ci req->power_mode = power_mode; 454062306a36Sopenharmony_ci} 454162306a36Sopenharmony_ci 454262306a36Sopenharmony_ci/* 454362306a36Sopenharmony_ci * Set module params. 454462306a36Sopenharmony_ci */ 454562306a36Sopenharmony_ciint ethtool_module_set(struct ynl_sock *ys, struct ethtool_module_set_req *req); 454662306a36Sopenharmony_ci 454762306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PSE_GET ============== */ 454862306a36Sopenharmony_ci/* ETHTOOL_MSG_PSE_GET - do */ 454962306a36Sopenharmony_cistruct ethtool_pse_get_req { 455062306a36Sopenharmony_ci struct { 455162306a36Sopenharmony_ci __u32 header:1; 455262306a36Sopenharmony_ci } _present; 455362306a36Sopenharmony_ci 455462306a36Sopenharmony_ci struct ethtool_header header; 455562306a36Sopenharmony_ci}; 455662306a36Sopenharmony_ci 455762306a36Sopenharmony_cistatic inline struct ethtool_pse_get_req *ethtool_pse_get_req_alloc(void) 455862306a36Sopenharmony_ci{ 455962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pse_get_req)); 456062306a36Sopenharmony_ci} 456162306a36Sopenharmony_civoid ethtool_pse_get_req_free(struct ethtool_pse_get_req *req); 456262306a36Sopenharmony_ci 456362306a36Sopenharmony_cistatic inline void 456462306a36Sopenharmony_ciethtool_pse_get_req_set_header_dev_index(struct ethtool_pse_get_req *req, 456562306a36Sopenharmony_ci __u32 dev_index) 456662306a36Sopenharmony_ci{ 456762306a36Sopenharmony_ci req->_present.header = 1; 456862306a36Sopenharmony_ci req->header._present.dev_index = 1; 456962306a36Sopenharmony_ci req->header.dev_index = dev_index; 457062306a36Sopenharmony_ci} 457162306a36Sopenharmony_cistatic inline void 457262306a36Sopenharmony_ciethtool_pse_get_req_set_header_dev_name(struct ethtool_pse_get_req *req, 457362306a36Sopenharmony_ci const char *dev_name) 457462306a36Sopenharmony_ci{ 457562306a36Sopenharmony_ci free(req->header.dev_name); 457662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 457762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 457862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 457962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 458062306a36Sopenharmony_ci} 458162306a36Sopenharmony_cistatic inline void 458262306a36Sopenharmony_ciethtool_pse_get_req_set_header_flags(struct ethtool_pse_get_req *req, 458362306a36Sopenharmony_ci __u32 flags) 458462306a36Sopenharmony_ci{ 458562306a36Sopenharmony_ci req->_present.header = 1; 458662306a36Sopenharmony_ci req->header._present.flags = 1; 458762306a36Sopenharmony_ci req->header.flags = flags; 458862306a36Sopenharmony_ci} 458962306a36Sopenharmony_ci 459062306a36Sopenharmony_cistruct ethtool_pse_get_rsp { 459162306a36Sopenharmony_ci struct { 459262306a36Sopenharmony_ci __u32 header:1; 459362306a36Sopenharmony_ci __u32 admin_state:1; 459462306a36Sopenharmony_ci __u32 admin_control:1; 459562306a36Sopenharmony_ci __u32 pw_d_status:1; 459662306a36Sopenharmony_ci } _present; 459762306a36Sopenharmony_ci 459862306a36Sopenharmony_ci struct ethtool_header header; 459962306a36Sopenharmony_ci __u32 admin_state; 460062306a36Sopenharmony_ci __u32 admin_control; 460162306a36Sopenharmony_ci __u32 pw_d_status; 460262306a36Sopenharmony_ci}; 460362306a36Sopenharmony_ci 460462306a36Sopenharmony_civoid ethtool_pse_get_rsp_free(struct ethtool_pse_get_rsp *rsp); 460562306a36Sopenharmony_ci 460662306a36Sopenharmony_ci/* 460762306a36Sopenharmony_ci * Get Power Sourcing Equipment params. 460862306a36Sopenharmony_ci */ 460962306a36Sopenharmony_cistruct ethtool_pse_get_rsp * 461062306a36Sopenharmony_ciethtool_pse_get(struct ynl_sock *ys, struct ethtool_pse_get_req *req); 461162306a36Sopenharmony_ci 461262306a36Sopenharmony_ci/* ETHTOOL_MSG_PSE_GET - dump */ 461362306a36Sopenharmony_cistruct ethtool_pse_get_req_dump { 461462306a36Sopenharmony_ci struct { 461562306a36Sopenharmony_ci __u32 header:1; 461662306a36Sopenharmony_ci } _present; 461762306a36Sopenharmony_ci 461862306a36Sopenharmony_ci struct ethtool_header header; 461962306a36Sopenharmony_ci}; 462062306a36Sopenharmony_ci 462162306a36Sopenharmony_cistatic inline struct ethtool_pse_get_req_dump * 462262306a36Sopenharmony_ciethtool_pse_get_req_dump_alloc(void) 462362306a36Sopenharmony_ci{ 462462306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pse_get_req_dump)); 462562306a36Sopenharmony_ci} 462662306a36Sopenharmony_civoid ethtool_pse_get_req_dump_free(struct ethtool_pse_get_req_dump *req); 462762306a36Sopenharmony_ci 462862306a36Sopenharmony_cistatic inline void 462962306a36Sopenharmony_ciethtool_pse_get_req_dump_set_header_dev_index(struct ethtool_pse_get_req_dump *req, 463062306a36Sopenharmony_ci __u32 dev_index) 463162306a36Sopenharmony_ci{ 463262306a36Sopenharmony_ci req->_present.header = 1; 463362306a36Sopenharmony_ci req->header._present.dev_index = 1; 463462306a36Sopenharmony_ci req->header.dev_index = dev_index; 463562306a36Sopenharmony_ci} 463662306a36Sopenharmony_cistatic inline void 463762306a36Sopenharmony_ciethtool_pse_get_req_dump_set_header_dev_name(struct ethtool_pse_get_req_dump *req, 463862306a36Sopenharmony_ci const char *dev_name) 463962306a36Sopenharmony_ci{ 464062306a36Sopenharmony_ci free(req->header.dev_name); 464162306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 464262306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 464362306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 464462306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 464562306a36Sopenharmony_ci} 464662306a36Sopenharmony_cistatic inline void 464762306a36Sopenharmony_ciethtool_pse_get_req_dump_set_header_flags(struct ethtool_pse_get_req_dump *req, 464862306a36Sopenharmony_ci __u32 flags) 464962306a36Sopenharmony_ci{ 465062306a36Sopenharmony_ci req->_present.header = 1; 465162306a36Sopenharmony_ci req->header._present.flags = 1; 465262306a36Sopenharmony_ci req->header.flags = flags; 465362306a36Sopenharmony_ci} 465462306a36Sopenharmony_ci 465562306a36Sopenharmony_cistruct ethtool_pse_get_list { 465662306a36Sopenharmony_ci struct ethtool_pse_get_list *next; 465762306a36Sopenharmony_ci struct ethtool_pse_get_rsp obj __attribute__ ((aligned (8))); 465862306a36Sopenharmony_ci}; 465962306a36Sopenharmony_ci 466062306a36Sopenharmony_civoid ethtool_pse_get_list_free(struct ethtool_pse_get_list *rsp); 466162306a36Sopenharmony_ci 466262306a36Sopenharmony_cistruct ethtool_pse_get_list * 466362306a36Sopenharmony_ciethtool_pse_get_dump(struct ynl_sock *ys, struct ethtool_pse_get_req_dump *req); 466462306a36Sopenharmony_ci 466562306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PSE_SET ============== */ 466662306a36Sopenharmony_ci/* ETHTOOL_MSG_PSE_SET - do */ 466762306a36Sopenharmony_cistruct ethtool_pse_set_req { 466862306a36Sopenharmony_ci struct { 466962306a36Sopenharmony_ci __u32 header:1; 467062306a36Sopenharmony_ci __u32 admin_state:1; 467162306a36Sopenharmony_ci __u32 admin_control:1; 467262306a36Sopenharmony_ci __u32 pw_d_status:1; 467362306a36Sopenharmony_ci } _present; 467462306a36Sopenharmony_ci 467562306a36Sopenharmony_ci struct ethtool_header header; 467662306a36Sopenharmony_ci __u32 admin_state; 467762306a36Sopenharmony_ci __u32 admin_control; 467862306a36Sopenharmony_ci __u32 pw_d_status; 467962306a36Sopenharmony_ci}; 468062306a36Sopenharmony_ci 468162306a36Sopenharmony_cistatic inline struct ethtool_pse_set_req *ethtool_pse_set_req_alloc(void) 468262306a36Sopenharmony_ci{ 468362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_pse_set_req)); 468462306a36Sopenharmony_ci} 468562306a36Sopenharmony_civoid ethtool_pse_set_req_free(struct ethtool_pse_set_req *req); 468662306a36Sopenharmony_ci 468762306a36Sopenharmony_cistatic inline void 468862306a36Sopenharmony_ciethtool_pse_set_req_set_header_dev_index(struct ethtool_pse_set_req *req, 468962306a36Sopenharmony_ci __u32 dev_index) 469062306a36Sopenharmony_ci{ 469162306a36Sopenharmony_ci req->_present.header = 1; 469262306a36Sopenharmony_ci req->header._present.dev_index = 1; 469362306a36Sopenharmony_ci req->header.dev_index = dev_index; 469462306a36Sopenharmony_ci} 469562306a36Sopenharmony_cistatic inline void 469662306a36Sopenharmony_ciethtool_pse_set_req_set_header_dev_name(struct ethtool_pse_set_req *req, 469762306a36Sopenharmony_ci const char *dev_name) 469862306a36Sopenharmony_ci{ 469962306a36Sopenharmony_ci free(req->header.dev_name); 470062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 470162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 470262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 470362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 470462306a36Sopenharmony_ci} 470562306a36Sopenharmony_cistatic inline void 470662306a36Sopenharmony_ciethtool_pse_set_req_set_header_flags(struct ethtool_pse_set_req *req, 470762306a36Sopenharmony_ci __u32 flags) 470862306a36Sopenharmony_ci{ 470962306a36Sopenharmony_ci req->_present.header = 1; 471062306a36Sopenharmony_ci req->header._present.flags = 1; 471162306a36Sopenharmony_ci req->header.flags = flags; 471262306a36Sopenharmony_ci} 471362306a36Sopenharmony_cistatic inline void 471462306a36Sopenharmony_ciethtool_pse_set_req_set_admin_state(struct ethtool_pse_set_req *req, 471562306a36Sopenharmony_ci __u32 admin_state) 471662306a36Sopenharmony_ci{ 471762306a36Sopenharmony_ci req->_present.admin_state = 1; 471862306a36Sopenharmony_ci req->admin_state = admin_state; 471962306a36Sopenharmony_ci} 472062306a36Sopenharmony_cistatic inline void 472162306a36Sopenharmony_ciethtool_pse_set_req_set_admin_control(struct ethtool_pse_set_req *req, 472262306a36Sopenharmony_ci __u32 admin_control) 472362306a36Sopenharmony_ci{ 472462306a36Sopenharmony_ci req->_present.admin_control = 1; 472562306a36Sopenharmony_ci req->admin_control = admin_control; 472662306a36Sopenharmony_ci} 472762306a36Sopenharmony_cistatic inline void 472862306a36Sopenharmony_ciethtool_pse_set_req_set_pw_d_status(struct ethtool_pse_set_req *req, 472962306a36Sopenharmony_ci __u32 pw_d_status) 473062306a36Sopenharmony_ci{ 473162306a36Sopenharmony_ci req->_present.pw_d_status = 1; 473262306a36Sopenharmony_ci req->pw_d_status = pw_d_status; 473362306a36Sopenharmony_ci} 473462306a36Sopenharmony_ci 473562306a36Sopenharmony_ci/* 473662306a36Sopenharmony_ci * Set Power Sourcing Equipment params. 473762306a36Sopenharmony_ci */ 473862306a36Sopenharmony_ciint ethtool_pse_set(struct ynl_sock *ys, struct ethtool_pse_set_req *req); 473962306a36Sopenharmony_ci 474062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_RSS_GET ============== */ 474162306a36Sopenharmony_ci/* ETHTOOL_MSG_RSS_GET - do */ 474262306a36Sopenharmony_cistruct ethtool_rss_get_req { 474362306a36Sopenharmony_ci struct { 474462306a36Sopenharmony_ci __u32 header:1; 474562306a36Sopenharmony_ci } _present; 474662306a36Sopenharmony_ci 474762306a36Sopenharmony_ci struct ethtool_header header; 474862306a36Sopenharmony_ci}; 474962306a36Sopenharmony_ci 475062306a36Sopenharmony_cistatic inline struct ethtool_rss_get_req *ethtool_rss_get_req_alloc(void) 475162306a36Sopenharmony_ci{ 475262306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_rss_get_req)); 475362306a36Sopenharmony_ci} 475462306a36Sopenharmony_civoid ethtool_rss_get_req_free(struct ethtool_rss_get_req *req); 475562306a36Sopenharmony_ci 475662306a36Sopenharmony_cistatic inline void 475762306a36Sopenharmony_ciethtool_rss_get_req_set_header_dev_index(struct ethtool_rss_get_req *req, 475862306a36Sopenharmony_ci __u32 dev_index) 475962306a36Sopenharmony_ci{ 476062306a36Sopenharmony_ci req->_present.header = 1; 476162306a36Sopenharmony_ci req->header._present.dev_index = 1; 476262306a36Sopenharmony_ci req->header.dev_index = dev_index; 476362306a36Sopenharmony_ci} 476462306a36Sopenharmony_cistatic inline void 476562306a36Sopenharmony_ciethtool_rss_get_req_set_header_dev_name(struct ethtool_rss_get_req *req, 476662306a36Sopenharmony_ci const char *dev_name) 476762306a36Sopenharmony_ci{ 476862306a36Sopenharmony_ci free(req->header.dev_name); 476962306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 477062306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 477162306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 477262306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 477362306a36Sopenharmony_ci} 477462306a36Sopenharmony_cistatic inline void 477562306a36Sopenharmony_ciethtool_rss_get_req_set_header_flags(struct ethtool_rss_get_req *req, 477662306a36Sopenharmony_ci __u32 flags) 477762306a36Sopenharmony_ci{ 477862306a36Sopenharmony_ci req->_present.header = 1; 477962306a36Sopenharmony_ci req->header._present.flags = 1; 478062306a36Sopenharmony_ci req->header.flags = flags; 478162306a36Sopenharmony_ci} 478262306a36Sopenharmony_ci 478362306a36Sopenharmony_cistruct ethtool_rss_get_rsp { 478462306a36Sopenharmony_ci struct { 478562306a36Sopenharmony_ci __u32 header:1; 478662306a36Sopenharmony_ci __u32 context:1; 478762306a36Sopenharmony_ci __u32 hfunc:1; 478862306a36Sopenharmony_ci __u32 indir_len; 478962306a36Sopenharmony_ci __u32 hkey_len; 479062306a36Sopenharmony_ci } _present; 479162306a36Sopenharmony_ci 479262306a36Sopenharmony_ci struct ethtool_header header; 479362306a36Sopenharmony_ci __u32 context; 479462306a36Sopenharmony_ci __u32 hfunc; 479562306a36Sopenharmony_ci void *indir; 479662306a36Sopenharmony_ci void *hkey; 479762306a36Sopenharmony_ci}; 479862306a36Sopenharmony_ci 479962306a36Sopenharmony_civoid ethtool_rss_get_rsp_free(struct ethtool_rss_get_rsp *rsp); 480062306a36Sopenharmony_ci 480162306a36Sopenharmony_ci/* 480262306a36Sopenharmony_ci * Get RSS params. 480362306a36Sopenharmony_ci */ 480462306a36Sopenharmony_cistruct ethtool_rss_get_rsp * 480562306a36Sopenharmony_ciethtool_rss_get(struct ynl_sock *ys, struct ethtool_rss_get_req *req); 480662306a36Sopenharmony_ci 480762306a36Sopenharmony_ci/* ETHTOOL_MSG_RSS_GET - dump */ 480862306a36Sopenharmony_cistruct ethtool_rss_get_req_dump { 480962306a36Sopenharmony_ci struct { 481062306a36Sopenharmony_ci __u32 header:1; 481162306a36Sopenharmony_ci } _present; 481262306a36Sopenharmony_ci 481362306a36Sopenharmony_ci struct ethtool_header header; 481462306a36Sopenharmony_ci}; 481562306a36Sopenharmony_ci 481662306a36Sopenharmony_cistatic inline struct ethtool_rss_get_req_dump * 481762306a36Sopenharmony_ciethtool_rss_get_req_dump_alloc(void) 481862306a36Sopenharmony_ci{ 481962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_rss_get_req_dump)); 482062306a36Sopenharmony_ci} 482162306a36Sopenharmony_civoid ethtool_rss_get_req_dump_free(struct ethtool_rss_get_req_dump *req); 482262306a36Sopenharmony_ci 482362306a36Sopenharmony_cistatic inline void 482462306a36Sopenharmony_ciethtool_rss_get_req_dump_set_header_dev_index(struct ethtool_rss_get_req_dump *req, 482562306a36Sopenharmony_ci __u32 dev_index) 482662306a36Sopenharmony_ci{ 482762306a36Sopenharmony_ci req->_present.header = 1; 482862306a36Sopenharmony_ci req->header._present.dev_index = 1; 482962306a36Sopenharmony_ci req->header.dev_index = dev_index; 483062306a36Sopenharmony_ci} 483162306a36Sopenharmony_cistatic inline void 483262306a36Sopenharmony_ciethtool_rss_get_req_dump_set_header_dev_name(struct ethtool_rss_get_req_dump *req, 483362306a36Sopenharmony_ci const char *dev_name) 483462306a36Sopenharmony_ci{ 483562306a36Sopenharmony_ci free(req->header.dev_name); 483662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 483762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 483862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 483962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 484062306a36Sopenharmony_ci} 484162306a36Sopenharmony_cistatic inline void 484262306a36Sopenharmony_ciethtool_rss_get_req_dump_set_header_flags(struct ethtool_rss_get_req_dump *req, 484362306a36Sopenharmony_ci __u32 flags) 484462306a36Sopenharmony_ci{ 484562306a36Sopenharmony_ci req->_present.header = 1; 484662306a36Sopenharmony_ci req->header._present.flags = 1; 484762306a36Sopenharmony_ci req->header.flags = flags; 484862306a36Sopenharmony_ci} 484962306a36Sopenharmony_ci 485062306a36Sopenharmony_cistruct ethtool_rss_get_list { 485162306a36Sopenharmony_ci struct ethtool_rss_get_list *next; 485262306a36Sopenharmony_ci struct ethtool_rss_get_rsp obj __attribute__ ((aligned (8))); 485362306a36Sopenharmony_ci}; 485462306a36Sopenharmony_ci 485562306a36Sopenharmony_civoid ethtool_rss_get_list_free(struct ethtool_rss_get_list *rsp); 485662306a36Sopenharmony_ci 485762306a36Sopenharmony_cistruct ethtool_rss_get_list * 485862306a36Sopenharmony_ciethtool_rss_get_dump(struct ynl_sock *ys, struct ethtool_rss_get_req_dump *req); 485962306a36Sopenharmony_ci 486062306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PLCA_GET_CFG ============== */ 486162306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_GET_CFG - do */ 486262306a36Sopenharmony_cistruct ethtool_plca_get_cfg_req { 486362306a36Sopenharmony_ci struct { 486462306a36Sopenharmony_ci __u32 header:1; 486562306a36Sopenharmony_ci } _present; 486662306a36Sopenharmony_ci 486762306a36Sopenharmony_ci struct ethtool_header header; 486862306a36Sopenharmony_ci}; 486962306a36Sopenharmony_ci 487062306a36Sopenharmony_cistatic inline struct ethtool_plca_get_cfg_req * 487162306a36Sopenharmony_ciethtool_plca_get_cfg_req_alloc(void) 487262306a36Sopenharmony_ci{ 487362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_plca_get_cfg_req)); 487462306a36Sopenharmony_ci} 487562306a36Sopenharmony_civoid ethtool_plca_get_cfg_req_free(struct ethtool_plca_get_cfg_req *req); 487662306a36Sopenharmony_ci 487762306a36Sopenharmony_cistatic inline void 487862306a36Sopenharmony_ciethtool_plca_get_cfg_req_set_header_dev_index(struct ethtool_plca_get_cfg_req *req, 487962306a36Sopenharmony_ci __u32 dev_index) 488062306a36Sopenharmony_ci{ 488162306a36Sopenharmony_ci req->_present.header = 1; 488262306a36Sopenharmony_ci req->header._present.dev_index = 1; 488362306a36Sopenharmony_ci req->header.dev_index = dev_index; 488462306a36Sopenharmony_ci} 488562306a36Sopenharmony_cistatic inline void 488662306a36Sopenharmony_ciethtool_plca_get_cfg_req_set_header_dev_name(struct ethtool_plca_get_cfg_req *req, 488762306a36Sopenharmony_ci const char *dev_name) 488862306a36Sopenharmony_ci{ 488962306a36Sopenharmony_ci free(req->header.dev_name); 489062306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 489162306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 489262306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 489362306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 489462306a36Sopenharmony_ci} 489562306a36Sopenharmony_cistatic inline void 489662306a36Sopenharmony_ciethtool_plca_get_cfg_req_set_header_flags(struct ethtool_plca_get_cfg_req *req, 489762306a36Sopenharmony_ci __u32 flags) 489862306a36Sopenharmony_ci{ 489962306a36Sopenharmony_ci req->_present.header = 1; 490062306a36Sopenharmony_ci req->header._present.flags = 1; 490162306a36Sopenharmony_ci req->header.flags = flags; 490262306a36Sopenharmony_ci} 490362306a36Sopenharmony_ci 490462306a36Sopenharmony_cistruct ethtool_plca_get_cfg_rsp { 490562306a36Sopenharmony_ci struct { 490662306a36Sopenharmony_ci __u32 header:1; 490762306a36Sopenharmony_ci __u32 version:1; 490862306a36Sopenharmony_ci __u32 enabled:1; 490962306a36Sopenharmony_ci __u32 status:1; 491062306a36Sopenharmony_ci __u32 node_cnt:1; 491162306a36Sopenharmony_ci __u32 node_id:1; 491262306a36Sopenharmony_ci __u32 to_tmr:1; 491362306a36Sopenharmony_ci __u32 burst_cnt:1; 491462306a36Sopenharmony_ci __u32 burst_tmr:1; 491562306a36Sopenharmony_ci } _present; 491662306a36Sopenharmony_ci 491762306a36Sopenharmony_ci struct ethtool_header header; 491862306a36Sopenharmony_ci __u16 version; 491962306a36Sopenharmony_ci __u8 enabled; 492062306a36Sopenharmony_ci __u8 status; 492162306a36Sopenharmony_ci __u32 node_cnt; 492262306a36Sopenharmony_ci __u32 node_id; 492362306a36Sopenharmony_ci __u32 to_tmr; 492462306a36Sopenharmony_ci __u32 burst_cnt; 492562306a36Sopenharmony_ci __u32 burst_tmr; 492662306a36Sopenharmony_ci}; 492762306a36Sopenharmony_ci 492862306a36Sopenharmony_civoid ethtool_plca_get_cfg_rsp_free(struct ethtool_plca_get_cfg_rsp *rsp); 492962306a36Sopenharmony_ci 493062306a36Sopenharmony_ci/* 493162306a36Sopenharmony_ci * Get PLCA params. 493262306a36Sopenharmony_ci */ 493362306a36Sopenharmony_cistruct ethtool_plca_get_cfg_rsp * 493462306a36Sopenharmony_ciethtool_plca_get_cfg(struct ynl_sock *ys, struct ethtool_plca_get_cfg_req *req); 493562306a36Sopenharmony_ci 493662306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_GET_CFG - dump */ 493762306a36Sopenharmony_cistruct ethtool_plca_get_cfg_req_dump { 493862306a36Sopenharmony_ci struct { 493962306a36Sopenharmony_ci __u32 header:1; 494062306a36Sopenharmony_ci } _present; 494162306a36Sopenharmony_ci 494262306a36Sopenharmony_ci struct ethtool_header header; 494362306a36Sopenharmony_ci}; 494462306a36Sopenharmony_ci 494562306a36Sopenharmony_cistatic inline struct ethtool_plca_get_cfg_req_dump * 494662306a36Sopenharmony_ciethtool_plca_get_cfg_req_dump_alloc(void) 494762306a36Sopenharmony_ci{ 494862306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_plca_get_cfg_req_dump)); 494962306a36Sopenharmony_ci} 495062306a36Sopenharmony_civoid 495162306a36Sopenharmony_ciethtool_plca_get_cfg_req_dump_free(struct ethtool_plca_get_cfg_req_dump *req); 495262306a36Sopenharmony_ci 495362306a36Sopenharmony_cistatic inline void 495462306a36Sopenharmony_ciethtool_plca_get_cfg_req_dump_set_header_dev_index(struct ethtool_plca_get_cfg_req_dump *req, 495562306a36Sopenharmony_ci __u32 dev_index) 495662306a36Sopenharmony_ci{ 495762306a36Sopenharmony_ci req->_present.header = 1; 495862306a36Sopenharmony_ci req->header._present.dev_index = 1; 495962306a36Sopenharmony_ci req->header.dev_index = dev_index; 496062306a36Sopenharmony_ci} 496162306a36Sopenharmony_cistatic inline void 496262306a36Sopenharmony_ciethtool_plca_get_cfg_req_dump_set_header_dev_name(struct ethtool_plca_get_cfg_req_dump *req, 496362306a36Sopenharmony_ci const char *dev_name) 496462306a36Sopenharmony_ci{ 496562306a36Sopenharmony_ci free(req->header.dev_name); 496662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 496762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 496862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 496962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 497062306a36Sopenharmony_ci} 497162306a36Sopenharmony_cistatic inline void 497262306a36Sopenharmony_ciethtool_plca_get_cfg_req_dump_set_header_flags(struct ethtool_plca_get_cfg_req_dump *req, 497362306a36Sopenharmony_ci __u32 flags) 497462306a36Sopenharmony_ci{ 497562306a36Sopenharmony_ci req->_present.header = 1; 497662306a36Sopenharmony_ci req->header._present.flags = 1; 497762306a36Sopenharmony_ci req->header.flags = flags; 497862306a36Sopenharmony_ci} 497962306a36Sopenharmony_ci 498062306a36Sopenharmony_cistruct ethtool_plca_get_cfg_list { 498162306a36Sopenharmony_ci struct ethtool_plca_get_cfg_list *next; 498262306a36Sopenharmony_ci struct ethtool_plca_get_cfg_rsp obj __attribute__ ((aligned (8))); 498362306a36Sopenharmony_ci}; 498462306a36Sopenharmony_ci 498562306a36Sopenharmony_civoid ethtool_plca_get_cfg_list_free(struct ethtool_plca_get_cfg_list *rsp); 498662306a36Sopenharmony_ci 498762306a36Sopenharmony_cistruct ethtool_plca_get_cfg_list * 498862306a36Sopenharmony_ciethtool_plca_get_cfg_dump(struct ynl_sock *ys, 498962306a36Sopenharmony_ci struct ethtool_plca_get_cfg_req_dump *req); 499062306a36Sopenharmony_ci 499162306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_GET_CFG - notify */ 499262306a36Sopenharmony_cistruct ethtool_plca_get_cfg_ntf { 499362306a36Sopenharmony_ci __u16 family; 499462306a36Sopenharmony_ci __u8 cmd; 499562306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 499662306a36Sopenharmony_ci void (*free)(struct ethtool_plca_get_cfg_ntf *ntf); 499762306a36Sopenharmony_ci struct ethtool_plca_get_cfg_rsp obj __attribute__ ((aligned (8))); 499862306a36Sopenharmony_ci}; 499962306a36Sopenharmony_ci 500062306a36Sopenharmony_civoid ethtool_plca_get_cfg_ntf_free(struct ethtool_plca_get_cfg_ntf *rsp); 500162306a36Sopenharmony_ci 500262306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PLCA_SET_CFG ============== */ 500362306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_SET_CFG - do */ 500462306a36Sopenharmony_cistruct ethtool_plca_set_cfg_req { 500562306a36Sopenharmony_ci struct { 500662306a36Sopenharmony_ci __u32 header:1; 500762306a36Sopenharmony_ci __u32 version:1; 500862306a36Sopenharmony_ci __u32 enabled:1; 500962306a36Sopenharmony_ci __u32 status:1; 501062306a36Sopenharmony_ci __u32 node_cnt:1; 501162306a36Sopenharmony_ci __u32 node_id:1; 501262306a36Sopenharmony_ci __u32 to_tmr:1; 501362306a36Sopenharmony_ci __u32 burst_cnt:1; 501462306a36Sopenharmony_ci __u32 burst_tmr:1; 501562306a36Sopenharmony_ci } _present; 501662306a36Sopenharmony_ci 501762306a36Sopenharmony_ci struct ethtool_header header; 501862306a36Sopenharmony_ci __u16 version; 501962306a36Sopenharmony_ci __u8 enabled; 502062306a36Sopenharmony_ci __u8 status; 502162306a36Sopenharmony_ci __u32 node_cnt; 502262306a36Sopenharmony_ci __u32 node_id; 502362306a36Sopenharmony_ci __u32 to_tmr; 502462306a36Sopenharmony_ci __u32 burst_cnt; 502562306a36Sopenharmony_ci __u32 burst_tmr; 502662306a36Sopenharmony_ci}; 502762306a36Sopenharmony_ci 502862306a36Sopenharmony_cistatic inline struct ethtool_plca_set_cfg_req * 502962306a36Sopenharmony_ciethtool_plca_set_cfg_req_alloc(void) 503062306a36Sopenharmony_ci{ 503162306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_plca_set_cfg_req)); 503262306a36Sopenharmony_ci} 503362306a36Sopenharmony_civoid ethtool_plca_set_cfg_req_free(struct ethtool_plca_set_cfg_req *req); 503462306a36Sopenharmony_ci 503562306a36Sopenharmony_cistatic inline void 503662306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_header_dev_index(struct ethtool_plca_set_cfg_req *req, 503762306a36Sopenharmony_ci __u32 dev_index) 503862306a36Sopenharmony_ci{ 503962306a36Sopenharmony_ci req->_present.header = 1; 504062306a36Sopenharmony_ci req->header._present.dev_index = 1; 504162306a36Sopenharmony_ci req->header.dev_index = dev_index; 504262306a36Sopenharmony_ci} 504362306a36Sopenharmony_cistatic inline void 504462306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_header_dev_name(struct ethtool_plca_set_cfg_req *req, 504562306a36Sopenharmony_ci const char *dev_name) 504662306a36Sopenharmony_ci{ 504762306a36Sopenharmony_ci free(req->header.dev_name); 504862306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 504962306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 505062306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 505162306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 505262306a36Sopenharmony_ci} 505362306a36Sopenharmony_cistatic inline void 505462306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_header_flags(struct ethtool_plca_set_cfg_req *req, 505562306a36Sopenharmony_ci __u32 flags) 505662306a36Sopenharmony_ci{ 505762306a36Sopenharmony_ci req->_present.header = 1; 505862306a36Sopenharmony_ci req->header._present.flags = 1; 505962306a36Sopenharmony_ci req->header.flags = flags; 506062306a36Sopenharmony_ci} 506162306a36Sopenharmony_cistatic inline void 506262306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_version(struct ethtool_plca_set_cfg_req *req, 506362306a36Sopenharmony_ci __u16 version) 506462306a36Sopenharmony_ci{ 506562306a36Sopenharmony_ci req->_present.version = 1; 506662306a36Sopenharmony_ci req->version = version; 506762306a36Sopenharmony_ci} 506862306a36Sopenharmony_cistatic inline void 506962306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_enabled(struct ethtool_plca_set_cfg_req *req, 507062306a36Sopenharmony_ci __u8 enabled) 507162306a36Sopenharmony_ci{ 507262306a36Sopenharmony_ci req->_present.enabled = 1; 507362306a36Sopenharmony_ci req->enabled = enabled; 507462306a36Sopenharmony_ci} 507562306a36Sopenharmony_cistatic inline void 507662306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_status(struct ethtool_plca_set_cfg_req *req, 507762306a36Sopenharmony_ci __u8 status) 507862306a36Sopenharmony_ci{ 507962306a36Sopenharmony_ci req->_present.status = 1; 508062306a36Sopenharmony_ci req->status = status; 508162306a36Sopenharmony_ci} 508262306a36Sopenharmony_cistatic inline void 508362306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_node_cnt(struct ethtool_plca_set_cfg_req *req, 508462306a36Sopenharmony_ci __u32 node_cnt) 508562306a36Sopenharmony_ci{ 508662306a36Sopenharmony_ci req->_present.node_cnt = 1; 508762306a36Sopenharmony_ci req->node_cnt = node_cnt; 508862306a36Sopenharmony_ci} 508962306a36Sopenharmony_cistatic inline void 509062306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_node_id(struct ethtool_plca_set_cfg_req *req, 509162306a36Sopenharmony_ci __u32 node_id) 509262306a36Sopenharmony_ci{ 509362306a36Sopenharmony_ci req->_present.node_id = 1; 509462306a36Sopenharmony_ci req->node_id = node_id; 509562306a36Sopenharmony_ci} 509662306a36Sopenharmony_cistatic inline void 509762306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_to_tmr(struct ethtool_plca_set_cfg_req *req, 509862306a36Sopenharmony_ci __u32 to_tmr) 509962306a36Sopenharmony_ci{ 510062306a36Sopenharmony_ci req->_present.to_tmr = 1; 510162306a36Sopenharmony_ci req->to_tmr = to_tmr; 510262306a36Sopenharmony_ci} 510362306a36Sopenharmony_cistatic inline void 510462306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_burst_cnt(struct ethtool_plca_set_cfg_req *req, 510562306a36Sopenharmony_ci __u32 burst_cnt) 510662306a36Sopenharmony_ci{ 510762306a36Sopenharmony_ci req->_present.burst_cnt = 1; 510862306a36Sopenharmony_ci req->burst_cnt = burst_cnt; 510962306a36Sopenharmony_ci} 511062306a36Sopenharmony_cistatic inline void 511162306a36Sopenharmony_ciethtool_plca_set_cfg_req_set_burst_tmr(struct ethtool_plca_set_cfg_req *req, 511262306a36Sopenharmony_ci __u32 burst_tmr) 511362306a36Sopenharmony_ci{ 511462306a36Sopenharmony_ci req->_present.burst_tmr = 1; 511562306a36Sopenharmony_ci req->burst_tmr = burst_tmr; 511662306a36Sopenharmony_ci} 511762306a36Sopenharmony_ci 511862306a36Sopenharmony_ci/* 511962306a36Sopenharmony_ci * Set PLCA params. 512062306a36Sopenharmony_ci */ 512162306a36Sopenharmony_ciint ethtool_plca_set_cfg(struct ynl_sock *ys, 512262306a36Sopenharmony_ci struct ethtool_plca_set_cfg_req *req); 512362306a36Sopenharmony_ci 512462306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_PLCA_GET_STATUS ============== */ 512562306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_GET_STATUS - do */ 512662306a36Sopenharmony_cistruct ethtool_plca_get_status_req { 512762306a36Sopenharmony_ci struct { 512862306a36Sopenharmony_ci __u32 header:1; 512962306a36Sopenharmony_ci } _present; 513062306a36Sopenharmony_ci 513162306a36Sopenharmony_ci struct ethtool_header header; 513262306a36Sopenharmony_ci}; 513362306a36Sopenharmony_ci 513462306a36Sopenharmony_cistatic inline struct ethtool_plca_get_status_req * 513562306a36Sopenharmony_ciethtool_plca_get_status_req_alloc(void) 513662306a36Sopenharmony_ci{ 513762306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_plca_get_status_req)); 513862306a36Sopenharmony_ci} 513962306a36Sopenharmony_civoid ethtool_plca_get_status_req_free(struct ethtool_plca_get_status_req *req); 514062306a36Sopenharmony_ci 514162306a36Sopenharmony_cistatic inline void 514262306a36Sopenharmony_ciethtool_plca_get_status_req_set_header_dev_index(struct ethtool_plca_get_status_req *req, 514362306a36Sopenharmony_ci __u32 dev_index) 514462306a36Sopenharmony_ci{ 514562306a36Sopenharmony_ci req->_present.header = 1; 514662306a36Sopenharmony_ci req->header._present.dev_index = 1; 514762306a36Sopenharmony_ci req->header.dev_index = dev_index; 514862306a36Sopenharmony_ci} 514962306a36Sopenharmony_cistatic inline void 515062306a36Sopenharmony_ciethtool_plca_get_status_req_set_header_dev_name(struct ethtool_plca_get_status_req *req, 515162306a36Sopenharmony_ci const char *dev_name) 515262306a36Sopenharmony_ci{ 515362306a36Sopenharmony_ci free(req->header.dev_name); 515462306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 515562306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 515662306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 515762306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 515862306a36Sopenharmony_ci} 515962306a36Sopenharmony_cistatic inline void 516062306a36Sopenharmony_ciethtool_plca_get_status_req_set_header_flags(struct ethtool_plca_get_status_req *req, 516162306a36Sopenharmony_ci __u32 flags) 516262306a36Sopenharmony_ci{ 516362306a36Sopenharmony_ci req->_present.header = 1; 516462306a36Sopenharmony_ci req->header._present.flags = 1; 516562306a36Sopenharmony_ci req->header.flags = flags; 516662306a36Sopenharmony_ci} 516762306a36Sopenharmony_ci 516862306a36Sopenharmony_cistruct ethtool_plca_get_status_rsp { 516962306a36Sopenharmony_ci struct { 517062306a36Sopenharmony_ci __u32 header:1; 517162306a36Sopenharmony_ci __u32 version:1; 517262306a36Sopenharmony_ci __u32 enabled:1; 517362306a36Sopenharmony_ci __u32 status:1; 517462306a36Sopenharmony_ci __u32 node_cnt:1; 517562306a36Sopenharmony_ci __u32 node_id:1; 517662306a36Sopenharmony_ci __u32 to_tmr:1; 517762306a36Sopenharmony_ci __u32 burst_cnt:1; 517862306a36Sopenharmony_ci __u32 burst_tmr:1; 517962306a36Sopenharmony_ci } _present; 518062306a36Sopenharmony_ci 518162306a36Sopenharmony_ci struct ethtool_header header; 518262306a36Sopenharmony_ci __u16 version; 518362306a36Sopenharmony_ci __u8 enabled; 518462306a36Sopenharmony_ci __u8 status; 518562306a36Sopenharmony_ci __u32 node_cnt; 518662306a36Sopenharmony_ci __u32 node_id; 518762306a36Sopenharmony_ci __u32 to_tmr; 518862306a36Sopenharmony_ci __u32 burst_cnt; 518962306a36Sopenharmony_ci __u32 burst_tmr; 519062306a36Sopenharmony_ci}; 519162306a36Sopenharmony_ci 519262306a36Sopenharmony_civoid ethtool_plca_get_status_rsp_free(struct ethtool_plca_get_status_rsp *rsp); 519362306a36Sopenharmony_ci 519462306a36Sopenharmony_ci/* 519562306a36Sopenharmony_ci * Get PLCA status params. 519662306a36Sopenharmony_ci */ 519762306a36Sopenharmony_cistruct ethtool_plca_get_status_rsp * 519862306a36Sopenharmony_ciethtool_plca_get_status(struct ynl_sock *ys, 519962306a36Sopenharmony_ci struct ethtool_plca_get_status_req *req); 520062306a36Sopenharmony_ci 520162306a36Sopenharmony_ci/* ETHTOOL_MSG_PLCA_GET_STATUS - dump */ 520262306a36Sopenharmony_cistruct ethtool_plca_get_status_req_dump { 520362306a36Sopenharmony_ci struct { 520462306a36Sopenharmony_ci __u32 header:1; 520562306a36Sopenharmony_ci } _present; 520662306a36Sopenharmony_ci 520762306a36Sopenharmony_ci struct ethtool_header header; 520862306a36Sopenharmony_ci}; 520962306a36Sopenharmony_ci 521062306a36Sopenharmony_cistatic inline struct ethtool_plca_get_status_req_dump * 521162306a36Sopenharmony_ciethtool_plca_get_status_req_dump_alloc(void) 521262306a36Sopenharmony_ci{ 521362306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_plca_get_status_req_dump)); 521462306a36Sopenharmony_ci} 521562306a36Sopenharmony_civoid 521662306a36Sopenharmony_ciethtool_plca_get_status_req_dump_free(struct ethtool_plca_get_status_req_dump *req); 521762306a36Sopenharmony_ci 521862306a36Sopenharmony_cistatic inline void 521962306a36Sopenharmony_ciethtool_plca_get_status_req_dump_set_header_dev_index(struct ethtool_plca_get_status_req_dump *req, 522062306a36Sopenharmony_ci __u32 dev_index) 522162306a36Sopenharmony_ci{ 522262306a36Sopenharmony_ci req->_present.header = 1; 522362306a36Sopenharmony_ci req->header._present.dev_index = 1; 522462306a36Sopenharmony_ci req->header.dev_index = dev_index; 522562306a36Sopenharmony_ci} 522662306a36Sopenharmony_cistatic inline void 522762306a36Sopenharmony_ciethtool_plca_get_status_req_dump_set_header_dev_name(struct ethtool_plca_get_status_req_dump *req, 522862306a36Sopenharmony_ci const char *dev_name) 522962306a36Sopenharmony_ci{ 523062306a36Sopenharmony_ci free(req->header.dev_name); 523162306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 523262306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 523362306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 523462306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 523562306a36Sopenharmony_ci} 523662306a36Sopenharmony_cistatic inline void 523762306a36Sopenharmony_ciethtool_plca_get_status_req_dump_set_header_flags(struct ethtool_plca_get_status_req_dump *req, 523862306a36Sopenharmony_ci __u32 flags) 523962306a36Sopenharmony_ci{ 524062306a36Sopenharmony_ci req->_present.header = 1; 524162306a36Sopenharmony_ci req->header._present.flags = 1; 524262306a36Sopenharmony_ci req->header.flags = flags; 524362306a36Sopenharmony_ci} 524462306a36Sopenharmony_ci 524562306a36Sopenharmony_cistruct ethtool_plca_get_status_list { 524662306a36Sopenharmony_ci struct ethtool_plca_get_status_list *next; 524762306a36Sopenharmony_ci struct ethtool_plca_get_status_rsp obj __attribute__ ((aligned (8))); 524862306a36Sopenharmony_ci}; 524962306a36Sopenharmony_ci 525062306a36Sopenharmony_civoid 525162306a36Sopenharmony_ciethtool_plca_get_status_list_free(struct ethtool_plca_get_status_list *rsp); 525262306a36Sopenharmony_ci 525362306a36Sopenharmony_cistruct ethtool_plca_get_status_list * 525462306a36Sopenharmony_ciethtool_plca_get_status_dump(struct ynl_sock *ys, 525562306a36Sopenharmony_ci struct ethtool_plca_get_status_req_dump *req); 525662306a36Sopenharmony_ci 525762306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_MM_GET ============== */ 525862306a36Sopenharmony_ci/* ETHTOOL_MSG_MM_GET - do */ 525962306a36Sopenharmony_cistruct ethtool_mm_get_req { 526062306a36Sopenharmony_ci struct { 526162306a36Sopenharmony_ci __u32 header:1; 526262306a36Sopenharmony_ci } _present; 526362306a36Sopenharmony_ci 526462306a36Sopenharmony_ci struct ethtool_header header; 526562306a36Sopenharmony_ci}; 526662306a36Sopenharmony_ci 526762306a36Sopenharmony_cistatic inline struct ethtool_mm_get_req *ethtool_mm_get_req_alloc(void) 526862306a36Sopenharmony_ci{ 526962306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_mm_get_req)); 527062306a36Sopenharmony_ci} 527162306a36Sopenharmony_civoid ethtool_mm_get_req_free(struct ethtool_mm_get_req *req); 527262306a36Sopenharmony_ci 527362306a36Sopenharmony_cistatic inline void 527462306a36Sopenharmony_ciethtool_mm_get_req_set_header_dev_index(struct ethtool_mm_get_req *req, 527562306a36Sopenharmony_ci __u32 dev_index) 527662306a36Sopenharmony_ci{ 527762306a36Sopenharmony_ci req->_present.header = 1; 527862306a36Sopenharmony_ci req->header._present.dev_index = 1; 527962306a36Sopenharmony_ci req->header.dev_index = dev_index; 528062306a36Sopenharmony_ci} 528162306a36Sopenharmony_cistatic inline void 528262306a36Sopenharmony_ciethtool_mm_get_req_set_header_dev_name(struct ethtool_mm_get_req *req, 528362306a36Sopenharmony_ci const char *dev_name) 528462306a36Sopenharmony_ci{ 528562306a36Sopenharmony_ci free(req->header.dev_name); 528662306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 528762306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 528862306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 528962306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 529062306a36Sopenharmony_ci} 529162306a36Sopenharmony_cistatic inline void 529262306a36Sopenharmony_ciethtool_mm_get_req_set_header_flags(struct ethtool_mm_get_req *req, 529362306a36Sopenharmony_ci __u32 flags) 529462306a36Sopenharmony_ci{ 529562306a36Sopenharmony_ci req->_present.header = 1; 529662306a36Sopenharmony_ci req->header._present.flags = 1; 529762306a36Sopenharmony_ci req->header.flags = flags; 529862306a36Sopenharmony_ci} 529962306a36Sopenharmony_ci 530062306a36Sopenharmony_cistruct ethtool_mm_get_rsp { 530162306a36Sopenharmony_ci struct { 530262306a36Sopenharmony_ci __u32 header:1; 530362306a36Sopenharmony_ci __u32 pmac_enabled:1; 530462306a36Sopenharmony_ci __u32 tx_enabled:1; 530562306a36Sopenharmony_ci __u32 tx_active:1; 530662306a36Sopenharmony_ci __u32 tx_min_frag_size:1; 530762306a36Sopenharmony_ci __u32 rx_min_frag_size:1; 530862306a36Sopenharmony_ci __u32 verify_enabled:1; 530962306a36Sopenharmony_ci __u32 verify_time:1; 531062306a36Sopenharmony_ci __u32 max_verify_time:1; 531162306a36Sopenharmony_ci __u32 stats:1; 531262306a36Sopenharmony_ci } _present; 531362306a36Sopenharmony_ci 531462306a36Sopenharmony_ci struct ethtool_header header; 531562306a36Sopenharmony_ci __u8 pmac_enabled; 531662306a36Sopenharmony_ci __u8 tx_enabled; 531762306a36Sopenharmony_ci __u8 tx_active; 531862306a36Sopenharmony_ci __u32 tx_min_frag_size; 531962306a36Sopenharmony_ci __u32 rx_min_frag_size; 532062306a36Sopenharmony_ci __u8 verify_enabled; 532162306a36Sopenharmony_ci __u32 verify_time; 532262306a36Sopenharmony_ci __u32 max_verify_time; 532362306a36Sopenharmony_ci struct ethtool_mm_stat stats; 532462306a36Sopenharmony_ci}; 532562306a36Sopenharmony_ci 532662306a36Sopenharmony_civoid ethtool_mm_get_rsp_free(struct ethtool_mm_get_rsp *rsp); 532762306a36Sopenharmony_ci 532862306a36Sopenharmony_ci/* 532962306a36Sopenharmony_ci * Get MAC Merge configuration and state 533062306a36Sopenharmony_ci */ 533162306a36Sopenharmony_cistruct ethtool_mm_get_rsp * 533262306a36Sopenharmony_ciethtool_mm_get(struct ynl_sock *ys, struct ethtool_mm_get_req *req); 533362306a36Sopenharmony_ci 533462306a36Sopenharmony_ci/* ETHTOOL_MSG_MM_GET - dump */ 533562306a36Sopenharmony_cistruct ethtool_mm_get_req_dump { 533662306a36Sopenharmony_ci struct { 533762306a36Sopenharmony_ci __u32 header:1; 533862306a36Sopenharmony_ci } _present; 533962306a36Sopenharmony_ci 534062306a36Sopenharmony_ci struct ethtool_header header; 534162306a36Sopenharmony_ci}; 534262306a36Sopenharmony_ci 534362306a36Sopenharmony_cistatic inline struct ethtool_mm_get_req_dump * 534462306a36Sopenharmony_ciethtool_mm_get_req_dump_alloc(void) 534562306a36Sopenharmony_ci{ 534662306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_mm_get_req_dump)); 534762306a36Sopenharmony_ci} 534862306a36Sopenharmony_civoid ethtool_mm_get_req_dump_free(struct ethtool_mm_get_req_dump *req); 534962306a36Sopenharmony_ci 535062306a36Sopenharmony_cistatic inline void 535162306a36Sopenharmony_ciethtool_mm_get_req_dump_set_header_dev_index(struct ethtool_mm_get_req_dump *req, 535262306a36Sopenharmony_ci __u32 dev_index) 535362306a36Sopenharmony_ci{ 535462306a36Sopenharmony_ci req->_present.header = 1; 535562306a36Sopenharmony_ci req->header._present.dev_index = 1; 535662306a36Sopenharmony_ci req->header.dev_index = dev_index; 535762306a36Sopenharmony_ci} 535862306a36Sopenharmony_cistatic inline void 535962306a36Sopenharmony_ciethtool_mm_get_req_dump_set_header_dev_name(struct ethtool_mm_get_req_dump *req, 536062306a36Sopenharmony_ci const char *dev_name) 536162306a36Sopenharmony_ci{ 536262306a36Sopenharmony_ci free(req->header.dev_name); 536362306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 536462306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 536562306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 536662306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 536762306a36Sopenharmony_ci} 536862306a36Sopenharmony_cistatic inline void 536962306a36Sopenharmony_ciethtool_mm_get_req_dump_set_header_flags(struct ethtool_mm_get_req_dump *req, 537062306a36Sopenharmony_ci __u32 flags) 537162306a36Sopenharmony_ci{ 537262306a36Sopenharmony_ci req->_present.header = 1; 537362306a36Sopenharmony_ci req->header._present.flags = 1; 537462306a36Sopenharmony_ci req->header.flags = flags; 537562306a36Sopenharmony_ci} 537662306a36Sopenharmony_ci 537762306a36Sopenharmony_cistruct ethtool_mm_get_list { 537862306a36Sopenharmony_ci struct ethtool_mm_get_list *next; 537962306a36Sopenharmony_ci struct ethtool_mm_get_rsp obj __attribute__ ((aligned (8))); 538062306a36Sopenharmony_ci}; 538162306a36Sopenharmony_ci 538262306a36Sopenharmony_civoid ethtool_mm_get_list_free(struct ethtool_mm_get_list *rsp); 538362306a36Sopenharmony_ci 538462306a36Sopenharmony_cistruct ethtool_mm_get_list * 538562306a36Sopenharmony_ciethtool_mm_get_dump(struct ynl_sock *ys, struct ethtool_mm_get_req_dump *req); 538662306a36Sopenharmony_ci 538762306a36Sopenharmony_ci/* ETHTOOL_MSG_MM_GET - notify */ 538862306a36Sopenharmony_cistruct ethtool_mm_get_ntf { 538962306a36Sopenharmony_ci __u16 family; 539062306a36Sopenharmony_ci __u8 cmd; 539162306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 539262306a36Sopenharmony_ci void (*free)(struct ethtool_mm_get_ntf *ntf); 539362306a36Sopenharmony_ci struct ethtool_mm_get_rsp obj __attribute__ ((aligned (8))); 539462306a36Sopenharmony_ci}; 539562306a36Sopenharmony_ci 539662306a36Sopenharmony_civoid ethtool_mm_get_ntf_free(struct ethtool_mm_get_ntf *rsp); 539762306a36Sopenharmony_ci 539862306a36Sopenharmony_ci/* ============== ETHTOOL_MSG_MM_SET ============== */ 539962306a36Sopenharmony_ci/* ETHTOOL_MSG_MM_SET - do */ 540062306a36Sopenharmony_cistruct ethtool_mm_set_req { 540162306a36Sopenharmony_ci struct { 540262306a36Sopenharmony_ci __u32 header:1; 540362306a36Sopenharmony_ci __u32 verify_enabled:1; 540462306a36Sopenharmony_ci __u32 verify_time:1; 540562306a36Sopenharmony_ci __u32 tx_enabled:1; 540662306a36Sopenharmony_ci __u32 pmac_enabled:1; 540762306a36Sopenharmony_ci __u32 tx_min_frag_size:1; 540862306a36Sopenharmony_ci } _present; 540962306a36Sopenharmony_ci 541062306a36Sopenharmony_ci struct ethtool_header header; 541162306a36Sopenharmony_ci __u8 verify_enabled; 541262306a36Sopenharmony_ci __u32 verify_time; 541362306a36Sopenharmony_ci __u8 tx_enabled; 541462306a36Sopenharmony_ci __u8 pmac_enabled; 541562306a36Sopenharmony_ci __u32 tx_min_frag_size; 541662306a36Sopenharmony_ci}; 541762306a36Sopenharmony_ci 541862306a36Sopenharmony_cistatic inline struct ethtool_mm_set_req *ethtool_mm_set_req_alloc(void) 541962306a36Sopenharmony_ci{ 542062306a36Sopenharmony_ci return calloc(1, sizeof(struct ethtool_mm_set_req)); 542162306a36Sopenharmony_ci} 542262306a36Sopenharmony_civoid ethtool_mm_set_req_free(struct ethtool_mm_set_req *req); 542362306a36Sopenharmony_ci 542462306a36Sopenharmony_cistatic inline void 542562306a36Sopenharmony_ciethtool_mm_set_req_set_header_dev_index(struct ethtool_mm_set_req *req, 542662306a36Sopenharmony_ci __u32 dev_index) 542762306a36Sopenharmony_ci{ 542862306a36Sopenharmony_ci req->_present.header = 1; 542962306a36Sopenharmony_ci req->header._present.dev_index = 1; 543062306a36Sopenharmony_ci req->header.dev_index = dev_index; 543162306a36Sopenharmony_ci} 543262306a36Sopenharmony_cistatic inline void 543362306a36Sopenharmony_ciethtool_mm_set_req_set_header_dev_name(struct ethtool_mm_set_req *req, 543462306a36Sopenharmony_ci const char *dev_name) 543562306a36Sopenharmony_ci{ 543662306a36Sopenharmony_ci free(req->header.dev_name); 543762306a36Sopenharmony_ci req->header._present.dev_name_len = strlen(dev_name); 543862306a36Sopenharmony_ci req->header.dev_name = malloc(req->header._present.dev_name_len + 1); 543962306a36Sopenharmony_ci memcpy(req->header.dev_name, dev_name, req->header._present.dev_name_len); 544062306a36Sopenharmony_ci req->header.dev_name[req->header._present.dev_name_len] = 0; 544162306a36Sopenharmony_ci} 544262306a36Sopenharmony_cistatic inline void 544362306a36Sopenharmony_ciethtool_mm_set_req_set_header_flags(struct ethtool_mm_set_req *req, 544462306a36Sopenharmony_ci __u32 flags) 544562306a36Sopenharmony_ci{ 544662306a36Sopenharmony_ci req->_present.header = 1; 544762306a36Sopenharmony_ci req->header._present.flags = 1; 544862306a36Sopenharmony_ci req->header.flags = flags; 544962306a36Sopenharmony_ci} 545062306a36Sopenharmony_cistatic inline void 545162306a36Sopenharmony_ciethtool_mm_set_req_set_verify_enabled(struct ethtool_mm_set_req *req, 545262306a36Sopenharmony_ci __u8 verify_enabled) 545362306a36Sopenharmony_ci{ 545462306a36Sopenharmony_ci req->_present.verify_enabled = 1; 545562306a36Sopenharmony_ci req->verify_enabled = verify_enabled; 545662306a36Sopenharmony_ci} 545762306a36Sopenharmony_cistatic inline void 545862306a36Sopenharmony_ciethtool_mm_set_req_set_verify_time(struct ethtool_mm_set_req *req, 545962306a36Sopenharmony_ci __u32 verify_time) 546062306a36Sopenharmony_ci{ 546162306a36Sopenharmony_ci req->_present.verify_time = 1; 546262306a36Sopenharmony_ci req->verify_time = verify_time; 546362306a36Sopenharmony_ci} 546462306a36Sopenharmony_cistatic inline void 546562306a36Sopenharmony_ciethtool_mm_set_req_set_tx_enabled(struct ethtool_mm_set_req *req, 546662306a36Sopenharmony_ci __u8 tx_enabled) 546762306a36Sopenharmony_ci{ 546862306a36Sopenharmony_ci req->_present.tx_enabled = 1; 546962306a36Sopenharmony_ci req->tx_enabled = tx_enabled; 547062306a36Sopenharmony_ci} 547162306a36Sopenharmony_cistatic inline void 547262306a36Sopenharmony_ciethtool_mm_set_req_set_pmac_enabled(struct ethtool_mm_set_req *req, 547362306a36Sopenharmony_ci __u8 pmac_enabled) 547462306a36Sopenharmony_ci{ 547562306a36Sopenharmony_ci req->_present.pmac_enabled = 1; 547662306a36Sopenharmony_ci req->pmac_enabled = pmac_enabled; 547762306a36Sopenharmony_ci} 547862306a36Sopenharmony_cistatic inline void 547962306a36Sopenharmony_ciethtool_mm_set_req_set_tx_min_frag_size(struct ethtool_mm_set_req *req, 548062306a36Sopenharmony_ci __u32 tx_min_frag_size) 548162306a36Sopenharmony_ci{ 548262306a36Sopenharmony_ci req->_present.tx_min_frag_size = 1; 548362306a36Sopenharmony_ci req->tx_min_frag_size = tx_min_frag_size; 548462306a36Sopenharmony_ci} 548562306a36Sopenharmony_ci 548662306a36Sopenharmony_ci/* 548762306a36Sopenharmony_ci * Set MAC Merge configuration 548862306a36Sopenharmony_ci */ 548962306a36Sopenharmony_ciint ethtool_mm_set(struct ynl_sock *ys, struct ethtool_mm_set_req *req); 549062306a36Sopenharmony_ci 549162306a36Sopenharmony_ci/* ETHTOOL_MSG_CABLE_TEST_NTF - event */ 549262306a36Sopenharmony_cistruct ethtool_cable_test_ntf_rsp { 549362306a36Sopenharmony_ci struct { 549462306a36Sopenharmony_ci __u32 header:1; 549562306a36Sopenharmony_ci __u32 status:1; 549662306a36Sopenharmony_ci } _present; 549762306a36Sopenharmony_ci 549862306a36Sopenharmony_ci struct ethtool_header header; 549962306a36Sopenharmony_ci __u8 status; 550062306a36Sopenharmony_ci}; 550162306a36Sopenharmony_ci 550262306a36Sopenharmony_cistruct ethtool_cable_test_ntf { 550362306a36Sopenharmony_ci __u16 family; 550462306a36Sopenharmony_ci __u8 cmd; 550562306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 550662306a36Sopenharmony_ci void (*free)(struct ethtool_cable_test_ntf *ntf); 550762306a36Sopenharmony_ci struct ethtool_cable_test_ntf_rsp obj __attribute__ ((aligned (8))); 550862306a36Sopenharmony_ci}; 550962306a36Sopenharmony_ci 551062306a36Sopenharmony_civoid ethtool_cable_test_ntf_free(struct ethtool_cable_test_ntf *rsp); 551162306a36Sopenharmony_ci 551262306a36Sopenharmony_ci/* ETHTOOL_MSG_CABLE_TEST_TDR_NTF - event */ 551362306a36Sopenharmony_cistruct ethtool_cable_test_tdr_ntf_rsp { 551462306a36Sopenharmony_ci struct { 551562306a36Sopenharmony_ci __u32 header:1; 551662306a36Sopenharmony_ci __u32 status:1; 551762306a36Sopenharmony_ci __u32 nest:1; 551862306a36Sopenharmony_ci } _present; 551962306a36Sopenharmony_ci 552062306a36Sopenharmony_ci struct ethtool_header header; 552162306a36Sopenharmony_ci __u8 status; 552262306a36Sopenharmony_ci struct ethtool_cable_nest nest; 552362306a36Sopenharmony_ci}; 552462306a36Sopenharmony_ci 552562306a36Sopenharmony_cistruct ethtool_cable_test_tdr_ntf { 552662306a36Sopenharmony_ci __u16 family; 552762306a36Sopenharmony_ci __u8 cmd; 552862306a36Sopenharmony_ci struct ynl_ntf_base_type *next; 552962306a36Sopenharmony_ci void (*free)(struct ethtool_cable_test_tdr_ntf *ntf); 553062306a36Sopenharmony_ci struct ethtool_cable_test_tdr_ntf_rsp obj __attribute__ ((aligned (8))); 553162306a36Sopenharmony_ci}; 553262306a36Sopenharmony_ci 553362306a36Sopenharmony_civoid ethtool_cable_test_tdr_ntf_free(struct ethtool_cable_test_tdr_ntf *rsp); 553462306a36Sopenharmony_ci 553562306a36Sopenharmony_ci#endif /* _LINUX_ETHTOOL_GEN_H */ 5536