20 Sep, 2016

3 commits


20 Mar, 2016

1 commit

  • Pull networking updates from David Miller:
    "Highlights:

    1) Support more Realtek wireless chips, from Jes Sorenson.

    2) New BPF types for per-cpu hash and arrap maps, from Alexei
    Starovoitov.

    3) Make several TCP sysctls per-namespace, from Nikolay Borisov.

    4) Allow the use of SO_REUSEPORT in order to do per-thread processing
    of incoming TCP/UDP connections. The muxing can be done using a
    BPF program which hashes the incoming packet. From Craig Gallek.

    5) Add a multiplexer for TCP streams, to provide a messaged based
    interface. BPF programs can be used to determine the message
    boundaries. From Tom Herbert.

    6) Add 802.1AE MACSEC support, from Sabrina Dubroca.

    7) Avoid factorial complexity when taking down an inetdev interface
    with lots of configured addresses. We were doing things like
    traversing the entire address less for each address removed, and
    flushing the entire netfilter conntrack table for every address as
    well.

    8) Add and use SKB bulk free infrastructure, from Jesper Brouer.

    9) Allow offloading u32 classifiers to hardware, and implement for
    ixgbe, from John Fastabend.

    10) Allow configuring IRQ coalescing parameters on a per-queue basis,
    from Kan Liang.

    11) Extend ethtool so that larger link mode masks can be supported.
    From David Decotigny.

    12) Introduce devlink, which can be used to configure port link types
    (ethernet vs Infiniband, etc.), port splitting, and switch device
    level attributes as a whole. From Jiri Pirko.

    13) Hardware offload support for flower classifiers, from Amir Vadai.

    14) Add "Local Checksum Offload". Basically, for a tunneled packet
    the checksum of the outer header is 'constant' (because with the
    checksum field filled into the inner protocol header, the payload
    of the outer frame checksums to 'zero'), and we can take advantage
    of that in various ways. From Edward Cree"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1548 commits)
    bonding: fix bond_get_stats()
    net: bcmgenet: fix dma api length mismatch
    net/mlx4_core: Fix backward compatibility on VFs
    phy: mdio-thunder: Fix some Kconfig typos
    lan78xx: add ndo_get_stats64
    lan78xx: handle statistics counter rollover
    RDS: TCP: Remove unused constant
    RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket
    net: smc911x: convert pxa dma to dmaengine
    team: remove duplicate set of flag IFF_MULTICAST
    bonding: remove duplicate set of flag IFF_MULTICAST
    net: fix a comment typo
    ethernet: micrel: fix some error codes
    ip_tunnels, bpf: define IP_TUNNEL_OPTS_MAX and use it
    bpf, dst: add and use dst_tclassid helper
    bpf: make skb->tc_classid also readable
    net: mvneta: bm: clarify dependencies
    cls_bpf: reset class and reuse major in da
    ldmvsw: Checkpatch sunvnet.c and sunvnet_common.c
    ldmvsw: Add ldmvsw.c driver code
    ...

    Linus Torvalds
     

24 Feb, 2016

1 commit


27 Jan, 2016

1 commit


05 Jan, 2016

1 commit


11 Dec, 2015

1 commit

  • This patch reverts 6001d52 ("mac802154: tx: don't allow if down while
    sync tx"). This has side effects with stop callback which flush the
    transmit workqueue. The stop callback will wait until the workqueue is
    flushed and holding the rtnl lock. That means it can happen that the stop
    callback waits forever because it try to lock the rtnl mutex which is
    already hold by stop callback.

    Cc: Michael Hennerich
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

20 Nov, 2015

1 commit


21 Oct, 2015

1 commit


30 Sep, 2015

3 commits

  • This patch changes the mtu size of 802.15.4 interfaces. The current
    setting is the meaning of the maximum transport unit with mac header,
    which is 127 bytes according 802.15.4. The linux meaning of the mtu size
    field is the maximum payload of a mac frame. Like in ethernet, which is
    1500 bytes.

    We have dynamic length of mac frames in 802.15.4, this is why we assume
    the minimum header length which is hard_header_len. This contains fc and
    sequence fields. These can evaluated by driver layer without additional
    checks. We currently don't support to set the FCS from userspace, so we
    need to subtract this from mtu size as well.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • While doing a little test with the llsec implementation I saw these
    issues. We should move decryption and encruption somewhere else,
    otherwise while capturing with wireshark the mac header shows secuirty
    fields but the payload is plaintext.

    A complete other issue is what doing with HardMAC drivers where the
    payload is always plaintext. I think we need a special handling then in
    userspace. We currently doesn't support any HardMAC transceivers, so we
    should fix the first issue for SoftMAC transceivers.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch adds support for accessing mac802154 llsec implementation
    over nl802154. I added for a new Kconfig entry to provide this
    functionality CONFIG_IEEE802154_NL802154_EXPERIMENTAL. This interface is
    still in development. It provides to change security parameters and
    add/del/dump entries of security tables. Later we can add also a get to
    get an entry by unique identifier.

    Cc: Phoebe Buckheister
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

25 Sep, 2015

1 commit

  • The callback "create" and "parse" from header_ops are called from
    netdev core upper-layer functionality, like af_packet. These callbacks
    assumes big endian for addresses and we should not introduce a special
    byteordering handling for ieee802154 over af_packet in userspace.

    We have an identical issue with setting the mac address which also
    assumes big endian byteordering.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

22 Sep, 2015

4 commits

  • Sending over AF_PACKET RAW sockets we can sending frames which exceeds
    MTU size. To handling it correct we need to change things in AF_PACKET
    which knows on RAW sockets an additional FCS is set by hardware or
    mac802154 transmit functionality.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch cleanups needed_headroom, needed_tailroom and hard_header_len
    fields for wpan and lowpan interfaces.

    For wpan interfaces the worst case mac header len should be part of
    needed_headroom, currently this is set as hard_header_len, but
    hard_header_len should be set to the minimum header length which xmit
    call assumes and this is the minimum frame length of 802.15.4.
    The hard_header_len value will check inside send callbacl of AF_PACKET
    raw sockets.

    For lowpan interfaces, if fragmentation isn't needed the skb will
    call dev_hard_header for 802154 layer and queue it afterwards. This
    happens without new skb allocation, so we need the same headroom and
    tailroom lengths like 802154 inside 802154 6lowpan layer. At least we
    assume as minimum header length an ipv6 header size.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • The current header_ops callback structure of net device are used mostly
    from 802.15.4 upper-layers. Because this callback structure is a very
    generic one, which is also used by e.g. DGRAM AF_PACKET sockets, we
    can't make this callback structure 802.15.4 specific which is currently
    is.

    I saw the smallest "constraint" for calling this callback with
    dev_hard_header/dev_parse_header by AF_PACKET which assign a 8 byte
    array for address void pointers. Currently 802.15.4 specific protocols
    like af802154 and 6LoWPAN will assign the "struct ieee802154_addr" as
    these parameters which is greater than 8 bytes. The current callback
    implementation for header_ops.create assumes always a complete
    "struct ieee802154_addr" which AF_PACKET can't never handled and is
    greater than 8 bytes.

    For that reason we introduce now a "generic" create/parse header_ops
    callback which allows handling with intra-pan extended addresses only.
    This allows a small use-case with AF_PACKET to send "somehow" a valid
    dataframe over DGRAM.

    To keeping the current dev_hard_header behaviour we introduce a similar
    callback structure "wpan_dev_header_ops" which contains 802.15.4 specific
    upper-layer header creation functionality, which can be called by
    wpan_dev_hard_header.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch adds a missing list_del when a device description will be
    deleted.

    Cc: Phoebe Buckheister
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

11 Aug, 2015

4 commits

  • This patch introduce a new mib entry which isn't part of 802.15.4 but
    useful as default behaviour to set the ack request bit or not if we
    don't know if the ack request bit should set. This is currently used for
    stacks like IEEE 802.15.4 6LoWPAN.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch changes the default minimum value of frame_retries to 0 and
    changes the frame_retries default value to 3 which is also 802.15.4
    default.

    We don't use the frame_retries "-1" value as indicator for no-aret mode
    anymore, instead we checking on the ack request bit inside the 802.15.4
    frame control field. This allows a acknowledge handling per frame. This
    checking is done by transceiver or inside xmit callback of driver layer.

    If a transceiver doesn't support ARET handling the transmit
    functionality ignores ack frames then, which isn't well but should not
    effect anything of current functionality.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch removes several checks if a value is really changed. This
    makes only sense if we have another layer call e.g. calling the
    driver_ops which is done by callbacks like "set_channel".

    For MAC settings which need to be set by phy registers (if the phy
    supports that handling) this is set by doing an interface up currently
    and are not direct driver_ops calls, so we remove the checks from these
    configuration callbacks.

    Reviewed-by: Stefan Schmidt
    Suggested-by: Phoebe Buckheister
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • If we currently change the mac address inside the wpan interface while
    we have a lowpan interface on top of the wpan interface, the mac address
    setting doesn't reach the lowpan interface. The effect would be that the
    IPv6 lowpan interface has the old SLAAC address and isn't working
    anymore because the lowpan interface use in internal mechanism sometimes
    dev->addr which is the old mac address of the wpan interface.

    This patch checks if a wpan interface belongs to lowpan interface, if
    yes then we need to check if the lowpan interface is down and change the
    mac address also at the lowpan interface. When the lowpan interface will
    be set up afterwards, it will use the correct SLAAC address which based
    on the updated mac address setting.

    Reviewed-by: Stefan Schmidt
    Tested-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

30 Jul, 2015

1 commit

  • When transmitting a packet via a mac802154 driver that can sleep in
    its transmit function, mac802154 defers the call to the driver's
    transmit function to a per-device workqueue.

    However, mac802154 uses a single global work_struct for this, which
    means that if you have more than one registered mac802154 interface
    in the system, and you transmit on more than one of them at the same
    time, you'll very easily cause memory corruption.

    This patch moves the deferred transmit processing state from global
    variables to struct ieee802154_local, and this seems to fix the memory
    corruption issue.

    Signed-off-by: Lennert Buytenhek
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Lennert Buytenhek
     

23 Jul, 2015

7 commits

  • Instead of passing ieee802154_hw pointer to ieee802154_rx,
    we can directly pass the ieee802154_local pointer.

    Signed-off-by: Varka Bhadram
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Varka Bhadram
     
  • Right now there are no other users for ieee802154_rx()
    in kernel. So lets remove EXPORT_SYMBOL() for this.

    Also it moves the function prototype from global header
    file to local header file.

    Signed-off-by: Varka Bhadram
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Varka Bhadram
     
  • This patch introduces suspend and resume callbacks to mac802154. When
    doing suspend we calling the stop driver callback which should stop the
    receiving of frames. A transceiver should go into low-power mode then.
    Calling resume will call the start driver callback, which starts receiving
    again and allow to transmit frames.

    This was tested only with the fakelb driver and a qemu vm by doing the
    following commands:

    echo "devices" > /sys/power/pm_test
    echo "freeze" > /sys/power/state

    while doing some high traffic between two fakelb phys.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch adds ieee802154_stop_device for preparing a utility function
    to stop the ieee802154 device.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch removes the unused macro which was removed
    with the rework of linux-wpan kernel.

    Signed-off-by: Varka Bhadram
    Signed-off-by: Marcel Holtmann

    Varka Bhadram
     
  • This patch will generate the warning if the required driver ops
    were not defined. Also it removes unnecessary debug message.

    Signed-off-by: Varka Bhadram
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Varka Bhadram
     
  • This patch adds a workaround for using the new nl802154 netlink
    interface with the old ieee802154 netlink interface togehter. The
    nl802154 currently supports no access for llsec layer, currently there
    are users outside which are using both interfaces at the same time. This
    patch adds a necessary call when addresses are updated.

    Reported-by: Simon Vincent
    Suggested-by: Phoebe Buckheister
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

25 Jun, 2015

1 commit

  • Pull networking updates from David Miller:

    1) Add TX fast path in mac80211, from Johannes Berg.

    2) Add TSO/GRO support to ibmveth, from Thomas Falcon

    3) Move away from cached routes in ipv6, just like ipv4, from Martin
    KaFai Lau.

    4) Lots of new rhashtable tests, from Thomas Graf.

    5) Run ingress qdisc lockless, from Alexei Starovoitov.

    6) Allow servers to fetch TCP packet headers for SYN packets of new
    connections, for fingerprinting. From Eric Dumazet.

    7) Add mode parameter to pktgen, for testing receive. From Alexei
    Starovoitov.

    8) Cache access optimizations via simplifications of build_skb(), from
    Alexander Duyck.

    9) Move page frag allocator under mm/, also from Alexander.

    10) Add xmit_more support to hv_netvsc, from KY Srinivasan.

    11) Add a counter guard in case we try to perform endless reclassify
    loops in the packet scheduler.

    12) Extern flow dissector to be programmable and use it in new "Flower"
    classifier. From Jiri Pirko.

    13) AF_PACKET fanout rollover fixes, performance improvements, and new
    statistics. From Willem de Bruijn.

    14) Add netdev driver for GENEVE tunnels, from John W Linville.

    15) Add ingress netfilter hooks and filtering, from Pablo Neira Ayuso.

    16) Fix handling of epoll edge triggers in TCP, from Eric Dumazet.

    17) Add an ECN retry fallback for the initial TCP handshake, from Daniel
    Borkmann.

    18) Add tail call support to BPF, from Alexei Starovoitov.

    19) Add several pktgen helper scripts, from Jesper Dangaard Brouer.

    20) Add zerocopy support to AF_UNIX, from Hannes Frederic Sowa.

    21) Favor even port numbers for allocation to connect() requests, and
    odd port numbers for bind(0), in an effort to help avoid
    ip_local_port_range exhaustion. From Eric Dumazet.

    22) Add Cavium ThunderX driver, from Sunil Goutham.

    23) Allow bpf programs to access skb_iif and dev->ifindex SKB metadata,
    from Alexei Starovoitov.

    24) Add support for T6 chips in cxgb4vf driver, from Hariprasad Shenai.

    25) Double TCP Small Queues default to 256K to accomodate situations
    like the XEN driver and wireless aggregation. From Wei Liu.

    26) Add more entropy inputs to flow dissector, from Tom Herbert.

    27) Add CDG congestion control algorithm to TCP, from Kenneth Klette
    Jonassen.

    28) Convert ipset over to RCU locking, from Jozsef Kadlecsik.

    29) Track and act upon link status of ipv4 route nexthops, from Andy
    Gospodarek.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1670 commits)
    bridge: vlan: flush the dynamically learned entries on port vlan delete
    bridge: multicast: add a comment to br_port_state_selection about blocking state
    net: inet_diag: export IPV6_V6ONLY sockopt
    stmmac: troubleshoot unexpected bits in des0 & des1
    net: ipv4 sysctl option to ignore routes when nexthop link is down
    net: track link-status of ipv4 nexthops
    net: switchdev: ignore unsupported bridge flags
    net: Cavium: Fix MAC address setting in shutdown state
    drivers: net: xgene: fix for ACPI support without ACPI
    ip: report the original address of ICMP messages
    net/mlx5e: Prefetch skb data on RX
    net/mlx5e: Pop cq outside mlx5e_get_cqe
    net/mlx5e: Remove mlx5e_cq.sqrq back-pointer
    net/mlx5e: Remove extra spaces
    net/mlx5e: Avoid TX CQE generation if more xmit packets expected
    net/mlx5e: Avoid redundant dev_kfree_skb() upon NOP completion
    net/mlx5e: Remove re-assignment of wq type in mlx5e_enable_rq()
    net/mlx5e: Use skb_shinfo(skb)->gso_segs rather than counting them
    net/mlx5e: Static mapping of netdev priv resources to/from netdev TX queues
    net/mlx4_en: Use HW counters for rx/tx bytes/packets in PF device
    ...

    Linus Torvalds
     

23 Jun, 2015

1 commit

  • Pull crypto update from Herbert Xu:
    "Here is the crypto update for 4.2:

    API:

    - Convert RNG interface to new style.

    - New AEAD interface with one SG list for AD and plain/cipher text.
    All external AEAD users have been converted.

    - New asymmetric key interface (akcipher).

    Algorithms:

    - Chacha20, Poly1305 and RFC7539 support.

    - New RSA implementation.

    - Jitter RNG.

    - DRBG is now seeded with both /dev/random and Jitter RNG. If kernel
    pool isn't ready then DRBG will be reseeded when it is.

    - DRBG is now the default crypto API RNG, replacing krng.

    - 842 compression (previously part of powerpc nx driver).

    Drivers:

    - Accelerated SHA-512 for arm64.

    - New Marvell CESA driver that supports DMA and more algorithms.

    - Updated powerpc nx 842 support.

    - Added support for SEC1 hardware to talitos"

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (292 commits)
    crypto: marvell/cesa - remove COMPILE_TEST dependency
    crypto: algif_aead - Temporarily disable all AEAD algorithms
    crypto: af_alg - Forbid the use internal algorithms
    crypto: echainiv - Only hold RNG during initialisation
    crypto: seqiv - Add compatibility support without RNG
    crypto: eseqiv - Offer normal cipher functionality without RNG
    crypto: chainiv - Offer normal cipher functionality without RNG
    crypto: user - Add CRYPTO_MSG_DELRNG
    crypto: user - Move cryptouser.h to uapi
    crypto: rng - Do not free default RNG when it becomes unused
    crypto: skcipher - Allow givencrypt to be NULL
    crypto: sahara - propagate the error on clk_disable_unprepare() failure
    crypto: rsa - fix invalid select for AKCIPHER
    crypto: picoxcell - Update to the current clk API
    crypto: nx - Check for bogus firmware properties
    crypto: marvell/cesa - add DT bindings documentation
    crypto: marvell/cesa - add support for Kirkwood and Dove SoCs
    crypto: marvell/cesa - add support for Orion SoCs
    crypto: marvell/cesa - add allhwsupport module parameter
    crypto: marvell/cesa - add support for all armada SoCs
    ...

    Linus Torvalds
     

17 Jun, 2015

2 commits

  • There is no need to init res with zero, res can be unused but then we
    returning zero and not res.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch moves the hardware setting before calling the driver start
    callback which activates the receive handling. The hardware setup
    contains settings like address filtering which should be setup before
    activate the receive handling on the transceiver. These setting are
    protected by ieee802154_check_concurrent_iface check. This means we
    need to set these registers once before calling drv_start and can't
    be overwritten by other interfaces.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

15 Jun, 2015

3 commits

  • This patch flushs the workqueue which is currently used for xmit_sync
    callback before calling stop driver-ops. Flush the queue will ensure all
    pending tx frames are transmitted.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • The interframe spacing timer is a per phy definition and is part of a
    ieee802154_local structure. If we have possible multiple interfaces
    ifdown one interface then the timer should not be cancled. First if the
    last interface is down and the receive handling is stopped we should be
    sure that the interframe spacing timer isn't run anymore.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch replaces !netif_running(sdata->dev) with
    !ieee802154_sdata_running(sdata) and also devide the
    code two separate if branches.

    Signed-off-by: Varka Bhadram
    Signed-off-by: Marcel Holtmann

    Varka Bhadram
     

09 Jun, 2015

1 commit

  • This call was used before we aligned our code with the wireless code base. We
    are wanted to handle this in the err: code path. Which would actually not work
    because the WARN_ON() macro would reset the res value to 0 and thus we would
    never hit err:. Removing it makes the code do what we actually intend.

    Signed-off-by: Stefan Schmidt
    Signed-off-by: Marcel Holtmann

    Stefan Schmidt
     

07 Jun, 2015

1 commit

  • This patch removes the virtual interface structure from sub if data
    struct, because it isn't used anywhere. This structure could be useful
    for give per interface information at softmac driver layer. Nevertheless
    there exist no use case currently and it contains the interface type
    information currently. This information is also stored inside wpan dev
    which is now used to check on the wpan dev interface type.

    Signed-off-by: Alexander Aring
    Reviewed-by: Varka Bhadram
    Acked-by: Varka Bhadram
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

03 Jun, 2015

1 commit