Re: [PATCH v5 5/6] net: maclorawan: Implement maclorawan class module
From: Jian-Hong Pan <hidden>
Date: 2018-12-18 15:34:18
Also in:
linux-arm-kernel, lkml
Tue, Dec 18, 2018 at 03:27:09PM CET, starnight@g.ncu.edu.tw wrote:quoted
quoted
Sun, Dec 16, 2018 at 11:18:59AM CET, starnight@g.ncu.edu.tw wrote:quoted
LoRaWAN defined by LoRa Alliance(TM) is the MAC layer over LoRa devices. This patch implements part of Class A end-devices SoftMAC defined in LoRaWAN(TM) Specification Ver. 1.0.2: 1. End-device receive slot timing 2. Only single channel and single data rate for now 3. Unconfirmed data up/down message types On the other side, it defines the basic interface and operation functions for compatible LoRa device drivers. Signed-off-by: Jian-Hong Pan <redacted> --- V2: - Split the LoRaWAN class module patch in V1 into LoRaWAN socket and LoRaWAN Soft MAC modules - Modify for Big/Little-Endian - Use SPDX license identifiers V3: - Remove the decoration word - inline of the functions - Order local variables from longest to shortest line in the functions - Change the calling mac_cb function to lrw_get_mac_cb macro V4: - Fix the delay period between RX window#1 and window#2 - Fix by coding style report from scripts/checkpatch.pl V5: - Initial rx_skb_list when it is allocated with LoRa hardware - Check the sk_buff's data length before access it - Deal FPort field and decrypt payload in lrw_parse_frame function - Drop the recieved frame if parse failed - Fix the bug which passes wrong skb properties from maclorawan to lorawan module net/maclorawan/Kconfig | 14 + net/maclorawan/Makefile | 2 + net/maclorawan/mac.c | 555 ++++++++++++++++++++++++++++++++++++ net/maclorawan/main.c | 606 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1177 insertions(+) create mode 100644 net/maclorawan/Kconfig create mode 100644 net/maclorawan/Makefile create mode 100644 net/maclorawan/mac.c create mode 100644 net/maclorawan/main.cI don't get it. In patch "Add LoRaWAN API declaration for LoRa devices" you add headers for "API" and here you implement functions. That is just weird. Does it mean you can have other implementations?LoRaWAN defined by LoRa Alliance(TM) is the MAC layer over LoRa PHY. This part is soft-MAC as Andreas mentioned http://lists.infradead.org/pipermail/linux-lpwan/2018-December/000010.htmlOkay, that does not answer my concern about header file in one patch and the actual implementation of functions in another one.
Just for clarification: - Patch "net: lorawan: Add LoRaWAN socket module" is for lorawan module - Patch "net: lorawan: Add LoRaWAN API declaration for LoRa devices" containes the header file "include/linux/lora/lorawan.h" which will be included by LoRa device drivers or other kernel modules. - Patches "net: maclorawan: Add maclorawan module declaration", "net: maclorawan: Implement the crypto of maclorawan module" and "net: maclorawan: Implement maclorawan class module" are for maclorawan module. Question 1: Should I marge "net: maclorawan: Add maclorawan module declaration", "net: maclorawan: Implement the crypto of maclorawan module" and "net: maclorawan: Implement maclorawan class module" into a single patch named "net: maclorawan: Add maclorawan as the soft-MAC module"? Then: For example, after a LoRa device driver includes the header "linux/lora/lorawan.h", the device driver will call "lrw_alloc_hw()" and pass with a "struct lrw_operations" type of variable's pointer. It gets a type of "struct lrw_hw *" pointer. Then, it will call "lrw_register_hw()" to register the device. The device driver implements the callback functions for the "struct lrw_operations" type of variable by it self before calls "lrw_alloc_hw()". Question 2: Should the patch "net: lorawan: Add LoRaWAN API declaration for LoRa devices" also be merged into "net: maclorawan: Add maclorawan as the soft-MAC module" or "net: maclorawan: Implement maclorawan class module"? Or, just leave it as a single patch?