Commit graph

427 commits

Author SHA1 Message Date
Christian Lamparter
e9455c561d generic: ar8216: improve ar8xxx_is_possible check
The commit "generic: ar8216: add sanity check to ar8216_probe"
(774da6c7a4) stated that PHY IDs
should be checked at address 0-4. However, the PHY 4 was
never check by the loop. This patch extends the check to be
similar to the Atheors SDK. It tries all 4 ports and skips
unconnected PHYs if necessary. If it cannot find any familiar
PHYs, it will prevent the phy driver from initializing.

This patch is necessary for the C-60. It doesn't have a
PHY at port 3, so this caused the check in ar8xxx_is_possible
to fail. As a result, the ethernet ports on the C-60 didn't
work.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2016-10-15 11:36:50 +02:00
Mathias Kresin
634d690d74 kernel: mtdsplit_uimage: fix Edimax parser
According to the author the code was added to in preparation for adding
support for a new board. The patch for the board was never send and the
code never really tested.

The edimax header starting with the edimax magic is put in front of the
uImage header. There is no special uImage header used. Means, default
magic and the type field is set to kernel as usual.

Signed-off-by: Mathias Kresin <dev@kresin.me>

edimax parser fix
2016-10-15 09:01:45 +02:00
Mathias Kresin
35073d47bb kernel: mtdsplit_uimage: fix rootfs offset
The return value of the find_header function need to be added to the
uimage_size, otherwise mtd_find_rootfs_from() might search for a rootfs
within a custom header and fails.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-10-15 09:01:45 +02:00
Jonas Gorski
167763837b mvsw61xx: enable SerDes on 6176 if required
If the cpu port is connected through SGMII we need to enable SerDes for
it to work.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Acked-by: Felix Fietkau <nbd@nbd.name>
2016-09-26 13:04:04 +02:00
Jonas Gorski
92dcaecee3 mvsw61xx: reset phys on probe to enable switch ports on clearfog pro
The clearfog u-boot does not initialize the switch at all, so we need to
power up the phys ourselves.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Acked-by: Felix Fietkau <nbd@nbd.name>
2016-09-26 13:03:58 +02:00
Christian Lamparter
e9401a2335 kernel: owl-loader for delayed Atheros ath9k fixup
Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway)
need to be able to initialize the PCIe wifi device. Normally, this is done
during the early stages of booting linux, because the necessary init code
is read from the memory mapped SPI and passed to pci_enable_ath9k_fixup.
However,this isn't possible for devices which have the init code for the
Atheros chip stored on NAND in an UBI volume. Hence, this module can be
used to initialze the chip when the user-space is ready to extract the
init code.

Martin Blumenstingl made a few fixes and added support for lantiq:
kernel: owl-loader: add support for OWL emulation PCI devices
kernel: owl-loader: don't re-scan the bus when ath9k_pci_fixup failed
kernel: owl-loader: use dev_* instead of pr_* logging functions
kernel: owl-loader: auto-generate the eeprom filename as fallback
kernel: owl-loader: add a debug message when swapping the eeprom data
kernel: owl-loader: add missing newlines in log messages
kernel: owl-loader: add support for the lantiq platform

These patches have been integrated. Thanks!

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
2016-09-19 19:32:35 +02:00
Rafał Miłecki
8072223347 kernel: b53: force BCM531x5 port 5 link state if enabled
Some devices (e.g. Tenda AC9 based on BCM47189B0) have BCM53125 with
port 5 connected to the second Ethernet interface on the SoC. In such
case there is no PHY and we need to force link manually.

This assumes port 5 can be marked as enabled for such devices. It's not
implemented yet unfortunately.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2016-09-08 23:03:46 +02:00
John Crispin
99a1888287 swconfig: revert the portmapping patches, they seem to cause a segfault
Revert "kernel/swconfig: remove obsolete portmapping feature from swconfig"

This reverts commit 675407baa4.

Revert "swconfig: remove obsolete portmapping feature"

This reverts commit fca1eb349e.

Signed-off-by: John Crispin <john@phrozen.org>
2016-08-16 10:20:01 +02:00
John Crispin
675407baa4 kernel/swconfig: remove obsolete portmapping feature from swconfig
Signed-off-by: John Crispin <john@phrozen.org>
2016-08-15 15:18:35 +02:00
Mathias Kresin
7f22580078 kernel: adm6996: set carrier status
Due to the missing carrier status set, the interface wasn't usable on a
BTHOMEHUB2B after ip link down and up as it is done in preinit.

Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-08-10 03:04:08 +02:00
Felix Fietkau
577f873daf kernel: remove unused morse led trigger driver
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-08-04 20:53:02 +02:00
Felix Fietkau
ea6a3be62e kernel: silence a false positive uninitialized variable warning
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-08-01 09:52:17 +02:00
Rafał Miłecki
846eca673f b53: allow ports with higher numbers than CPU port
Our code was assuming CPU port uses the highest number. My BCM53573
device has eth0 connected to port 8 and eth1 connected to port 5. While
working on support for it I tried to:
1) Enable all ports (including port 8)
2) Set CPU port to 5

I noticed port 8 is not accessible anymore. It was just a development
process but it seems like something worth fixing anyway.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Jonas Gorski <jonas.gorski@gmail.com>
2016-07-24 06:38:30 +02:00
Felix Fietkau
8fb89f7e73 ledtrig-usbdev: fix duplicate match detection
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-07-23 10:30:45 +02:00
Rafał Miłecki
5ea8756766 ledtrig-usbdev: use upstream function for iterating USB devices
This will allow us to drop LEDE patch adding usb_find_device_by_name.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
2016-07-20 10:13:50 +02:00
Rafał Miłecki
cf6d9d97fb kernel: rename B53 symbols to avoid upstream kernel conflict
In kernel 4.7 there is upstreamed b53 driver using (mostly?) the same
symbols as our b53 does. Change our symbols so both drivers can coexist
in kernel tree.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Jonas Gorski <jonas.gorski@gmail.com>
2016-06-20 08:00:14 +02:00
Rafał Miłecki
1aca291214 kernel: mtdsplit: calculate kernel partition precisely for Seama
So far "kernel" partition didn't contain just a kernel. It also included
Seama header and meta data. This was making kernel update complex and it
wasn't trivial to read kernel size.
Fix it by making "kernel" parition contain just a kernel image.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
2016-06-20 07:58:29 +02:00
Felix Fietkau
37cfc23cb7 kernel: require admin permissions for swconfig set operations
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-06-12 12:03:20 +02:00
Jo-Philipp Wich
442db0d6d8 kernel: deny swconfig set requests for unprivileged users
The swconfig kernel infrastructure fails to do any permissions checks when
changing settings. As such an ordinary user account on a device with a
switch can change switch settings without any special permissions.
Routers generally have few non-admin users so this isn't a big hole, but it
is a security hole. Likely the greatest danger is for multifunction devices
which have a lot of extra daemons, compromising a low-security daemon would
allow one to modify switch settings and cause the router/switch to appear to
lock-up (or cause other sorts of troublesome nyetwork behavior).

Implement a check for CAP_NET_ADMIN in swconfig_set_attr() and deny any
requests originating from user contexts lacking this capability.

Reported-by: Elliott Mitchell <ehem+openwrt@m5p.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-06-11 00:53:19 +02:00
Felix Fietkau
7eeb254cc4 treewide: replace nbd@openwrt.org with nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-06-07 08:58:42 +02:00
John Crispin
3a03c08c82 AR8216: improve mmd register access
Combine all bus operations for one MMD access in one function.
Protecting all these bus operations with one lock also helps
to avoid potential issues due to bus operations intercepting
the register and data write.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 48914
2016-03-04 08:33:33 +00:00
John Crispin
d3776bdfc9 AR8216: make ARL age time configurable
The default TTL for address resolution table entries is 5 minutes
for all members of the AR8216 family. This can cause issues if
e.g. Wifi clients roam to another AP and their MAC appears on
another switch port suddenly. Then the client may not be reachable
until the old ARL entry expires.
I would have expected the switch to invalidate old entries if it
detects the same MAC on another port. But that's not the case.

Therefore make the TTL for ARL entries configurable.
The effective TTL will always be a multiple of 7 seconds.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 48913
2016-03-04 08:33:30 +00:00
John Crispin
4eaa750089 AR8216: remove redundant port number in MIB header line
The line before includes the port number anyway so there's no need
to duplicate the port number in the MIB info header.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 48912
2016-03-04 08:33:28 +00:00
John Crispin
f03ec2baf7 AR8216: complement MIB counters with info in GiB / MiB / KiB
The decimal values especially for TxByte and RxGoodByte are hard to read
once bigger amounts of data have been transferred.
Therefore complement the decimal values with info in GiB / MiB / KiB.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 48911
2016-03-04 08:33:25 +00:00
John Crispin
76e1efc042 AR8216: don't display MIB counters if all are empty
For unused switch ports all MIB values are zero. Displaying ~40 empty
MIB counters is just confusing and makes it hard to read the output of
swconfig dev <dev> show.
Therefore, if all MIB counters for a port are zero, just display
an info that the MIB counters are empty.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 48910
2016-03-04 08:33:22 +00:00
Felix Fietkau
d527b82862 switch: allow Ethernet port LEDs to show specific port speeds only
This patch adds speed_mask special file to LEDs connected to switch ports
via 'switch' trigger. It allows to choose which speeds to signal when link
is up. If router has more than one LED per port, they may light up
differently depending on how fast connection is. Default setting is 'all
speeds' so backward compatibility with system scripts (for example uci) is
maintained.

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>

SVN-Revision: 48775
2016-02-25 13:31:26 +00:00
Felix Fietkau
f61a80444c switch: make LED port_mask file write handler use kstrtoul() function
This patch changes swconfig_trig_port_mask_store() handler to utilize
kstrtoul() function instead of call to obsolete simple_strtoul(). Thanks
to this change, new handler takes less memory and makes port_mask special
file accept not only hexadecimal, but also decimal and octal numbers.

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>

SVN-Revision: 48774
2016-02-25 13:31:23 +00:00
Rafał Miłecki
319863f60e kernel: mtdsplit: support uimage with UBI
This patch adds uimage firmware split support for ubi.

Signed-off-by: YounJae Rho <luxflow@live.com>

SVN-Revision: 48755
2016-02-24 22:43:16 +00:00
Rafał Miłecki
1a57ce0c03 kernel: mtdsplit: add missing digest field to Seama header
Seama format has 2 similar headers: container (seal) header and entity
header. The first one has size always set to 0 and doesn't contain MD5
digest.

When dealing with Seama on a flash we deal directly with an entity. You
can see mtdsplit_parse_seama reads from offset 0 and expects entity to
be there. Seama container is used by bootloader / interface only which
extract entity out of it and flash it.

That said we should fix our header struct. This is important as we
calculate possible rootfs offset assuming it may be placed right after
Seama entity. So far calculate offset was always 16B too low.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48754
2016-02-23 14:40:40 +00:00
Rafał Miłecki
6831bac31f b53: support setting port link
When dealing with Broadcom hardware we can simply use swconfig's generic
helper, we just need to do some validation of requested state.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48623
2016-02-03 09:33:56 +00:00
Rafał Miłecki
b3c3542515 b53: provide PHY access to swconfig
Thanks to this change swconfig can access port PHYs e.g. when setting
port link state with a generic helper.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48622
2016-02-03 09:33:50 +00:00
Rafał Miłecki
19b9e14c47 swconfig: add (PHY) generic helper setting port link
It's quite common for switches to have PHY per port so adding a generic
helper setting link state will help many drivers. It just needs an API
to access PHYs which this patch also adds.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48621
2016-02-03 09:33:38 +00:00
Rafał Miłecki
9220dd5d36 kernel: mtdsplit: support Seama entity with UBI
Some D-Link routers (e.g. DIR-885L) have NAND and use Seama format. It
means OpenWrt will want to have UBI in Sseama entity and should be able
to detect it.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48600
2016-02-01 12:41:53 +00:00
Rafał Miłecki
4156f292c1 kernel: mtdsplit: detect UBI partition when looking for rootfs
This allows mtdsplit parsers work with UBI which is very popular on
NAND flases.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48599
2016-02-01 12:41:47 +00:00
Rafał Miłecki
e1491b341b kernel: mtdsplit: modify rootfs helpers to provide partition type
Our mtdsplit parsers may want to create partition with name choice based
on partition file system (e.g. SquashFS vs. JFFS2). This patch allows
passing extra argument pointing to variable that will be set properly.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48598
2016-02-01 12:41:41 +00:00
Rafał Miłecki
02abeb3b0a kernel: mtdsplit: document Seama splitter a bit
Rename kernel_size variable as it includes whole entity size, not just a
kernel size. Also update comments to match it and describe better what
are we checking/looking for.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48480
2016-01-25 07:18:47 +00:00
Jonas Gorski
a9b4952be1 swconfig: simplify init code
Directly return the return value of genl_register_family_with_ops()
instead of storing it in a temporary variable, then returning it.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 48472
2016-01-24 12:36:06 +00:00
Jonas Gorski
38719ecca4 swconfig: drop linux < 3.13 code paths
The oldest kernel we support is 3.18, no need to keep code paths
for older kernels.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 48471
2016-01-24 12:35:59 +00:00
John Crispin
ed72c5f846 ar71xx: add support for Netgear WPN824N
Add support for Netgear WPN824N.
Hardware specs:
  * AR7240, 4 LAN ports, 1 WAN port
  * AR9285 WLAN
  * 32 MB RAM
  * 4 MB Flash
  * 16 LEDs (LAN, WAN and Power/Status contain two LEDs for dual color
    effect)
  * 3 Buttons (not supported)

Signed-off-by: Hartmut Knaack <knaack.h@gmx.de>

SVN-Revision: 48356
2016-01-19 10:16:04 +00:00
Jonas Gorski
2b3b4c95f1 b53: update header register difinitions
BCM531x5 has two pontential cpu ports, and header mode can be enabled
independently on both.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 48302
2016-01-18 10:46:47 +00:00
Felix Fietkau
f8d2ec6e9d ar8327: add IGMP Snooping support
This add support for IGMP Snooping on atheros switches (disabled by default),
which avoids flooding the network with multicast data.

Tested on TL-WDR4300: disabling IGMP Snooping results in multicast flooding
on each specific port, enabling it back again prevents each port from
receiving all multicast packets.

Partially based on: http://patchwork.ozlabs.org/patch/418122/

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

SVN-Revision: 48268
2016-01-17 10:42:46 +00:00
Felix Fietkau
7703e14bc4 kernel: mtdsplit_squashfs: Align with the erase-block size
On most image types the rootfs ends at an erase-block. However, at least
with brnImages this is not the case: while the partitions are aligned
with the erase-block size there is a 12 byte footer at the end of the
partition which must not be touched by any filesystem. This lead to a
rootfs_data partition which was not aligned properly (and thus ended up
being readonly):
	0x000000480000-0x00000085a800 : "rootfs_data" (128 KiB EB)

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

SVN-Revision: 48263
2016-01-17 10:41:30 +00:00
Felix Fietkau
651083bbd9 kernel: mtdsplit: add support for EVA images
This allows splitting EVA images (usually found in fritz devices). The
firmware will be split into a kernel and a separate rootfs partition.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

SVN-Revision: 48262
2016-01-17 10:41:08 +00:00
Felix Fietkau
bdd2772f1d kernel: mtdsplit: add support for brnImages
This adds brnImage (used with the brnboot bootloader) firmware parsing
support. brnboot verifies the integrity of the firmware stored on the
"Code Image" partitions by looking at the 12 byte footer at the very end
of the partition. This footer contains the checksum of the original
brnImage (kernel + rootfs/squashfs) and must not be touched (by our JFFS2
rootfs_data - otherwise the image will not be bootable anymore).

Big thanks to Mathias Kresin for analyzing the brnImage structure and
finding out the information how to keep images valid even when adding a
nested rootfs_data partition.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

SVN-Revision: 48261
2016-01-17 10:40:51 +00:00
Rafał Miłecki
5f69279dd6 swconfig: add API for setting port link speed
Some switches can force link speed for a port. Let's add API that will
allow drivers to export this feature.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48142
2016-01-06 18:32:21 +00:00
Rafał Miłecki
b836a7c29d ledtrig-netdev: don't stop timer on events for different interfaces
This fixes regression introduced in my recent ledtrig-netdev commit.
Events triggered by different interfaces were stopping timer so it
wasn't working for tx/rx mode.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48072
2016-01-02 20:38:56 +00:00
John Crispin
df165974c3 ledtrig-netdev: add support for renamed devices
The ppp0 interface is renamed after the connection is established. Due
to a missing NETDEV_REGISTER event, the ledtrig-netdev isn't aware of
the renamed interface and literally ignores the device
(no tx/rx indication, led isn't switched off with 'ifdown wan').

Signed-off-by: Mathias Kresin <openwrt@kresin.me>

SVN-Revision: 48048
2016-01-01 21:19:41 +00:00
John Crispin
71cd537a8a swconfig: switch kernel PORT_LINK support to SWITCH_TYPE_LINK
As explained earlier, using SWITCH_TYPE_LINK gives more flexibility,
it doesn't require e.g. string parsing to read some data.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 47999
2015-12-23 19:25:02 +00:00
John Crispin
67e10d757f swconfig: add SWITCH_TYPE_LINK and support sending link info to user space
So far we were sending link data as a string. It got some drawbacks:
1) Didn't allow writing clean user space apps reading link state. It was
   needed to do some screen scraping.
2) Forced whole PORT_LINK communication to be string based. Adding
   support for *setting* port link required passing string and parting
   it in the kernel space.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 47997
2015-12-23 19:24:30 +00:00
Rafał Miłecki
e9e3a0682c ledtrig-netdev: reset link status & stats after changing device_name
Previously switching to non-existing device (interface) could result in
leaving LED on.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 47990
2015-12-23 17:11:49 +00:00