* [Buildroot] [PATCH 1/1] package/ethtool: fix builds for older toolchains
@ 2023-01-26 18:50 Vincent Fazio
2023-01-26 22:22 ` Florian Fainelli
2023-01-27 20:14 ` [Buildroot] [PATCH v2 " Vincent Fazio
0 siblings, 2 replies; 9+ messages in thread
From: Vincent Fazio @ 2023-01-26 18:50 UTC (permalink / raw)
To: buildroot; +Cc: Matt Weber, Vincent Fazio
Upstream commit 1fa60003a8b8 made a change to headers that broke
compiles with toolchains using kernel headers prior to 4.11.
Apply the patch slated to address the issue.
Fixes:
- http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7271a5ec58
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
---
package/ethtool/0001-uapi-Bring-in-if.h.patch | 483 ++++++++++++++++++
1 file changed, 483 insertions(+)
create mode 100644 package/ethtool/0001-uapi-Bring-in-if.h.patch
diff --git a/package/ethtool/0001-uapi-Bring-in-if.h.patch b/package/ethtool/0001-uapi-Bring-in-if.h.patch
new file mode 100644
index 0000000000..faf264f61f
--- /dev/null
+++ b/package/ethtool/0001-uapi-Bring-in-if.h.patch
@@ -0,0 +1,483 @@
+From fd02caa75918401f2cb75af1f2a181c1959e070d Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Sat, 14 Jan 2023 08:34:09 -0800
+Subject: [PATCH] uapi: Bring in if.h
+
+Bring in if.h from commit eec517cdb481 ("net: Add IF_OPER_TESTING") as
+well as uapi/linux/hdlc/ioctl.h. Ensure that we define all of the
+necessary guards to provide updated definitions of ifmap, ifreq and
+IFNAMSIZ. This resolves build issues with kernel headers < 4.11 which
+lacked 2618be7dccf8739b89e1906b64bd8d551af351e6 ("uapi: fix linux/if.h
+userspace compilation errors").
+
+Fixes: 1fa60003a8b8 ("misc: header includes cleanup")
+Reported-by: Markus Mayer <mmayer@broadcom.com>
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+Message-Id: <20230114163411.3290201-2-f.fainelli@gmail.com>
+
+[Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20230114163411.3290201-2-f.fainelli@gmail.com/]
+[vfazio@gmail.com: fix whitespace issues]
+Signed-off-by: Vincent Fazio <vfazio@gmail.com>
+---
+ Makefile.am | 6 +-
+ internal.h | 7 +-
+ uapi/linux/hdlc/ioctl.h | 94 +++++++++++++
+ uapi/linux/if.h | 296 ++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 397 insertions(+), 6 deletions(-)
+ create mode 100644 uapi/linux/hdlc/ioctl.h
+ create mode 100644 uapi/linux/if.h
+
+diff --git a/Makefile.am b/Makefile.am
+index 663f40a..691a20e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -7,7 +7,8 @@ EXTRA_DIST = LICENSE ethtool.8 ethtool.spec.in aclocal.m4 ChangeLog autogen.sh
+
+ sbin_PROGRAMS = ethtool
+ ethtool_SOURCES = ethtool.c uapi/linux/ethtool.h internal.h \
+- uapi/linux/net_tstamp.h rxclass.c common.c common.h \
++ uapi/linux/net_tstamp.h uapi/linux/if.h uapi/linux/hdlc/ioctl.h \
++ rxclass.c common.c common.h \
+ json_writer.c json_writer.h json_print.c json_print.h \
+ list.h
+ if ETHTOOL_ENABLE_PRETTY_DUMP
+@@ -43,7 +44,8 @@ ethtool_SOURCES += \
+ netlink/desc-rtnl.c netlink/cable_test.c netlink/tunnels.c \
+ uapi/linux/ethtool_netlink.h \
+ uapi/linux/netlink.h uapi/linux/genetlink.h \
+- uapi/linux/rtnetlink.h uapi/linux/if_link.h
++ uapi/linux/rtnetlink.h uapi/linux/if_link.h \
++ uapi/linux/if.h uapi/linux/hdlc/ioctl.h
+ AM_CPPFLAGS += @MNL_CFLAGS@
+ LDADD += @MNL_LIBS@
+ endif
+diff --git a/internal.h b/internal.h
+index b80f77a..3923719 100644
+--- a/internal.h
++++ b/internal.h
+@@ -21,6 +21,9 @@
+ #include <unistd.h>
+ #include <endian.h>
+ #include <sys/ioctl.h>
++#define __UAPI_DEF_IF_IFNAMSIZ 1
++#define __UAPI_DEF_IF_IFMAP 1
++#define __UAPI_DEF_IF_IFREQ 1
+ #include <linux/if.h>
+
+ #include "json_writer.h"
+@@ -52,10 +55,6 @@ typedef int32_t s32;
+ #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+ #endif
+
+-#ifndef ALTIFNAMSIZ
+-#define ALTIFNAMSIZ 128
+-#endif
+-
+ #include <linux/ethtool.h>
+ #include <linux/net_tstamp.h>
+
+diff --git a/uapi/linux/hdlc/ioctl.h b/uapi/linux/hdlc/ioctl.h
+new file mode 100644
+index 0000000..b06341a
+--- /dev/null
++++ b/uapi/linux/hdlc/ioctl.h
+@@ -0,0 +1,94 @@
++/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
++#ifndef __HDLC_IOCTL_H__
++#define __HDLC_IOCTL_H__
++
++
++#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */
++
++#define CLOCK_DEFAULT 0 /* Default setting */
++#define CLOCK_EXT 1 /* External TX and RX clock - DTE */
++#define CLOCK_INT 2 /* Internal TX and RX clock - DCE */
++#define CLOCK_TXINT 3 /* Internal TX and external RX clock */
++#define CLOCK_TXFROMRX 4 /* TX clock derived from external RX clock */
++
++
++#define ENCODING_DEFAULT 0 /* Default setting */
++#define ENCODING_NRZ 1
++#define ENCODING_NRZI 2
++#define ENCODING_FM_MARK 3
++#define ENCODING_FM_SPACE 4
++#define ENCODING_MANCHESTER 5
++
++
++#define PARITY_DEFAULT 0 /* Default setting */
++#define PARITY_NONE 1 /* No parity */
++#define PARITY_CRC16_PR0 2 /* CRC16, initial value 0x0000 */
++#define PARITY_CRC16_PR1 3 /* CRC16, initial value 0xFFFF */
++#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */
++#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */
++#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
++#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */
++
++#define LMI_DEFAULT 0 /* Default setting */
++#define LMI_NONE 1 /* No LMI, all PVCs are static */
++#define LMI_ANSI 2 /* ANSI Annex D */
++#define LMI_CCITT 3 /* ITU-T Annex A */
++#define LMI_CISCO 4 /* The "original" LMI, aka Gang of Four */
++
++#ifndef __ASSEMBLY__
++
++typedef struct {
++ unsigned int clock_rate; /* bits per second */
++ unsigned int clock_type; /* internal, external, TX-internal etc. */
++ unsigned short loopback;
++} sync_serial_settings; /* V.35, V.24, X.21 */
++
++typedef struct {
++ unsigned int clock_rate; /* bits per second */
++ unsigned int clock_type; /* internal, external, TX-internal etc. */
++ unsigned short loopback;
++ unsigned int slot_map;
++} te1_settings; /* T1, E1 */
++
++typedef struct {
++ unsigned short encoding;
++ unsigned short parity;
++} raw_hdlc_proto;
++
++typedef struct {
++ unsigned int t391;
++ unsigned int t392;
++ unsigned int n391;
++ unsigned int n392;
++ unsigned int n393;
++ unsigned short lmi;
++ unsigned short dce; /* 1 for DCE (network side) operation */
++} fr_proto;
++
++typedef struct {
++ unsigned int dlci;
++} fr_proto_pvc; /* for creating/deleting FR PVCs */
++
++typedef struct {
++ unsigned int dlci;
++ char master[IFNAMSIZ]; /* Name of master FRAD device */
++}fr_proto_pvc_info; /* for returning PVC information only */
++
++typedef struct {
++ unsigned int interval;
++ unsigned int timeout;
++} cisco_proto;
++
++typedef struct {
++ unsigned short dce; /* 1 for DCE (network side) operation */
++ unsigned int modulo; /* modulo (8 = basic / 128 = extended) */
++ unsigned int window; /* frame window size */
++ unsigned int t1; /* timeout t1 */
++ unsigned int t2; /* timeout t2 */
++ unsigned int n2; /* frame retry counter */
++} x25_hdlc_proto;
++
++/* PPP doesn't need any info now - supply length = 0 to ioctl */
++
++#endif /* __ASSEMBLY__ */
++#endif /* __HDLC_IOCTL_H__ */
+diff --git a/uapi/linux/if.h b/uapi/linux/if.h
+new file mode 100644
+index 0000000..75ee7f4
+--- /dev/null
++++ b/uapi/linux/if.h
+@@ -0,0 +1,296 @@
++/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
++/*
++ * INET An implementation of the TCP/IP protocol suite for the LINUX
++ * operating system. INET is implemented using the BSD Socket
++ * interface as the means of communication with the user level.
++ *
++ * Global definitions for the INET interface module.
++ *
++ * Version: @(#)if.h 1.0.2 04/18/93
++ *
++ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
++ * Ross Biro
++ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++#ifndef _LINUX_IF_H
++#define _LINUX_IF_H
++
++#include <linux/libc-compat.h> /* for compatibility with glibc */
++#include <linux/types.h> /* for "__kernel_caddr_t" et al */
++#include <linux/socket.h> /* for "struct sockaddr" et al */
++ /* for "__user" et al */
++
++#include <sys/socket.h> /* for struct sockaddr. */
++
++#if __UAPI_DEF_IF_IFNAMSIZ
++#define IFNAMSIZ 16
++#endif /* __UAPI_DEF_IF_IFNAMSIZ */
++#define IFALIASZ 256
++#define ALTIFNAMSIZ 128
++#include <linux/hdlc/ioctl.h>
++
++/* For glibc compatibility. An empty enum does not compile. */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
++ __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
++/**
++ * enum net_device_flags - &struct net_device flags
++ *
++ * These are the &struct net_device flags, they can be set by drivers, the
++ * kernel and some can be triggered by userspace. Userspace can query and
++ * set these flags using userspace utilities but there is also a sysfs
++ * entry available for all dev flags which can be queried and set. These flags
++ * are shared for all types of net_devices. The sysfs entries are available
++ * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
++ * are annotated below, note that only a few flags can be toggled and some
++ * other flags are always preserved from the original net_device flags
++ * even if you try to set them via sysfs. Flags which are always preserved
++ * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
++ * are annotated below as such.
++ *
++ * You should have a pretty good reason to be extending these flags.
++ *
++ * @IFF_UP: interface is up. Can be toggled through sysfs.
++ * @IFF_BROADCAST: broadcast address valid. Volatile.
++ * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
++ * @IFF_LOOPBACK: is a loopback net. Volatile.
++ * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
++ * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
++ * Volatile.
++ * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
++ * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
++ * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
++ * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
++ * sysfs.
++ * @IFF_MASTER: master of a load balancer. Volatile.
++ * @IFF_SLAVE: slave of a load balancer. Volatile.
++ * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
++ * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
++ * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
++ * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
++ * through sysfs.
++ * @IFF_LOWER_UP: driver signals L1 up. Volatile.
++ * @IFF_DORMANT: driver signals dormant. Volatile.
++ * @IFF_ECHO: echo sent packets. Volatile.
++ */
++enum net_device_flags {
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
++ IFF_UP = 1<<0, /* sysfs */
++ IFF_BROADCAST = 1<<1, /* __volatile__ */
++ IFF_DEBUG = 1<<2, /* sysfs */
++ IFF_LOOPBACK = 1<<3, /* __volatile__ */
++ IFF_POINTOPOINT = 1<<4, /* __volatile__ */
++ IFF_NOTRAILERS = 1<<5, /* sysfs */
++ IFF_RUNNING = 1<<6, /* __volatile__ */
++ IFF_NOARP = 1<<7, /* sysfs */
++ IFF_PROMISC = 1<<8, /* sysfs */
++ IFF_ALLMULTI = 1<<9, /* sysfs */
++ IFF_MASTER = 1<<10, /* __volatile__ */
++ IFF_SLAVE = 1<<11, /* __volatile__ */
++ IFF_MULTICAST = 1<<12, /* sysfs */
++ IFF_PORTSEL = 1<<13, /* sysfs */
++ IFF_AUTOMEDIA = 1<<14, /* sysfs */
++ IFF_DYNAMIC = 1<<15, /* sysfs */
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
++ IFF_LOWER_UP = 1<<16, /* __volatile__ */
++ IFF_DORMANT = 1<<17, /* __volatile__ */
++ IFF_ECHO = 1<<18, /* __volatile__ */
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
++};
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
++#define IFF_UP IFF_UP
++#define IFF_BROADCAST IFF_BROADCAST
++#define IFF_DEBUG IFF_DEBUG
++#define IFF_LOOPBACK IFF_LOOPBACK
++#define IFF_POINTOPOINT IFF_POINTOPOINT
++#define IFF_NOTRAILERS IFF_NOTRAILERS
++#define IFF_RUNNING IFF_RUNNING
++#define IFF_NOARP IFF_NOARP
++#define IFF_PROMISC IFF_PROMISC
++#define IFF_ALLMULTI IFF_ALLMULTI
++#define IFF_MASTER IFF_MASTER
++#define IFF_SLAVE IFF_SLAVE
++#define IFF_MULTICAST IFF_MULTICAST
++#define IFF_PORTSEL IFF_PORTSEL
++#define IFF_AUTOMEDIA IFF_AUTOMEDIA
++#define IFF_DYNAMIC IFF_DYNAMIC
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
++
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
++#define IFF_LOWER_UP IFF_LOWER_UP
++#define IFF_DORMANT IFF_DORMANT
++#define IFF_ECHO IFF_ECHO
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
++
++#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
++ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
++
++#define IF_GET_IFACE 0x0001 /* for querying only */
++#define IF_GET_PROTO 0x0002
++
++/* For definitions see hdlc.h */
++#define IF_IFACE_V35 0x1000 /* V.35 serial interface */
++#define IF_IFACE_V24 0x1001 /* V.24 serial interface */
++#define IF_IFACE_X21 0x1002 /* X.21 serial interface */
++#define IF_IFACE_T1 0x1003 /* T1 telco serial interface */
++#define IF_IFACE_E1 0x1004 /* E1 telco serial interface */
++#define IF_IFACE_SYNC_SERIAL 0x1005 /* can't be set by software */
++#define IF_IFACE_X21D 0x1006 /* X.21 Dual Clocking (FarSite) */
++
++/* For definitions see hdlc.h */
++#define IF_PROTO_HDLC 0x2000 /* raw HDLC protocol */
++#define IF_PROTO_PPP 0x2001 /* PPP protocol */
++#define IF_PROTO_CISCO 0x2002 /* Cisco HDLC protocol */
++#define IF_PROTO_FR 0x2003 /* Frame Relay protocol */
++#define IF_PROTO_FR_ADD_PVC 0x2004 /* Create FR PVC */
++#define IF_PROTO_FR_DEL_PVC 0x2005 /* Delete FR PVC */
++#define IF_PROTO_X25 0x2006 /* X.25 */
++#define IF_PROTO_HDLC_ETH 0x2007 /* raw HDLC, Ethernet emulation */
++#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /* Create FR Ethernet-bridged PVC */
++#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /* Delete FR Ethernet-bridged PVC */
++#define IF_PROTO_FR_PVC 0x200A /* for reading PVC status */
++#define IF_PROTO_FR_ETH_PVC 0x200B
++#define IF_PROTO_RAW 0x200C /* RAW Socket */
++
++/* RFC 2863 operational status */
++enum {
++ IF_OPER_UNKNOWN,
++ IF_OPER_NOTPRESENT,
++ IF_OPER_DOWN,
++ IF_OPER_LOWERLAYERDOWN,
++ IF_OPER_TESTING,
++ IF_OPER_DORMANT,
++ IF_OPER_UP,
++};
++
++/* link modes */
++enum {
++ IF_LINK_MODE_DEFAULT,
++ IF_LINK_MODE_DORMANT, /* limit upward transition to dormant */
++ IF_LINK_MODE_TESTING, /* limit upward transition to testing */
++};
++
++/*
++ * Device mapping structure. I'd just gone off and designed a
++ * beautiful scheme using only loadable modules with arguments
++ * for driver options and along come the PCMCIA people 8)
++ *
++ * Ah well. The get() side of this is good for WDSETUP, and it'll
++ * be handy for debugging things. The set side is fine for now and
++ * being very small might be worth keeping for clean configuration.
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFMAP
++struct ifmap {
++ unsigned long mem_start;
++ unsigned long mem_end;
++ unsigned short base_addr;
++ unsigned char irq;
++ unsigned char dma;
++ unsigned char port;
++ /* 3 bytes spare */
++};
++#endif /* __UAPI_DEF_IF_IFMAP */
++
++struct if_settings {
++ unsigned int type; /* Type of physical device or protocol */
++ unsigned int size; /* Size of the data allocated by the caller */
++ union {
++ /* {atm/eth/dsl}_settings anyone ? */
++ raw_hdlc_proto *raw_hdlc;
++ cisco_proto *cisco;
++ fr_proto *fr;
++ fr_proto_pvc *fr_pvc;
++ fr_proto_pvc_info *fr_pvc_info;
++ x25_hdlc_proto *x25;
++
++ /* interface settings */
++ sync_serial_settings *sync;
++ te1_settings *te1;
++ } ifs_ifsu;
++};
++
++/*
++ * Interface request structure used for socket
++ * ioctl's. All interface ioctl's must have parameter
++ * definitions which begin with ifr_name. The
++ * remainder may be interface specific.
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFREQ
++struct ifreq {
++#define IFHWADDRLEN 6
++ union
++ {
++ char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */
++ } ifr_ifrn;
++
++ union {
++ struct sockaddr ifru_addr;
++ struct sockaddr ifru_dstaddr;
++ struct sockaddr ifru_broadaddr;
++ struct sockaddr ifru_netmask;
++ struct sockaddr ifru_hwaddr;
++ short ifru_flags;
++ int ifru_ivalue;
++ int ifru_mtu;
++ struct ifmap ifru_map;
++ char ifru_slave[IFNAMSIZ]; /* Just fits the size */
++ char ifru_newname[IFNAMSIZ];
++ void * ifru_data;
++ struct if_settings ifru_settings;
++ } ifr_ifru;
++};
++#endif /* __UAPI_DEF_IF_IFREQ */
++
++#define ifr_name ifr_ifrn.ifrn_name /* interface name */
++#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */
++#define ifr_addr ifr_ifru.ifru_addr /* address */
++#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */
++#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
++#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */
++#define ifr_flags ifr_ifru.ifru_flags /* flags */
++#define ifr_metric ifr_ifru.ifru_ivalue /* metric */
++#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
++#define ifr_map ifr_ifru.ifru_map /* device map */
++#define ifr_slave ifr_ifru.ifru_slave /* slave device */
++#define ifr_data ifr_ifru.ifru_data /* for use by interface */
++#define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */
++#define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */
++#define ifr_qlen ifr_ifru.ifru_ivalue /* Queue length */
++#define ifr_newname ifr_ifru.ifru_newname /* New name */
++#define ifr_settings ifr_ifru.ifru_settings /* Device/proto settings*/
++
++/*
++ * Structure used in SIOCGIFCONF request.
++ * Used to retrieve interface configuration
++ * for machine (useful for programs which
++ * must know all networks accessible).
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFCONF
++struct ifconf {
++ int ifc_len; /* size of buffer */
++ union {
++ char *ifcu_buf;
++ struct ifreq *ifcu_req;
++ } ifc_ifcu;
++};
++#endif /* __UAPI_DEF_IF_IFCONF */
++
++#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
++#define ifc_req ifc_ifcu.ifcu_req /* array of structures */
++
++#endif /* _LINUX_IF_H */
+--
+2.25.1
+
--
2.25.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/ethtool: fix builds for older toolchains
2023-01-26 18:50 [Buildroot] [PATCH 1/1] package/ethtool: fix builds for older toolchains Vincent Fazio
@ 2023-01-26 22:22 ` Florian Fainelli
2023-01-26 23:12 ` [Buildroot] [External] - " Vincent Fazio
2023-01-27 20:14 ` [Buildroot] [PATCH v2 " Vincent Fazio
1 sibling, 1 reply; 9+ messages in thread
From: Florian Fainelli @ 2023-01-26 22:22 UTC (permalink / raw)
To: Vincent Fazio, buildroot; +Cc: Matt Weber
Hi,
On 1/26/2023 10:50 AM, Vincent Fazio wrote:
> Upstream commit 1fa60003a8b8 made a change to headers that broke
> compiles with toolchains using kernel headers prior to 4.11.
>
> Apply the patch slated to address the issue.
>
> Fixes:
> - http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7271a5ec58
>
> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
Why not also take patch #3 so we fix build issues with musl C libraries?
Thanks for doing this.
--
Florian
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [External] - Re: [PATCH 1/1] package/ethtool: fix builds for older toolchains
2023-01-26 22:22 ` Florian Fainelli
@ 2023-01-26 23:12 ` Vincent Fazio
2023-01-27 0:10 ` Florian Fainelli
0 siblings, 1 reply; 9+ messages in thread
From: Vincent Fazio @ 2023-01-26 23:12 UTC (permalink / raw)
To: Florian Fainelli, buildroot@buildroot.org; +Cc: Matt Weber
Florian
> -----Original Message-----
> From: Florian Fainelli <f.fainelli@gmail.com>
> Sent: Thursday, January 26, 2023 4:22 PM
> To: Vincent Fazio <vfazio@xes-inc.com>; buildroot@buildroot.org
> Cc: Matt Weber <matthew.weber@collins.com>
> Subject: [External] - Re: [Buildroot] [PATCH 1/1] package/ethtool: fix builds
> for older toolchains
>
> Hi,
>
> On 1/26/2023 10:50 AM, Vincent Fazio wrote:
> > Upstream commit 1fa60003a8b8 made a change to headers that broke
> > compiles with toolchains using kernel headers prior to 4.11.
> >
> > Apply the patch slated to address the issue.
> >
> > Fixes:
> > -
> > http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7
> > 271a5ec58
> >
> > Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
>
> Why not also take patch #3 so we fix build issues with musl C libraries?
> Thanks for doing this.
I can do this, but I was trying to keep the fixes as atomic as possible. I haven't seen any autobuild failures for musl yet.
Have you heard back from Michal about applying to upstream? I was debating holding off on this patch with the assumption that 6.2 may be released soon.
> --
> Florian
> CAUTION: This email originated from outside of the organization. Do not click
> links or open attachments unless you recognize the sender and know the
> content is safe.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [External] - Re: [PATCH 1/1] package/ethtool: fix builds for older toolchains
2023-01-26 23:12 ` [Buildroot] [External] - " Vincent Fazio
@ 2023-01-27 0:10 ` Florian Fainelli
0 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2023-01-27 0:10 UTC (permalink / raw)
To: Vincent Fazio, buildroot@buildroot.org; +Cc: Matt Weber
On 1/26/2023 3:12 PM, Vincent Fazio wrote:
> Florian
>
>> -----Original Message-----
>> From: Florian Fainelli <f.fainelli@gmail.com>
>> Sent: Thursday, January 26, 2023 4:22 PM
>> To: Vincent Fazio <vfazio@xes-inc.com>; buildroot@buildroot.org
>> Cc: Matt Weber <matthew.weber@collins.com>
>> Subject: [External] - Re: [Buildroot] [PATCH 1/1] package/ethtool: fix builds
>> for older toolchains
>>
>> Hi,
>>
>> On 1/26/2023 10:50 AM, Vincent Fazio wrote:
>>> Upstream commit 1fa60003a8b8 made a change to headers that broke
>>> compiles with toolchains using kernel headers prior to 4.11.
>>>
>>> Apply the patch slated to address the issue.
>>>
>>> Fixes:
>>> -
>>> http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7
>>> 271a5ec58
>>>
>>> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
>>
>> Why not also take patch #3 so we fix build issues with musl C libraries?
>> Thanks for doing this.
>
> I can do this, but I was trying to keep the fixes as atomic as possible. I haven't seen any autobuild failures for musl yet.
>
> Have you heard back from Michal about applying to upstream? I was debating holding off on this patch with the assumption that 6.2 may be released soon.
He said he was going to apply the backlog this week:
https://lore.kernel.org/all/20230124083907.w7h6rbvh7fsq334y@lion.mk-sys.cz/
--
Florian
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 1/1] package/ethtool: fix builds for older toolchains
2023-01-26 18:50 [Buildroot] [PATCH 1/1] package/ethtool: fix builds for older toolchains Vincent Fazio
2023-01-26 22:22 ` Florian Fainelli
@ 2023-01-27 20:14 ` Vincent Fazio
2023-01-27 20:16 ` Florian Fainelli
2023-01-28 21:31 ` Thomas Petazzoni via buildroot
1 sibling, 2 replies; 9+ messages in thread
From: Vincent Fazio @ 2023-01-27 20:14 UTC (permalink / raw)
To: buildroot; +Cc: Florian Fainelli, Matt Weber, Vincent Fazio, Vincent Fazio
Upstream commit 1fa60003a8b8 made a change to headers that broke
compiles with toolchains using kernel headers prior to 4.11.
Apply the patches slated to address the issue.
Fixes:
- http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7271a5ec58
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
---
Changes v1 -> v2:
- Add patch for musl based builds
---
package/ethtool/0001-uapi-Bring-in-if.h.patch | 483 ++++++++++++++++++
...2-marvell.c-Fix-build-with-musl-libc.patch | 71 +++
2 files changed, 554 insertions(+)
create mode 100644 package/ethtool/0001-uapi-Bring-in-if.h.patch
create mode 100644 package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
diff --git a/package/ethtool/0001-uapi-Bring-in-if.h.patch b/package/ethtool/0001-uapi-Bring-in-if.h.patch
new file mode 100644
index 0000000000..bb67f9e1f5
--- /dev/null
+++ b/package/ethtool/0001-uapi-Bring-in-if.h.patch
@@ -0,0 +1,483 @@
+From 819a0ad207e2b96ddd19921b71f2f59fe3e7882a Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Sat, 14 Jan 2023 08:34:09 -0800
+Subject: [PATCH] uapi: Bring in if.h
+
+Bring in if.h from commit eec517cdb481 ("net: Add IF_OPER_TESTING") as
+well as uapi/linux/hdlc/ioctl.h. Ensure that we define all of the
+necessary guards to provide updated definitions of ifmap, ifreq and
+IFNAMSIZ. This resolves build issues with kernel headers < 4.11 which
+lacked 2618be7dccf8739b89e1906b64bd8d551af351e6 ("uapi: fix linux/if.h
+userspace compilation errors").
+
+Fixes: 1fa60003a8b8 ("misc: header includes cleanup")
+Reported-by: Markus Mayer <mmayer@broadcom.com>
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+Message-Id: <20230114163411.3290201-2-f.fainelli@gmail.com>
+
+[Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20230114163411.3290201-2-f.fainelli@gmail.com/]
+[vfazio@gmail.com: fix whitespace issues]
+Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
+---
+ Makefile.am | 6 +-
+ internal.h | 7 +-
+ uapi/linux/hdlc/ioctl.h | 94 +++++++++++++
+ uapi/linux/if.h | 296 ++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 397 insertions(+), 6 deletions(-)
+ create mode 100644 uapi/linux/hdlc/ioctl.h
+ create mode 100644 uapi/linux/if.h
+
+diff --git a/Makefile.am b/Makefile.am
+index 663f40a..691a20e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -7,7 +7,8 @@ EXTRA_DIST = LICENSE ethtool.8 ethtool.spec.in aclocal.m4 ChangeLog autogen.sh
+
+ sbin_PROGRAMS = ethtool
+ ethtool_SOURCES = ethtool.c uapi/linux/ethtool.h internal.h \
+- uapi/linux/net_tstamp.h rxclass.c common.c common.h \
++ uapi/linux/net_tstamp.h uapi/linux/if.h uapi/linux/hdlc/ioctl.h \
++ rxclass.c common.c common.h \
+ json_writer.c json_writer.h json_print.c json_print.h \
+ list.h
+ if ETHTOOL_ENABLE_PRETTY_DUMP
+@@ -43,7 +44,8 @@ ethtool_SOURCES += \
+ netlink/desc-rtnl.c netlink/cable_test.c netlink/tunnels.c \
+ uapi/linux/ethtool_netlink.h \
+ uapi/linux/netlink.h uapi/linux/genetlink.h \
+- uapi/linux/rtnetlink.h uapi/linux/if_link.h
++ uapi/linux/rtnetlink.h uapi/linux/if_link.h \
++ uapi/linux/if.h uapi/linux/hdlc/ioctl.h
+ AM_CPPFLAGS += @MNL_CFLAGS@
+ LDADD += @MNL_LIBS@
+ endif
+diff --git a/internal.h b/internal.h
+index b80f77a..3923719 100644
+--- a/internal.h
++++ b/internal.h
+@@ -21,6 +21,9 @@
+ #include <unistd.h>
+ #include <endian.h>
+ #include <sys/ioctl.h>
++#define __UAPI_DEF_IF_IFNAMSIZ 1
++#define __UAPI_DEF_IF_IFMAP 1
++#define __UAPI_DEF_IF_IFREQ 1
+ #include <linux/if.h>
+
+ #include "json_writer.h"
+@@ -52,10 +55,6 @@ typedef int32_t s32;
+ #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+ #endif
+
+-#ifndef ALTIFNAMSIZ
+-#define ALTIFNAMSIZ 128
+-#endif
+-
+ #include <linux/ethtool.h>
+ #include <linux/net_tstamp.h>
+
+diff --git a/uapi/linux/hdlc/ioctl.h b/uapi/linux/hdlc/ioctl.h
+new file mode 100644
+index 0000000..b06341a
+--- /dev/null
++++ b/uapi/linux/hdlc/ioctl.h
+@@ -0,0 +1,94 @@
++/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
++#ifndef __HDLC_IOCTL_H__
++#define __HDLC_IOCTL_H__
++
++
++#define GENERIC_HDLC_VERSION 4 /* For synchronization with sethdlc utility */
++
++#define CLOCK_DEFAULT 0 /* Default setting */
++#define CLOCK_EXT 1 /* External TX and RX clock - DTE */
++#define CLOCK_INT 2 /* Internal TX and RX clock - DCE */
++#define CLOCK_TXINT 3 /* Internal TX and external RX clock */
++#define CLOCK_TXFROMRX 4 /* TX clock derived from external RX clock */
++
++
++#define ENCODING_DEFAULT 0 /* Default setting */
++#define ENCODING_NRZ 1
++#define ENCODING_NRZI 2
++#define ENCODING_FM_MARK 3
++#define ENCODING_FM_SPACE 4
++#define ENCODING_MANCHESTER 5
++
++
++#define PARITY_DEFAULT 0 /* Default setting */
++#define PARITY_NONE 1 /* No parity */
++#define PARITY_CRC16_PR0 2 /* CRC16, initial value 0x0000 */
++#define PARITY_CRC16_PR1 3 /* CRC16, initial value 0xFFFF */
++#define PARITY_CRC16_PR0_CCITT 4 /* CRC16, initial 0x0000, ITU-T version */
++#define PARITY_CRC16_PR1_CCITT 5 /* CRC16, initial 0xFFFF, ITU-T version */
++#define PARITY_CRC32_PR0_CCITT 6 /* CRC32, initial value 0x00000000 */
++#define PARITY_CRC32_PR1_CCITT 7 /* CRC32, initial value 0xFFFFFFFF */
++
++#define LMI_DEFAULT 0 /* Default setting */
++#define LMI_NONE 1 /* No LMI, all PVCs are static */
++#define LMI_ANSI 2 /* ANSI Annex D */
++#define LMI_CCITT 3 /* ITU-T Annex A */
++#define LMI_CISCO 4 /* The "original" LMI, aka Gang of Four */
++
++#ifndef __ASSEMBLY__
++
++typedef struct {
++ unsigned int clock_rate; /* bits per second */
++ unsigned int clock_type; /* internal, external, TX-internal etc. */
++ unsigned short loopback;
++} sync_serial_settings; /* V.35, V.24, X.21 */
++
++typedef struct {
++ unsigned int clock_rate; /* bits per second */
++ unsigned int clock_type; /* internal, external, TX-internal etc. */
++ unsigned short loopback;
++ unsigned int slot_map;
++} te1_settings; /* T1, E1 */
++
++typedef struct {
++ unsigned short encoding;
++ unsigned short parity;
++} raw_hdlc_proto;
++
++typedef struct {
++ unsigned int t391;
++ unsigned int t392;
++ unsigned int n391;
++ unsigned int n392;
++ unsigned int n393;
++ unsigned short lmi;
++ unsigned short dce; /* 1 for DCE (network side) operation */
++} fr_proto;
++
++typedef struct {
++ unsigned int dlci;
++} fr_proto_pvc; /* for creating/deleting FR PVCs */
++
++typedef struct {
++ unsigned int dlci;
++ char master[IFNAMSIZ]; /* Name of master FRAD device */
++}fr_proto_pvc_info; /* for returning PVC information only */
++
++typedef struct {
++ unsigned int interval;
++ unsigned int timeout;
++} cisco_proto;
++
++typedef struct {
++ unsigned short dce; /* 1 for DCE (network side) operation */
++ unsigned int modulo; /* modulo (8 = basic / 128 = extended) */
++ unsigned int window; /* frame window size */
++ unsigned int t1; /* timeout t1 */
++ unsigned int t2; /* timeout t2 */
++ unsigned int n2; /* frame retry counter */
++} x25_hdlc_proto;
++
++/* PPP doesn't need any info now - supply length = 0 to ioctl */
++
++#endif /* __ASSEMBLY__ */
++#endif /* __HDLC_IOCTL_H__ */
+diff --git a/uapi/linux/if.h b/uapi/linux/if.h
+new file mode 100644
+index 0000000..75ee7f4
+--- /dev/null
++++ b/uapi/linux/if.h
+@@ -0,0 +1,296 @@
++/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
++/*
++ * INET An implementation of the TCP/IP protocol suite for the LINUX
++ * operating system. INET is implemented using the BSD Socket
++ * interface as the means of communication with the user level.
++ *
++ * Global definitions for the INET interface module.
++ *
++ * Version: @(#)if.h 1.0.2 04/18/93
++ *
++ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
++ * Ross Biro
++ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++#ifndef _LINUX_IF_H
++#define _LINUX_IF_H
++
++#include <linux/libc-compat.h> /* for compatibility with glibc */
++#include <linux/types.h> /* for "__kernel_caddr_t" et al */
++#include <linux/socket.h> /* for "struct sockaddr" et al */
++ /* for "__user" et al */
++
++#include <sys/socket.h> /* for struct sockaddr. */
++
++#if __UAPI_DEF_IF_IFNAMSIZ
++#define IFNAMSIZ 16
++#endif /* __UAPI_DEF_IF_IFNAMSIZ */
++#define IFALIASZ 256
++#define ALTIFNAMSIZ 128
++#include <linux/hdlc/ioctl.h>
++
++/* For glibc compatibility. An empty enum does not compile. */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
++ __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
++/**
++ * enum net_device_flags - &struct net_device flags
++ *
++ * These are the &struct net_device flags, they can be set by drivers, the
++ * kernel and some can be triggered by userspace. Userspace can query and
++ * set these flags using userspace utilities but there is also a sysfs
++ * entry available for all dev flags which can be queried and set. These flags
++ * are shared for all types of net_devices. The sysfs entries are available
++ * via /sys/class/net/<dev>/flags. Flags which can be toggled through sysfs
++ * are annotated below, note that only a few flags can be toggled and some
++ * other flags are always preserved from the original net_device flags
++ * even if you try to set them via sysfs. Flags which are always preserved
++ * are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
++ * are annotated below as such.
++ *
++ * You should have a pretty good reason to be extending these flags.
++ *
++ * @IFF_UP: interface is up. Can be toggled through sysfs.
++ * @IFF_BROADCAST: broadcast address valid. Volatile.
++ * @IFF_DEBUG: turn on debugging. Can be toggled through sysfs.
++ * @IFF_LOOPBACK: is a loopback net. Volatile.
++ * @IFF_POINTOPOINT: interface is has p-p link. Volatile.
++ * @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs.
++ * Volatile.
++ * @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.
++ * @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile.
++ * @IFF_PROMISC: receive all packets. Can be toggled through sysfs.
++ * @IFF_ALLMULTI: receive all multicast packets. Can be toggled through
++ * sysfs.
++ * @IFF_MASTER: master of a load balancer. Volatile.
++ * @IFF_SLAVE: slave of a load balancer. Volatile.
++ * @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs.
++ * @IFF_PORTSEL: can set media type. Can be toggled through sysfs.
++ * @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs.
++ * @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled
++ * through sysfs.
++ * @IFF_LOWER_UP: driver signals L1 up. Volatile.
++ * @IFF_DORMANT: driver signals dormant. Volatile.
++ * @IFF_ECHO: echo sent packets. Volatile.
++ */
++enum net_device_flags {
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
++ IFF_UP = 1<<0, /* sysfs */
++ IFF_BROADCAST = 1<<1, /* __volatile__ */
++ IFF_DEBUG = 1<<2, /* sysfs */
++ IFF_LOOPBACK = 1<<3, /* __volatile__ */
++ IFF_POINTOPOINT = 1<<4, /* __volatile__ */
++ IFF_NOTRAILERS = 1<<5, /* sysfs */
++ IFF_RUNNING = 1<<6, /* __volatile__ */
++ IFF_NOARP = 1<<7, /* sysfs */
++ IFF_PROMISC = 1<<8, /* sysfs */
++ IFF_ALLMULTI = 1<<9, /* sysfs */
++ IFF_MASTER = 1<<10, /* __volatile__ */
++ IFF_SLAVE = 1<<11, /* __volatile__ */
++ IFF_MULTICAST = 1<<12, /* sysfs */
++ IFF_PORTSEL = 1<<13, /* sysfs */
++ IFF_AUTOMEDIA = 1<<14, /* sysfs */
++ IFF_DYNAMIC = 1<<15, /* sysfs */
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
++ IFF_LOWER_UP = 1<<16, /* __volatile__ */
++ IFF_DORMANT = 1<<17, /* __volatile__ */
++ IFF_ECHO = 1<<18, /* __volatile__ */
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
++};
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
++#define IFF_UP IFF_UP
++#define IFF_BROADCAST IFF_BROADCAST
++#define IFF_DEBUG IFF_DEBUG
++#define IFF_LOOPBACK IFF_LOOPBACK
++#define IFF_POINTOPOINT IFF_POINTOPOINT
++#define IFF_NOTRAILERS IFF_NOTRAILERS
++#define IFF_RUNNING IFF_RUNNING
++#define IFF_NOARP IFF_NOARP
++#define IFF_PROMISC IFF_PROMISC
++#define IFF_ALLMULTI IFF_ALLMULTI
++#define IFF_MASTER IFF_MASTER
++#define IFF_SLAVE IFF_SLAVE
++#define IFF_MULTICAST IFF_MULTICAST
++#define IFF_PORTSEL IFF_PORTSEL
++#define IFF_AUTOMEDIA IFF_AUTOMEDIA
++#define IFF_DYNAMIC IFF_DYNAMIC
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
++
++#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
++#define IFF_LOWER_UP IFF_LOWER_UP
++#define IFF_DORMANT IFF_DORMANT
++#define IFF_ECHO IFF_ECHO
++#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
++
++#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|\
++ IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
++
++#define IF_GET_IFACE 0x0001 /* for querying only */
++#define IF_GET_PROTO 0x0002
++
++/* For definitions see hdlc.h */
++#define IF_IFACE_V35 0x1000 /* V.35 serial interface */
++#define IF_IFACE_V24 0x1001 /* V.24 serial interface */
++#define IF_IFACE_X21 0x1002 /* X.21 serial interface */
++#define IF_IFACE_T1 0x1003 /* T1 telco serial interface */
++#define IF_IFACE_E1 0x1004 /* E1 telco serial interface */
++#define IF_IFACE_SYNC_SERIAL 0x1005 /* can't be set by software */
++#define IF_IFACE_X21D 0x1006 /* X.21 Dual Clocking (FarSite) */
++
++/* For definitions see hdlc.h */
++#define IF_PROTO_HDLC 0x2000 /* raw HDLC protocol */
++#define IF_PROTO_PPP 0x2001 /* PPP protocol */
++#define IF_PROTO_CISCO 0x2002 /* Cisco HDLC protocol */
++#define IF_PROTO_FR 0x2003 /* Frame Relay protocol */
++#define IF_PROTO_FR_ADD_PVC 0x2004 /* Create FR PVC */
++#define IF_PROTO_FR_DEL_PVC 0x2005 /* Delete FR PVC */
++#define IF_PROTO_X25 0x2006 /* X.25 */
++#define IF_PROTO_HDLC_ETH 0x2007 /* raw HDLC, Ethernet emulation */
++#define IF_PROTO_FR_ADD_ETH_PVC 0x2008 /* Create FR Ethernet-bridged PVC */
++#define IF_PROTO_FR_DEL_ETH_PVC 0x2009 /* Delete FR Ethernet-bridged PVC */
++#define IF_PROTO_FR_PVC 0x200A /* for reading PVC status */
++#define IF_PROTO_FR_ETH_PVC 0x200B
++#define IF_PROTO_RAW 0x200C /* RAW Socket */
++
++/* RFC 2863 operational status */
++enum {
++ IF_OPER_UNKNOWN,
++ IF_OPER_NOTPRESENT,
++ IF_OPER_DOWN,
++ IF_OPER_LOWERLAYERDOWN,
++ IF_OPER_TESTING,
++ IF_OPER_DORMANT,
++ IF_OPER_UP,
++};
++
++/* link modes */
++enum {
++ IF_LINK_MODE_DEFAULT,
++ IF_LINK_MODE_DORMANT, /* limit upward transition to dormant */
++ IF_LINK_MODE_TESTING, /* limit upward transition to testing */
++};
++
++/*
++ * Device mapping structure. I'd just gone off and designed a
++ * beautiful scheme using only loadable modules with arguments
++ * for driver options and along come the PCMCIA people 8)
++ *
++ * Ah well. The get() side of this is good for WDSETUP, and it'll
++ * be handy for debugging things. The set side is fine for now and
++ * being very small might be worth keeping for clean configuration.
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFMAP
++struct ifmap {
++ unsigned long mem_start;
++ unsigned long mem_end;
++ unsigned short base_addr;
++ unsigned char irq;
++ unsigned char dma;
++ unsigned char port;
++ /* 3 bytes spare */
++};
++#endif /* __UAPI_DEF_IF_IFMAP */
++
++struct if_settings {
++ unsigned int type; /* Type of physical device or protocol */
++ unsigned int size; /* Size of the data allocated by the caller */
++ union {
++ /* {atm/eth/dsl}_settings anyone ? */
++ raw_hdlc_proto *raw_hdlc;
++ cisco_proto *cisco;
++ fr_proto *fr;
++ fr_proto_pvc *fr_pvc;
++ fr_proto_pvc_info *fr_pvc_info;
++ x25_hdlc_proto *x25;
++
++ /* interface settings */
++ sync_serial_settings *sync;
++ te1_settings *te1;
++ } ifs_ifsu;
++};
++
++/*
++ * Interface request structure used for socket
++ * ioctl's. All interface ioctl's must have parameter
++ * definitions which begin with ifr_name. The
++ * remainder may be interface specific.
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFREQ
++struct ifreq {
++#define IFHWADDRLEN 6
++ union
++ {
++ char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */
++ } ifr_ifrn;
++
++ union {
++ struct sockaddr ifru_addr;
++ struct sockaddr ifru_dstaddr;
++ struct sockaddr ifru_broadaddr;
++ struct sockaddr ifru_netmask;
++ struct sockaddr ifru_hwaddr;
++ short ifru_flags;
++ int ifru_ivalue;
++ int ifru_mtu;
++ struct ifmap ifru_map;
++ char ifru_slave[IFNAMSIZ]; /* Just fits the size */
++ char ifru_newname[IFNAMSIZ];
++ void * ifru_data;
++ struct if_settings ifru_settings;
++ } ifr_ifru;
++};
++#endif /* __UAPI_DEF_IF_IFREQ */
++
++#define ifr_name ifr_ifrn.ifrn_name /* interface name */
++#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */
++#define ifr_addr ifr_ifru.ifru_addr /* address */
++#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */
++#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
++#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */
++#define ifr_flags ifr_ifru.ifru_flags /* flags */
++#define ifr_metric ifr_ifru.ifru_ivalue /* metric */
++#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
++#define ifr_map ifr_ifru.ifru_map /* device map */
++#define ifr_slave ifr_ifru.ifru_slave /* slave device */
++#define ifr_data ifr_ifru.ifru_data /* for use by interface */
++#define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */
++#define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */
++#define ifr_qlen ifr_ifru.ifru_ivalue /* Queue length */
++#define ifr_newname ifr_ifru.ifru_newname /* New name */
++#define ifr_settings ifr_ifru.ifru_settings /* Device/proto settings*/
++
++/*
++ * Structure used in SIOCGIFCONF request.
++ * Used to retrieve interface configuration
++ * for machine (useful for programs which
++ * must know all networks accessible).
++ */
++
++/* for compatibility with glibc net/if.h */
++#if __UAPI_DEF_IF_IFCONF
++struct ifconf {
++ int ifc_len; /* size of buffer */
++ union {
++ char *ifcu_buf;
++ struct ifreq *ifcu_req;
++ } ifc_ifcu;
++};
++#endif /* __UAPI_DEF_IF_IFCONF */
++
++#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
++#define ifc_req ifc_ifcu.ifcu_req /* array of structures */
++
++#endif /* _LINUX_IF_H */
+--
+2.25.1
+
diff --git a/package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch b/package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
new file mode 100644
index 0000000000..f13edbbe50
--- /dev/null
+++ b/package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
@@ -0,0 +1,71 @@
+From a26296eea68aa6c16b253f34825c9b9007269672 Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Sat, 14 Jan 2023 08:34:11 -0800
+Subject: [PATCH] marvell.c: Fix build with musl-libc
+
+After commit 1fa60003a8b8 ("misc: header includes cleanup") we stopped
+including net/if.h which resolved the proper defines to pull in
+sys/types.h and provide a definition for u_int32_t. With musl-libc we
+would need to define _GNU_SOURCE to ensure that sys/types.h does provide a
+definition for u_int32_t.
+
+Rather, just replace u_uint{16,32}_t with the more standard
+uint{16,32}_t types from stdint.h
+
+Fixes: 1fa60003a8b8 ("misc: header includes cleanup")
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+
+[Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20230114163411.3290201-4-f.fainelli@gmail.com/]
+Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
+---
+ marvell.c | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/marvell.c b/marvell.c
+index d3d570e..3f3aed8 100644
+--- a/marvell.c
++++ b/marvell.c
+@@ -31,23 +31,23 @@ static void dump_timer(const char *name, const void *p)
+ static void dump_queue(const char *name, const void *a, int rx)
+ {
+ struct desc {
+- u_int32_t ctl;
+- u_int32_t next;
+- u_int32_t data_lo;
+- u_int32_t data_hi;
+- u_int32_t status;
+- u_int32_t timestamp;
+- u_int16_t csum2;
+- u_int16_t csum1;
+- u_int16_t csum2_start;
+- u_int16_t csum1_start;
+- u_int32_t addr_lo;
+- u_int32_t addr_hi;
+- u_int32_t count_lo;
+- u_int32_t count_hi;
+- u_int32_t byte_count;
+- u_int32_t csr;
+- u_int32_t flag;
++ uint32_t ctl;
++ uint32_t next;
++ uint32_t data_lo;
++ uint32_t data_hi;
++ uint32_t status;
++ uint32_t timestamp;
++ uint16_t csum2;
++ uint16_t csum1;
++ uint16_t csum2_start;
++ uint16_t csum1_start;
++ uint32_t addr_lo;
++ uint32_t addr_hi;
++ uint32_t count_lo;
++ uint32_t count_hi;
++ uint32_t byte_count;
++ uint32_t csr;
++ uint32_t flag;
+ };
+ const struct desc *d = a;
+
+--
+2.25.1
+
--
2.25.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 1/1] package/ethtool: fix builds for older toolchains
2023-01-27 20:14 ` [Buildroot] [PATCH v2 " Vincent Fazio
@ 2023-01-27 20:16 ` Florian Fainelli
2023-01-28 21:31 ` Thomas Petazzoni via buildroot
1 sibling, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2023-01-27 20:16 UTC (permalink / raw)
To: Vincent Fazio, buildroot; +Cc: Matt Weber, Vincent Fazio
On 1/27/2023 12:14 PM, Vincent Fazio wrote:
> Upstream commit 1fa60003a8b8 made a change to headers that broke
> compiles with toolchains using kernel headers prior to 4.11.
>
> Apply the patches slated to address the issue.
>
> Fixes:
> - http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7271a5ec58
>
> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Thanks!
--
Florian
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 1/1] package/ethtool: fix builds for older toolchains
2023-01-27 20:14 ` [Buildroot] [PATCH v2 " Vincent Fazio
2023-01-27 20:16 ` Florian Fainelli
@ 2023-01-28 21:31 ` Thomas Petazzoni via buildroot
2023-01-28 21:34 ` Thomas Petazzoni via buildroot
1 sibling, 1 reply; 9+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-01-28 21:31 UTC (permalink / raw)
To: Vincent Fazio; +Cc: Florian Fainelli, Matt Weber, Vincent Fazio, buildroot
On Fri, 27 Jan 2023 14:14:46 -0600
Vincent Fazio <vfazio@xes-inc.com> wrote:
> Upstream commit 1fa60003a8b8 made a change to headers that broke
> compiles with toolchains using kernel headers prior to 4.11.
>
> Apply the patches slated to address the issue.
>
> Fixes:
> - http://autobuild.buildroot.net/results/e69886deb6ff466db96043388b5dac7271a5ec58
>
> Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
> ---
> Changes v1 -> v2:
> - Add patch for musl based builds
> ---
> package/ethtool/0001-uapi-Bring-in-if.h.patch | 483 ++++++++++++++++++
> ...2-marvell.c-Fix-build-with-musl-libc.patch | 71 +++
> 2 files changed, 554 insertions(+)
> create mode 100644 package/ethtool/0001-uapi-Bring-in-if.h.patch
> create mode 100644 package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 1/1] package/ethtool: fix builds for older toolchains
2023-01-28 21:31 ` Thomas Petazzoni via buildroot
@ 2023-01-28 21:34 ` Thomas Petazzoni via buildroot
2023-01-29 2:21 ` [Buildroot] [External] - " Vincent Fazio
0 siblings, 1 reply; 9+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-01-28 21:34 UTC (permalink / raw)
To: Vincent Fazio; +Cc: Florian Fainelli, Matt Weber, Vincent Fazio, buildroot
On Sat, 28 Jan 2023 22:31:42 +0100
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> > package/ethtool/0001-uapi-Bring-in-if.h.patch | 483 ++++++++++++++++++
> > ...2-marvell.c-Fix-build-with-musl-libc.patch | 71 +++
> > 2 files changed, 554 insertions(+)
> > create mode 100644 package/ethtool/0001-uapi-Bring-in-if.h.patch
> > create mode 100644 package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
>
> Applied to master, thanks.
Sorry, I messed up, I applied the v1 of the patch, which only added the
0001-uapi-Bring-in-if.h.patch patch and not the musl fix.
Could you resubmit the musl fix separately?
In any case, having the musl fix in the patch titled "fix builds for
older toolchains" was not really correct, as the musl fix has nothing
to do with "older toolchains".
Thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [External] - Re: [PATCH v2 1/1] package/ethtool: fix builds for older toolchains
2023-01-28 21:34 ` Thomas Petazzoni via buildroot
@ 2023-01-29 2:21 ` Vincent Fazio
0 siblings, 0 replies; 9+ messages in thread
From: Vincent Fazio @ 2023-01-29 2:21 UTC (permalink / raw)
To: Thomas Petazzoni
Cc: Florian Fainelli, Matt Weber, Vincent Fazio,
buildroot@buildroot.org
Thomas,
> -----Original Message-----
> From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Sent: Saturday, January 28, 2023 3:35 PM
> To: Vincent Fazio <vfazio@xes-inc.com>
> Cc: buildroot@buildroot.org; Florian Fainelli <f.fainelli@gmail.com>; Matt
> Weber <matthew.weber@collins.com>; Vincent Fazio <vfazio@gmail.com>
> Subject: [External] - Re: [Buildroot] [PATCH v2 1/1] package/ethtool: fix
> builds for older toolchains
>
> On Sat, 28 Jan 2023 22:31:42 +0100
> Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
>
> > > package/ethtool/0001-uapi-Bring-in-if.h.patch | 483
> > > ++++++++++++++++++ ...2-marvell.c-Fix-build-with-musl-libc.patch |
> > > 71 +++
> > > 2 files changed, 554 insertions(+)
> > > create mode 100644 package/ethtool/0001-uapi-Bring-in-if.h.patch
> > > create mode 100644
> > > package/ethtool/0002-marvell.c-Fix-build-with-musl-libc.patch
> >
> > Applied to master, thanks.
>
> Sorry, I messed up, I applied the v1 of the patch, which only added the 0001-
> uapi-Bring-in-if.h.patch patch and not the musl fix.
>
> Could you resubmit the musl fix separately?
Done
https://patchwork.ozlabs.org/project/buildroot/patch/20230129021756.2845959-1-vfazio@xes-inc.com/
>
> In any case, having the musl fix in the patch titled "fix builds for older
> toolchains" was not really correct, as the musl fix has nothing to do with
> "older toolchains".
>
Totally fair, it was a quick change I made at the request of the original author. I should have reworded the commit and made sure I marked the previous patch as superseded (odd that it wasn't automatically marked though).
> Thanks!
>
> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel
> engineering and training https://bootlin.com
> CAUTION: This email originated from outside of the organization. Do not click
> links or open attachments unless you recognize the sender and know the
> content is safe.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-01-29 2:36 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-26 18:50 [Buildroot] [PATCH 1/1] package/ethtool: fix builds for older toolchains Vincent Fazio
2023-01-26 22:22 ` Florian Fainelli
2023-01-26 23:12 ` [Buildroot] [External] - " Vincent Fazio
2023-01-27 0:10 ` Florian Fainelli
2023-01-27 20:14 ` [Buildroot] [PATCH v2 " Vincent Fazio
2023-01-27 20:16 ` Florian Fainelli
2023-01-28 21:31 ` Thomas Petazzoni via buildroot
2023-01-28 21:34 ` Thomas Petazzoni via buildroot
2023-01-29 2:21 ` [Buildroot] [External] - " Vincent Fazio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox