| /* Copyright (c) 2017, The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #ifndef _NET_CNSS_GENETLINK_H_ |
| #define _NET_CNSS_GENETLINK_H_ |
| |
| #define CLD80211_MAX_COMMANDS 40 |
| #define CLD80211_MAX_NL_DATA 4096 |
| |
| /** |
| * enum cld80211_attr - Driver/Application embeds the data in nlmsg with the |
| * help of below attributes |
| * |
| * @CLD80211_ATTR_VENDOR_DATA: Embed all other attributes in this nested |
| * attribute. |
| * @CLD80211_ATTR_DATA: Embed complete data in this attribute |
| * @CLD80211_ATTR_META_DATA: Embed meta data for above data. This will help |
| * wlan driver to peek into request message packet without opening up definition |
| * of complete request message. |
| * |
| * Any new message in future can be added as another attribute |
| */ |
| enum cld80211_attr { |
| CLD80211_ATTR_VENDOR_DATA = 1, |
| CLD80211_ATTR_DATA, |
| CLD80211_ATTR_META_DATA, |
| /* add new attributes above here */ |
| |
| __CLD80211_ATTR_AFTER_LAST, |
| CLD80211_ATTR_MAX = __CLD80211_ATTR_AFTER_LAST - 1 |
| }; |
| |
| /** |
| * enum cld80211_multicast_groups - List of multicast groups supported |
| * |
| * @CLD80211_MCGRP_SVC_MSGS: WLAN service message will be sent to this group. |
| * Ex: Status ind messages |
| * @CLD80211_MCGRP_HOST_LOGS: All logging related messages from driver will be |
| * sent to this multicast group |
| * @CLD80211_MCGRP_FW_LOGS: Firmware logging messages will be sent to this group |
| * @CLD80211_MCGRP_PER_PKT_STATS: Messages related packet stats debugging infra |
| * will be sent to this group |
| * @CLD80211_MCGRP_DIAG_EVENTS: Driver/Firmware status logging diag events will |
| * be sent to this group |
| * @CLD80211_MCGRP_FATAL_EVENTS: Any fatal message generated in driver/firmware |
| * will be sent to this group |
| * @CLD80211_MCGRP_OEM_MSGS: All OEM message will be sent to this group |
| * Ex: LOWI messages |
| */ |
| enum cld80211_multicast_groups { |
| CLD80211_MCGRP_SVC_MSGS, |
| CLD80211_MCGRP_HOST_LOGS, |
| CLD80211_MCGRP_FW_LOGS, |
| CLD80211_MCGRP_PER_PKT_STATS, |
| CLD80211_MCGRP_DIAG_EVENTS, |
| CLD80211_MCGRP_FATAL_EVENTS, |
| CLD80211_MCGRP_OEM_MSGS, |
| }; |
| |
| /** |
| * typedef cld80211_cb - Callback to be called when an nlmsg is received with |
| * the registered cmd_id command from userspace |
| * @data: Payload of the message to be sent to driver |
| * @data_len: Length of the payload |
| * @cb_ctx: callback context to be returned to driver when the callback |
| * is called |
| * @pid: process id of the sender |
| */ |
| typedef void (*cld80211_cb)(const void *data, int data_len, |
| void *cb_ctx, int pid); |
| |
| /** |
| * register_cld_cmd_cb() - Allows cld driver to register for commands with |
| * callback |
| * @cmd_id: Command to be registered. Valid range [1, CLD80211_MAX_COMMANDS] |
| * @cb: Callback to be called when an nlmsg is received with cmd_id command |
| * from userspace |
| * @cb_ctx: context provided by driver; Send this as cb_ctx of func() |
| * to driver |
| */ |
| int register_cld_cmd_cb(u8 cmd_id, cld80211_cb cb, void *cb_ctx); |
| |
| /** |
| * deregister_cld_cmd_cb() - Allows cld driver to de-register the command it |
| * has already registered |
| * @cmd_id: Command to be deregistered. |
| */ |
| int deregister_cld_cmd_cb(u8 cmd_id); |
| |
| /** |
| * cld80211_get_genl_family() - Returns current netlink family context |
| */ |
| struct genl_family *cld80211_get_genl_family(void); |
| |
| #endif /* _NET_CNSS_GENETLINK_H_ */ |