Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ ports=(
"lsb_vsx"
"heatshrink"
"smolrtsp"
"ethtool"
)


Expand Down
42 changes: 42 additions & 0 deletions ethtool/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env bash

set -e

version="${PORTS_ETHTOOL_VERSION:-6.14}"
archive_filename="ethtool-${version}.tar.gz"

PREFIX_PORT_SRC="${PREFIX_PORT_BUILD}/${version}"
b_port_download "https://git.kernel.org/pub/scm/network/ethtool/ethtool.git/snapshot/" "${archive_filename}"

if [ ! -d "${PREFIX_PORT_SRC}" ]; then
echo "Extracting sources from ${archive_filename}"
mkdir -p "${PREFIX_PORT_SRC}"
tar -axf "${PREFIX_PORT}/${archive_filename}" --strip-components 1 -C "${PREFIX_PORT_SRC}"
fi

b_port_apply_patches "${PREFIX_PORT_SRC}" "${version}"

#
# Autogen
#
if [ ! -f "${PREFIX_PORT_SRC}/configure" ]; then
( cd "${PREFIX_PORT_SRC}" && "${PREFIX_PORT_SRC}/autogen.sh" )
fi

#
# Configure
#
if [ ! -f "${PREFIX_PORT_SRC}/Makefile" ]; then
( cd "${PREFIX_PORT_SRC}" && "${PREFIX_PORT_SRC}/configure" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
--host="${HOST}" --prefix="${PREFIX_PORTS_INSTALL}" --disable-netlink )
fi

#
# Make
#
make -C "$PREFIX_PORT_SRC"
make -C "$PREFIX_PORT_SRC" install

cp -a "$PREFIX_PORT_SRC/ethtool" "$PREFIX_PROG/ethtool"
$STRIP -o "$PREFIX_PROG_STRIPPED/ethtool" "$PREFIX_PROG/ethtool"
b_install "$PREFIX_PORTS_INSTALL/ethtool" /usr/bin/
132 changes: 132 additions & 0 deletions ethtool/patches/6.14/01-replace-symbols.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
diff --git a/ethtool.c b/ethtool.c
index 327a2da..f7639d4 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -47,9 +47,17 @@
#include <netinet/in.h>
#include <arpa/inet.h>

+#ifdef __phoenix__
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/sockios.h>
+#include "uapi/linux/netlink.h"
+#define AF_NETLINK 16
+#else
#include <linux/ioctl.h>
#include <linux/sockios.h>
#include <linux/netlink.h>
+#endif

#include "common.h"
#include "netlink/extapi.h"
diff --git a/internal.h b/internal.h
index 6947ec1..f10c426 100644
--- a/internal.h
+++ b/internal.h
@@ -24,7 +24,6 @@
#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"
#include "json_print.h"
@@ -42,8 +41,17 @@ typedef uint16_t u16;
typedef uint8_t u8;
typedef int32_t s32;

+#ifdef __phoenix__
+#include <phoenix/ethtool.h>
+#include "uapi/linux/net_tstamp.h"
+#include <sys/socket.h>
+#include <limits.h>
+#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+#else
#include <linux/ethtool.h>
#include <linux/net_tstamp.h>
+#include <linux/if.h>
+#endif

#if __BYTE_ORDER == __BIG_ENDIAN
static inline u16 cpu_to_be16(u16 value)
diff --git a/rxclass.c b/rxclass.c
index 1e202cc..c1d1581 100644
--- a/rxclass.c
+++ b/rxclass.c
@@ -8,7 +8,13 @@
#include <string.h>
#include <errno.h>

+#ifdef __phoenix__
+#include <sys/socket.h>
+#include <sys/sockios.h>
+#else
#include <linux/sockios.h>
+#endif
+
#include <arpa/inet.h>
#include "internal.h"

diff --git a/uapi/linux/net_tstamp.h b/uapi/linux/net_tstamp.h
index 383213d..5dbbf0f 100644
--- a/uapi/linux/net_tstamp.h
+++ b/uapi/linux/net_tstamp.h
@@ -10,8 +10,15 @@
#ifndef _NET_TIMESTAMPING_H
#define _NET_TIMESTAMPING_H

+#ifdef __phoenix__
+#include "types.h"
+#include "socket.h" /* for SO_TIMESTAMPING */
+
+typedef int __kernel_clockid_t;
+#else
#include <linux/types.h>
#include <linux/socket.h> /* for SO_TIMESTAMPING */
+#endif

/*
* Possible type of hwtstamp provider. Mainly "precise" the default one
diff --git a/uapi/linux/netlink.h b/uapi/linux/netlink.h
index ff64eb1..aca203c 100644
--- a/uapi/linux/netlink.h
+++ b/uapi/linux/netlink.h
@@ -2,9 +2,15 @@
#ifndef __LINUX_NETLINK_H
#define __LINUX_NETLINK_H

+#ifdef __phoenix__
+#include "const.h"
+#include "socket.h"
+#include "types.h"
+#else
#include <linux/const.h>
#include <linux/socket.h> /* for __kernel_sa_family_t */
#include <linux/types.h>
+#endif

#define NETLINK_ROUTE 0 /* Routing/device hook */
#define NETLINK_UNUSED 1 /* Unused number */
diff --git a/uapi/linux/types.h b/uapi/linux/types.h
index 2518741..7600a6e 100644
--- a/uapi/linux/types.h
+++ b/uapi/linux/types.h
@@ -2,11 +2,17 @@
#ifndef _LINUX_TYPES_H
#define _LINUX_TYPES_H

+#ifdef __phoenix__
+#include <stdint.h>
+#else
#include <asm/types.h>
+#endif

#ifndef __ASSEMBLY__

+#ifndef __phoenix__
#include <linux/posix_types.h>
+#endif

#ifdef __SIZEOF_INT128__
typedef __signed__ __int128 __s128 __attribute__((aligned(16)));
Loading
Loading