Commit Graph

96 Commits

Author SHA1 Message Date
Anthony Merlino
29ab94198c Merged in antmerlino/nuttx/mac802154_fixes (pull request #998)
Mac802154 fixes

* mac802154: Frame Version should have been 1, but was being set to 3 when payload exceeds version 0 capabilities.

* mac802154: Corrects function reference in warning print-out

* mac802154/sixlowpan: Adds warning to build to indicate what is noted in the menu for CONFIG_MAC802154_NTXDESC

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2019-08-16 01:28:26 +00:00
Anthony Merlino
6f4c9678af Merged in antmerlino/nuttx/mac_txdesc_ackreq_fix (pull request #986)
mac802154: Fixes issue where the txdesc's ackreq flag was not being set, despite the frame containing a Frame Control field with ACKREQ bit set.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2019-08-10 18:27:49 +00:00
Anthony Merlino
a8e1620f3c Merged in antmerlino/nuttx/mac802154_fix_eaddr (pull request #985)
mac802154: Fixes issues with extended address. 1) Extended address should be read-only. 2) Extended address should be placed in frame in "reverse-canonical" order.

The extended address is a read-only attribute and thus an attempt to write the extended address should be denied. Instead, the extended address should really be either set by the PHY/radio itself, or provided at board bring-up time to the radio layer. The MAC layer now pulls in the extended address from the radio any time the MAC is reset.

The extended address is also supposed to be sent in the frame in reverse-canonical order. This is very confusing in the standard and it wasn't until I realized it was backwards in Wireshark that I researched this further. Searching online I find documents from the committee for suggestions/feedback on the future standard. It isn't in the 2015 standard but a newer version of the standard will presumably clarify this. It says that the extended address should be written in reverse-canonical form, meaning the OUI comes last, not first inside the frame.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2019-08-10 18:25:13 +00:00
Anthony Merlino
90317a9eeb Merged in antmerlino/nuttx/ieee802154_energydetect (pull request #977)
wireless/ieee8021254: Adds support for energy detect.

Adds support for energy detect by introducing a new radio call/callback, as the PHY layer is required to perform the energy detect.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2019-08-10 17:03:24 +00:00
Gregory Nutt
dc8c814ca3 Squashed commit of the following:
Fixed coding standard error in several files.  Use of while( is incorrect; a space is required between while and (.  Also ran tools/nxstyle and fix thoses complaints as well in most files.

    Changes to comply with coding standard.  Mostly focused on files with missing space after keyword in if(, switch(, and for(.  Offending files also got changes to comply with tools nxstyle.  If there were logs of nxstyle complaints, the file also got a taste of tools/indent.sh.  Still need to fix occurrences of while( with missing space.  There are a lot of them.
2019-02-27 08:41:08 -06:00
Anthony Merlino
5e1f54ddc3 Merged in antmerlino/nuttx/mac802154_primitivebug (pull request #620)
mac802154: Fixes bug where primitive was freed when it shouldn't have been, causing double free call

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2018-03-28 15:50:41 +00:00
Anthony Merlino
14fb37c995 Merged in antmerlino/nuttx/sixlowpan-mac802154 (pull request #526)
ieee802154: Simplifies notify() and rxframe() calls to a single notify() call. dataind's and all other "notifs" are now "primitives" which aligns with standard terminology

* mac802154: Adds missing breaks from case statement

* sixlowpan: Fixes bad logic where ACK is not requested if address is not a broadcast

* ieee802154: Simplification of "notifs" and "datainds" to generic primitives passed via a single notify call to the layer above the MAC

* Directories.mk should reference CONFIG_WIRELESS instead of CONFIG_DRIVERS_WIRELESS

* xbee_netdev: Network must be locked when calling sixlowpan_input

* sixlowpan: Reassembly buffer can't be freed if provided by radio driver

* sixlowpan: Don't free IOB if there is an error processing it as the MAC will try to pass it along to another receiver

* ieee802154: Adds basic logging to ieee802154_primitive.c

* Minor fixes after rebase

* xbee: Adds AT query timeout to retry if XBee doesn't respond to request

* same70-xplained: Adds Xbee support. Makes mikroBus slot Kconfig 'choice'

* mac802154: Removes unused function declaration

* drivers/mrf24j40: Fixes compilation error using . operator rather than -> operator

* mac802154_device: Changes a few mac802154_primtive_free's to ieee802154_primitive_free() and changes notif to primitive in a couple places.

* mac802154: Adds promiscous mode logic to bypass parsing of incoming frames. MAC char device also checks for promiscous mode and passes whole frames including header and FCS to the application if promiscous mode is enabled.

* sixlowpan: Fixes logic to correctly check if packet is large enough to include header.  This would cause packets to be considered too small when they are sufficiently sized.

* sixlowpan: Fixes forwarding logic to use forwarding device rather than received device to look up destination link layer address

* net/ipforward: Fixes typo that caused build error when IP forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as well.

* configs/same70-xplained: Simple spelling fix

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-01 20:15:21 +00:00
Gregory Nutt
7cc63f90d9 sched/semaphore: sem_trywait() modifies the errno value and, hence, should not be used within the OS. Use nxsem_trywait() instead. 2017-10-05 07:59:06 -06:00
Gregory Nutt
83cdb0c552 Squashed commit of the following:
libc/semaphore:  Add nxsem_getvalue() which is identical to sem_getvalue() except that it never modifies the errno variable.  Changed all references to sem_getvalue in the OS to nxsem_getvalue().

    sched/semaphore:  Rename all internal private functions from sem_xyz to nxsem_xyz.  The sem_ prefix is (will be) reserved only for the application semaphore interfaces.

    libc/semaphore:  Add nxsem_init() which is identical to sem_init() except that it never modifies the errno variable.  Changed all references to sem_init in the OS to nxsem_init().

    sched/semaphore:  Rename sem_tickwait() to nxsem_tickwait() so that it is clear this is an internal OS function.

    sched/semaphoate:  Rename sem_reset() to nxsem_reset() so that it is clear this is an internal OS function.
2017-10-03 12:52:31 -06:00
Anthony Merlino
9af6b7cdae Squashed commit of the following:
Merged in merlin17/nuttx/mac802154-sock (pull request #479)

    wireless/ieee802154: Adds support for receiving MAC events via IOCTL through socket interface. Other small fixes and cleanup

    * ioctl: Cleans up MAC802154IOC values
    * wireless/ieee802154: Cleans up MAC802154IOC_NOTIFY_REGISTER logic in character driver
    * wireless/ieee802154/mac802154_netdev:  Adds support for MAC event notification via IOCTL
    * wireless/ieee802154/mac802154: Changes reset logic. No longer reset extended address.
    * wireless/ieee802154: Cleans up MAC802154IOC logic

        Moves MAC802154IOC from ieee802154_ioctl.h and renames ieee802154_ioctl.h to ieee802154_device.h since it only contains types relevant to the MAC char device now.

    * wireless/ieee802154/mac802154_device: Cleans up IOCTL logic for recent changes.
    * drivers/wireless/ieee802154/mrf24j40: Adds missing break in case statement
    * wireless/ieee802154/mac802154_netdev: Starts adding support for passing MAC events via IOCTL
    * wireless/ieee802154/mac802154: Fixes issue with receiver enable logic
    * wireless/ieee802154/mac802154: Fixes issue where extended address is cleared and not rewritten after radio reset
    * configs/clicker2-stm32/mrf24j40-mac: Enables RAMLOG and wireless driver logging
    * wireless/ieee802154/mac802154: Fixes poll logic meant to automatically choose address mode based on short address range.

    Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-09-15 08:04:38 -06:00
Anthony Merlino
eaf4c05f27 ieee802154: Sets txdesc retrycount to the maxretries MAC attribute when allocated 2017-07-18 14:01:30 -04:00
Anthony Merlino
8610723ee6 ieee802154: Adds some wlinfo logs for debugging 2017-07-16 23:51:24 -04:00
Anthony Merlino
86b690a285 ieee802154: Fixes issue with association on beacon-enabled networking 2017-07-16 23:51:24 -04:00
Anthony Merlino
95e797fceb ieee802154: Fixes setting devmode logic 2017-07-13 03:17:05 -04:00
Anthony Merlino
b9a9ba7dd0 ieee802154: Adds configuration options for verbose logging of certain features, to aid in debugging 2017-07-10 13:06:12 -04:00
Anthony Merlino
93cdae50fc ieee802154: Improves internal timer logic to handle work serially
Before, the MAC timer used a watchdog to schedule work with the high priority worker queue.  However, since everything in the MAC is supposed to be serialized through the use of the high priority work queue, but the timer uses a watchdog, there are some unintended consequences. To simplify, we now use the delayed work feature of the work queue.
2017-07-10 13:06:12 -04:00
Anthony Merlino
c8c31810dc ieee802154: Minor renaming. purge_time -> purgetime 2017-07-09 18:38:56 -04:00
Anthony Merlino
c72eb1b39b ieee802154: mac802154_purge_timeout was not unlocking MAC before returning 2017-07-09 17:59:22 -04:00
Anthony Merlino
4cf2d0a6a8 ieee802154: Changes mac locking/unlocking to aid in debugging 2017-07-07 23:31:23 -04:00
Gregory Nutt
053b6e3d9f Fix dangling white space at the end of lines. 2017-07-03 10:08:49 -06:00
Anthony Merlino
032deb5f49 ieee802154: Supports multiple incoming superframe events 2017-07-01 17:05:42 -04:00
Anthony Merlino
7d9c4ace34 ieee802154: Cleans up some wireless logging 2017-07-01 17:05:42 -04:00
Anthony Merlino
5ca18999a5 ieee802154: Random fixes to get beacon-enabled networking more stable 2017-07-01 17:05:42 -04:00
Anthony Merlino
b981ced4d4 ieee802154: Finishes beacon association functionality 2017-07-01 17:05:42 -04:00
Anthony Merlino
6b17d5ccc9 ieee802154: Minor changes to align closer with coding standard 2017-07-01 17:05:42 -04:00
Anthony Merlino
ce8f2735ea ieee802154: Improves notification freeing functionality
Each notification now has a number of clients.  When the last client calls free, the notification is freed back to the pool
2017-07-01 17:05:42 -04:00
Gregory Nutt
1f81b14610 Beacon logic: Damage control. Looks like something went wrong with the PR merge. 2017-06-26 11:03:44 -06:00
Anthony Merlino
da8afe9d9e ieee802154: Finishes transmission of beacon frames, and performing a passive scan 2017-06-25 18:08:00 -04:00
Anthony Merlino
683bd6e10e ieee802154: Adds some missing elements to start support for beacon-enabled networks 2017-06-25 18:08:00 -04:00
Anthony Merlino
8831d6e1d4 ieee802154: Minor renaming to align better with coding style standard 2017-06-23 14:51:29 -04:00
Anthony Merlino
45a32a116b wireless/ieee802154: Minor naming change to align better with coding guidelines 2017-06-20 19:14:05 -04:00
Gregory Nutt
cd8ac3f070 ieee802154 MAC: Free allocated TX descriptor if an error occurs after the descriptor has been allocated. 2017-06-20 15:00:23 -06:00
Gregory Nutt
d3b9ea9d66 Trivial.. missing newlines in debug output 2017-06-20 11:50:04 -06:00
Gregory Nutt
a82ab4b729 mac802154_req_data() can return without releasing the exclsem 2017-06-20 11:23:31 -06:00
Anthony Merlino
fc4f1de766 wireless/ieee802154: Cleans up some endianness issues 2017-06-19 15:55:14 -04:00
Anthony Merlino
b1ce07deb1 Swithches IEEE 802.15.4 based code to using byte arrays instead of uint16_t values for short address and PAN ID 2017-06-19 05:55:28 -04:00
Gregory Nutt
6162a84f80 ieee 802.15.4: Need counting protection on the logic that releases the notification resources. Otherwise, notification handlers may be operating with a stale pointer. 2017-06-18 13:33:07 -06:00
Gregory Nutt
2d4ba3ee3f IEEE 802.15.4 MAC: Add list management and prioritization logic that will permit the MAC layer to support bound multiple clients. 2017-06-18 11:00:47 -06:00
Gregory Nutt
afa0ab0819 Remove dangling whitespace form the end of lines 2017-06-17 14:13:25 -06:00
Anthony Merlino
30568ee04f wireless/ieee802154: Merges shard logic for sending data request commands 2017-06-17 14:56:42 -04:00
Anthony Merlino
74bc930551 wireless/ieee802154: Renames mac802154_poll to mac802154_radiopoll to be more obvious 2017-06-17 14:50:25 -04:00
Gregory Nutt
19b0aa3145 ieee802154 MAC: Fix a warning when compiled for a target with 64-bit addressing 2017-06-17 09:04:09 -06:00
Gregory Nutt
77757410c8 Remove dangling white space at the end of lines. 2017-06-15 10:46:48 -06:00
Anthony Merlino
e30501ebd4 wireless/ieee802154: Lots of fixes, cleanup, new functionality. Functional 2017-06-15 12:11:52 -04:00
Anthony Merlino
908d438047 WIP: wireless/ieee802154: More work on association/beacon-enabled networks 2017-06-14 02:49:32 -04:00
Anthony Merlino
06634afbe0 wireless/ieee802154: Restructuring of MAC notifications. Simplifes some interfaces 2017-05-15 21:44:57 -04:00
Anthony Merlino
2b5e415fab wireless/ieee802154: Starts implementing START.request primitive 2017-05-14 17:55:15 -04:00
Anthony Merlino
07c47b0dde wireless/ieee802154: Starts implementing START.request primitive 2017-05-09 17:22:30 -04:00
Anthony Merlino
806dcd9a47 wireless/ieee802154: Brings closer to Nuttx coding style 2017-05-09 17:20:57 -04:00
Anthony Merlino
1186cd4e56 wireless/ieee802154: Fixes missing handle of read/write being able to be interrupted 2017-05-09 17:20:57 -04:00