Re: [LEDE-DEV] [RFC] iproute2: update to v4.10.0
> "Syrone" == Syrone Wongwrites: Syrone> It seems this chunk is redundant - DEPENDS:=+kmod-sched-core + Syrone> DEPENDS:=+kmod-sched-core iptables Syrone> If you really want to add iptables as runtime dependency, it Syrone> should be `+iptables`. Syrone, afaict, tc dlopen()'s iptables .so's, which implies that iptables is needed at runtime, at least to support the associated features. I didn't get circular dependency problems with this either. Please test: diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index 65ae5cb457..17f28f0d16 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -19,6 +19,7 @@ PKG_BUILD_PARALLEL:=1 PKG_LICENSE:=GPL-2.0 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) +PKG_BUILD_DEPENDS:=iptables include $(INCLUDE_DIR)/package.mk @@ -44,7 +45,7 @@ Package/ip-full:=$(call Package/iproute2/Default,full,Full,ip) define Package/tc $(call Package/iproute2/Default) TITLE:=Traffic control utility - DEPENDS:=+kmod-sched-core + DEPENDS:=+kmod-sched-core +iptables endef define Package/genl -- Russell Senior, President russ...@personaltelco.net ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
Re: [LEDE-DEV] [RFC] iproute2: update to v4.10.0
> "Russell" == Russell Seniorwrites: Please test: diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index 65ae5cb457..3a4b114039 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -19,6 +19,7 @@ PKG_BUILD_PARALLEL:=1 PKG_LICENSE:=GPL-2.0 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) +PKG_BUILD_DEPENDS:=iptables include $(INCLUDE_DIR)/package.mk @@ -44,7 +45,7 @@ Package/ip-full:=$(call Package/iproute2/Default,full,Full,ip) define Package/tc $(call Package/iproute2/Default) TITLE:=Traffic control utility - DEPENDS:=+kmod-sched-core + DEPENDS:=+kmod-sched-core iptables endef define Package/genl ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] [PATCH] libubox: Fix -Wsign-compare warnings
-Wsign-compare is part of the -Wextra series of warnings so it's worth fixing. The issues are mainly sign conversion ones. --- base64.c | 6 +++--- blob.c | 12 ++-- blob.h | 8 blobmsg.c | 2 +- blobmsg_json.c | 4 ++-- jshn.c | 2 +- json_script.c | 16 +--- kvlist.c | 2 +- 8 files changed, 27 insertions(+), 25 deletions(-) diff --git a/base64.c b/base64.c index 4186ce8..f4cb5c6 100644 --- a/base64.c +++ b/base64.c @@ -142,7 +142,6 @@ int b64_encode(const void *_src, size_t srclength, size_t datalength = 0; u_char input[3] = {0}; u_char output[4]; - int i; while (2 < srclength) { input[0] = *src++; @@ -167,7 +166,7 @@ int b64_encode(const void *_src, size_t srclength, if (0 != srclength) { /* Get what's left. */ input[0] = input[1] = input[2] = '\0'; - for (i = 0; i < srclength; i++) + for (size_t i = 0; i < srclength; i++) input[i] = *src++; output[0] = input[0] >> 2; @@ -200,7 +199,8 @@ int b64_decode(const void *_src, void *dest, size_t targsize) { const char *src = _src; unsigned char *target = dest; - int tarindex, state, ch; + int state, ch; + size_t tarindex; u_char nextbyte; char *pos; diff --git a/blob.c b/blob.c index 03d5e9c..45c3204 100644 --- a/blob.c +++ b/blob.c @@ -186,7 +186,7 @@ blob_nest_end(struct blob_buf *buf, void *cookie) buf->head = attr; } -static const int blob_type_minlen[BLOB_ATTR_LAST] = { +static const size_t blob_type_minlen[BLOB_ATTR_LAST] = { [BLOB_ATTR_STRING] = 1, [BLOB_ATTR_INT8] = sizeof(uint8_t), [BLOB_ATTR_INT16] = sizeof(uint16_t), @@ -222,18 +222,18 @@ blob_parse(struct blob_attr *attr, struct blob_attr **data, const struct blob_at { struct blob_attr *pos; int found = 0; - int rem; + unsigned int rem; memset(data, 0, sizeof(struct blob_attr *) * max); blob_for_each_attr(pos, attr, rem) { - int id = blob_id(pos); - int len = blob_len(pos); + unsigned int id = blob_id(pos); + unsigned int len = blob_len(pos); - if (id >= max) + if ((int)id >= max) continue; if (info) { - int type = info[id].type; + unsigned int type = info[id].type; if (type < BLOB_ATTR_LAST) { if (!blob_check_type(blob_data(pos), len, type)) diff --git a/blob.h b/blob.h index a092f5d..3f069da 100644 --- a/blob.h +++ b/blob.h @@ -154,25 +154,25 @@ blob_get_u64(const struct blob_attr *attr) static inline int8_t blob_get_int8(const struct blob_attr *attr) { - return blob_get_u8(attr); + return (int8_t)blob_get_u8(attr); } static inline int16_t blob_get_int16(const struct blob_attr *attr) { - return blob_get_u16(attr); + return (int16_t)blob_get_u16(attr); } static inline int32_t blob_get_int32(const struct blob_attr *attr) { - return blob_get_u32(attr); + return (int32_t)blob_get_u32(attr); } static inline int64_t blob_get_int64(const struct blob_attr *attr) { - return blob_get_u64(attr); + return (int64_t)blob_get_u64(attr); } static inline const char * diff --git a/blobmsg.c b/blobmsg.c index c2bb717..1eddf23 100644 --- a/blobmsg.c +++ b/blobmsg.c @@ -67,7 +67,7 @@ int blobmsg_check_array(const struct blob_attr *attr, int type) { struct blob_attr *cur; bool name; - int rem; + unsigned int rem; int size = 0; switch (blobmsg_type(attr)) { diff --git a/blobmsg_json.c b/blobmsg_json.c index ca9dd1a..c46890c 100644 --- a/blobmsg_json.c +++ b/blobmsg_json.c @@ -146,7 +146,7 @@ static bool blobmsg_puts(struct strbuf *s, const char *c, int len) static void add_separator(struct strbuf *s) { const char *indent_chars = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; - int len; + size_t len; if (!s->indent) return; @@ -280,7 +280,7 @@ static void blobmsg_format_json_list(struct strbuf *s, struct blob_attr *attr, i { struct blob_attr *pos; bool first = true; - int rem = len; + unsigned int rem = len; blobmsg_puts(s, (array ? "[" : "{" ), 1); s->indent_level++; diff --git a/json_script.c b/json_script.c index 463aac8..8fb082e 100644 --- a/json_script.c +++ b/json_script.c @@ -95,7 +95,7 @@ const char *json_script_find_var(struct json_script_ctx *ctx, struct blob_attr * const char *name) { struct blob_attr *cur; - int rem; + unsigned int rem; blobmsg_for_each_attr(cur, vars, rem) { if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING)
[LEDE-DEV] [PATCH] usock: Fix some types resulting in type conversion warnings.
A few types were changed to adhere to the particular API. Signed-off by: Rosen Penev--- usock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usock.c b/usock.c index 0ce5390..c159a76 100644 --- a/usock.c +++ b/usock.c @@ -33,7 +33,7 @@ #include "usock.h" #include "utils.h" -static void usock_set_flags(int sock, unsigned int type) +static void usock_set_flags(int sock, int type) { if (!(type & USOCK_NOCLOEXEC)) fcntl(sock, F_SETFD, fcntl(sock, F_GETFD) | FD_CLOEXEC); @@ -42,7 +42,7 @@ static void usock_set_flags(int sock, unsigned int type) fcntl(sock, F_SETFL, fcntl(sock, F_GETFL) | O_NONBLOCK); } -static int usock_connect(int type, struct sockaddr *sa, int sa_len, int family, int socktype, bool server) +static int usock_connect(int type, struct sockaddr *sa, socklen_t sa_len, int family, int socktype, bool server) { int sock; @@ -103,7 +103,7 @@ usock_inet_notimeout(int type, struct addrinfo *result, void *addr) return -1; } -static int poll_restart(struct pollfd *fds, int nfds, int timeout) +static int poll_restart(struct pollfd *fds, nfds_t nfds, int timeout) { struct timespec ts, cur; int msec = timeout % 1000; -- 2.9.3 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] [PATCH] uloop: Fix new_handler type
sa_handler is of type void (*)(int). Update new_handler to match. Signed-off by: Rosen Penev--- uloop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uloop.c b/uloop.c index 26fef32..b42e601 100644 --- a/uloop.c +++ b/uloop.c @@ -437,7 +437,7 @@ static void uloop_install_handler(int signum, void (*handler)(int), struct sigac static void uloop_ignore_signal(int signum, bool ignore) { struct sigaction s; - void *new_handler = NULL; + void (*new_handler)(int) = NULL; sigaction(signum, NULL, ); -- 2.9.3 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] [PATCH RFC] ar8216: (try to) implement get_port_stats
Hello, TP-LINK, in their new TL-WR1043ND v4, for some reason wired the ethernet LEDs not to the AR8337, but to the QCA956x SoC instead. This means that the switch LED trigger needs to be used for all of the ethernet LEDs (4 x LAN and 1 x WAN), like on the AR9341 when its internal switch is used. But the ar8216/8327/8337 switch driver does not implement the get_port_stats function, so the LEDs are lit but do not blink when traffic passes through the ports. (By the way, if I remember well, the stock firmware of this router does not make those LEDs blink either...) I've tried to write the needed function, as you can see in the patch below. The problem is that now a kworker kernel thread is constantly consuming 12-15% of CPU. It stops when I change the trigger on the LEDs to something else via sysfs. So, there is clearly something wrong with it. But what? The implementation for the AR9341 internal switch (in target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c) does it in a quite similar way (it actually polls ALL the switch ports every time data for a single port is requested...), but it uses 0% CPU instead. What do you think? Thank you! Best regards, Vittorio G --- diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index 37877d5..6b3246d 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -49,6 +49,13 @@ extern const struct ar8xxx_chip ar8337_chip; .name = (_n), \ } +enum { + AR8216_MIB_TX_OFFSET = 29, + AR8216_MIB_RX_OFFSET = 14, + AR8236_MIB_TX_OFFSET = 31, + AR8236_MIB_RX_OFFSET = 15, +}; + static const struct ar8xxx_mib_desc ar8216_mibs[] = { MIB_DESC(1, AR8216_STATS_RXBROAD, "RxBroad"), MIB_DESC(1, AR8216_STATS_RXPAUSE, "RxPause"), @@ -394,6 +401,24 @@ ar8xxx_mib_flush(struct ar8xxx_priv *priv) return ar8xxx_mib_op(priv, AR8216_MIB_FUNC_FLUSH); } +static u64 +ar8xxx_mib_fetch_single_port_stat(struct ar8xxx_priv *priv, + const unsigned int base, + const struct ar8xxx_mib_desc *mib) +{ + u64 t; + + t = ar8xxx_read(priv, base + mib->offset); + if (mib->size == 2) { + u64 hi; + + hi = ar8xxx_read(priv, base + mib->offset + 4); + t |= hi << 32; + } + + return t; +} + static void ar8xxx_mib_fetch_port_stat(struct ar8xxx_priv *priv, int port, bool flush) { @@ -410,17 +435,7 @@ ar8xxx_mib_fetch_port_stat(struct ar8xxx_priv *priv, int port, bool flush) mib_stats = >mib_stats[port * priv->chip->num_mibs]; for (i = 0; i < priv->chip->num_mibs; i++) { - const struct ar8xxx_mib_desc *mib; - u64 t; - - mib = >chip->mib_decs[i]; - t = ar8xxx_read(priv, base + mib->offset); - if (mib->size == 2) { - u64 hi; - - hi = ar8xxx_read(priv, base + mib->offset + 4); - t |= hi << 32; - } + u64 t = ar8xxx_mib_fetch_single_port_stat(priv, base, >chip->mib_decs[i]); if (flush) mib_stats[i] = 0; @@ -1001,6 +1016,45 @@ ar8xxx_sw_get_port_link(struct switch_dev *dev, int port, return 0; } +int +ar8xxx_sw_get_port_stats(struct switch_dev *dev, int port, + struct switch_port_stats *stats) +{ + struct ar8xxx_priv *priv = swdev_to_ar8xxx(dev); + const struct ar8xxx_chip *chip = priv->chip; + unsigned int base, tx_offset, rx_offset; + u64 *mib_stats; + + if (!ar8xxx_has_mib_counters(priv)) + return -EOPNOTSUPP; + + if (port >= dev->ports) + return -EINVAL; + + mutex_lock(>mib_lock); + + base = chip->reg_port_stats_start + chip->reg_port_stats_length * port; + mib_stats = >mib_stats[port * chip->num_mibs]; + + if (chip_is_ar8216(priv)) { + tx_offset = AR8216_MIB_TX_OFFSET; + rx_offset = AR8216_MIB_RX_OFFSET; + } else { + tx_offset = AR8236_MIB_TX_OFFSET; + rx_offset = AR8236_MIB_RX_OFFSET; + } + + mib_stats[tx_offset] += ar8xxx_mib_fetch_single_port_stat(priv, base, >chip->mib_decs[tx_offset]); + mib_stats[rx_offset] += ar8xxx_mib_fetch_single_port_stat(priv, base, >chip->mib_decs[rx_offset]); + + stats->tx_bytes = mib_stats[tx_offset]; + stats->rx_bytes = mib_stats[rx_offset]; + + mutex_unlock(>mib_lock); + + return 0; +} + static int ar8xxx_sw_get_ports(struct switch_dev *dev, struct switch_val *val) { @@ -1696,6 +1750,7 @@ static const struct switch_dev_ops ar8xxx_sw_ops = { .apply_config = ar8xxx_sw_hw_apply, .reset_switch = ar8xxx_sw_reset_switch, .get_port_link =
Re: [LEDE-DEV] [PATCH] rules.mk: disable CXX11 ABI with uClibc++
On 2017-03-21 19:13, Stijn Tintel wrote: > GCC 5.1 introduced a new library ABI to conform to the 2011 C++ > standard. This new ABI is enabled by default. This causes compatibility > issues between libraries compiled against libstdc++ and libraries > compiled against uClibc++, as the latter doesn't support this new ABI. > > Solve this by disabling the _GLIBCXX_USE_CXX11_ABI macro when uClibc++ > is selected as the preferred standard C++ library. > > Signed-off-by: Stijn TintelThis should be changed in uclibc++.mk so that it does not affect packages that only use libstdc++ - Felix ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] [PATCH] rules.mk: disable CXX11 ABI with uClibc++
GCC 5.1 introduced a new library ABI to conform to the 2011 C++ standard. This new ABI is enabled by default. This causes compatibility issues between libraries compiled against libstdc++ and libraries compiled against uClibc++, as the latter doesn't support this new ABI. Solve this by disabling the _GLIBCXX_USE_CXX11_ABI macro when uClibc++ is selected as the preferred standard C++ library. Signed-off-by: Stijn Tintel--- rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules.mk b/rules.mk index ed796a5..bf051b7 100644 --- a/rules.mk +++ b/rules.mk @@ -164,7 +164,7 @@ TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH)) TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin) TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION)) -TARGET_CXXFLAGS = $(TARGET_CFLAGS) +TARGET_CXXFLAGS = $(TARGET_CFLAGS) $(if $(CONFIG_USE_UCLIBCXX), -D_GLIBCXX_USE_CXX11_ABI=0) TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS) TARGET_ASFLAGS = $(TARGET_ASFLAGS_DEFAULT) TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -- 2.10.2 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
Re: [LEDE-DEV] [PATCH] libubox: Fix -Wsign-compare and sign conversion warnings
On 29 January 2017 at 09:11, Rosen Penevwrote: > While at it, also add -Wextra and -Wno-unused-parameter to the > CFLAGS. Compile tested on 32 and 64-bit x86. > > Signed-off by: Rosen Penev Sorry for the delay, but I just also compile-tested this ;) With gcc 4.7.2, the following further changes are needed to compile the code. Can you take them and send a v2? Regards, yousong diff --git a/examples/blobmsg-example.c b/examples/blobmsg-example.c index 1c86017..56cac27 100644 --- a/examples/blobmsg-example.c +++ b/examples/blobmsg-example.c @@ -15,7 +15,7 @@ static const char *indent_str = "\t\t\t\t\t\t\t\t\t\t\t\t\t"; static void dump_attr_data(struct blob_attr *data, int indent, int next_indent); static void -dump_table(struct blob_attr *head, int len, int indent, bool array) +dump_table(struct blob_attr *head, size_t len, int indent, bool array) { struct blob_attr *attr; struct blobmsg_hdr *hdr; diff --git a/examples/json_script-example.c b/examples/json_script-example.c index 4d252a9..afb419e 100644 --- a/examples/json_script-example.c +++ b/examples/json_script-example.c @@ -1,7 +1,11 @@ #include #include -#include +#ifdef JSONC +#include +#else +#include +#endif #include "blobmsg.h" #include "blobmsg_json.h" #include "json_script.h" @@ -14,7 +18,7 @@ static void handle_command(struct json_script_ctx *ctx, const char *name, struct blob_attr *data, struct blob_attr *vars) { struct blob_attr *cur; - int rem; + size_t rem; fprintf(stdout, "%s", name); blobmsg_for_each_attr(cur, data, rem) diff --git a/json_script.c b/json_script.c index 2d720ae..ae1fa34 100644 --- a/json_script.c +++ b/json_script.c @@ -121,8 +121,6 @@ json_get_tuple(struct blob_attr *cur, struct blob_attr **tb, int t1, int t2) { static struct blobmsg_policy expr_tuple[3] = { { .type = BLOBMSG_TYPE_STRING }, - {}, - {}, }; expr_tuple[1].type = t1; -- 2.6.4 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
Re: [LEDE-DEV] [RFC] iproute2: update to v4.10.0
On 21 March 2017 at 03:54, Russell Seniorwrote: > The new ip-tiny ipk is 20k bigger than the old version (~79k vs ~100k). > There may be some additional pruning possible to get it back down to a > similar size. It will be really nice if the size can be squeezed for at least the ip-tiny package. Are you already working on this? The other thing is that adding iptables as a build dependency should be the way to go if only header files of that packages are needed to build iproute2. Regards, yousong ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] Kodi feed
Hi all, After a minor cleanup, I published [0] Kodi and dependencies for running on the brcm2708 target (Raspberry Pi). Dependencies for this are in the kodi branches of my LEDE staging tree [1], and my fork of the packages feed [2]. I am currently working on x86 support, but it's taking longer than expected so I decided to already post what's working. If you want to contribute, please contact me first (preferably on IRC), to avoid duplicate effort. Several packages have a hard dependency on libstdcpp. This is either due to uClibc++ not supporting shared_ptr (kodi, libcec), or to avoid linking problems (taglib, tinyxml). The Kodi patch 900-musl-compat.patch is ugly, especially the "iofile.h" part. Unfortunately the Kodi patch from Alpine that addresses this issue [3] doesn't apply to Kodi 17, so I went for a quick & dirty fix. Suggestions for a clean fix that can be submitted upstream are very welcome. Thanks, Stijn [0] https://github.com/stintel/lede-wip.git [1] https://git.lede-project.org/lede/stintel/staging.git [2] https://github.com/stintel/openwrt-packages.git [3] http://git.alpinelinux.org/cgit/aports/tree/community/kodi/fix-fileemu.patch ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] [PATCH] kernel: video: add kmod-drm-vc4 package for brcm2708 target
From: Rafał MiłeckiIt includes vc4 driver for Broadcom VideoCore IV GPU. Signed-off-by: Rafał Miłecki --- package/kernel/linux/modules/video.mk | 18 ++ 1 file changed, 18 insertions(+) diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index a93c0b89f2..f595f51890 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -279,6 +279,24 @@ endef $(eval $(call KernelPackage,drm-imx-ldb)) +define KernelPackage/drm-vc4 + SUBMENU:=$(VIDEO_MENU) + TITLE:=Broadcom VC4 Graphics + DEPENDS:=@TARGET_brcm2708 +kmod-drm + KCONFIG:=CONFIG_DRM_VC4 + FILES:= \ + $(LINUX_DIR)/drivers/gpu/drm/vc4/vc4.ko \ + $(LINUX_DIR)/drivers/gpu/drm/drm_kms_helper.ko + AUTOLOAD:=$(call AutoProbe,vc4) +endef + +define KernelPackage/drm-vc4/description + Direct Rendering Manager (DRM) support for Broadcom VideoCore IV GPU + used in BCM2835, BCM2836 and BCM2837 SoCs (e.g. Raspberry Pi). +endef + +$(eval $(call KernelPackage,drm-vc4)) + # # Video Capture -- 2.11.0 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev