net/mac802154/ieee802154_i.h

Source file repositories/reference/linux-study-clean/net/mac802154/ieee802154_i.h

File Facts

System
Linux kernel
Corpus path
net/mac802154/ieee802154_i.h
Extension
.h
Size
10656 bytes
Lines
335
Domain
Networking Core
Bucket
Sockets, Protocols, Packet Path, And Network Policy
Inferred role
Networking Core: implementation source
Status
source implementation candidate

Why This File Exists

Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ieee802154_local {
	struct ieee802154_hw hw;
	const struct ieee802154_ops *ops;

	/* hardware address filter */
	struct ieee802154_hw_addr_filt addr_filt;
	/* ieee802154 phy */
	struct wpan_phy *phy;

	int open_count;

	/* As in mac80211 slaves list is modified:
	 * 1) under the RTNL
	 * 2) protected by slaves_mtx;
	 * 3) in an RCU manner
	 *
	 * So atomic readers can use any of this protection methods.
	 */
	struct list_head	interfaces;
	struct mutex		iflist_mtx;

	/* Data related workqueue */
	struct workqueue_struct	*workqueue;
	/* MAC commands related workqueue */
	struct workqueue_struct	*mac_wq;

	struct hrtimer ifs_timer;

	/* Scanning */
	u8 scan_page;
	u8 scan_channel;
	struct ieee802154_beacon_req_frame scan_beacon_req;
	struct cfg802154_scan_request __rcu *scan_req;
	struct delayed_work scan_work;

	/* Beaconing */
	unsigned int beacon_interval;
	struct ieee802154_beacon_frame beacon;
	struct cfg802154_beacon_request __rcu *beacon_req;
	struct delayed_work beacon_work;

	/* Asynchronous tasks */
	struct list_head rx_beacon_list;
	struct work_struct rx_beacon_work;
	struct list_head rx_mac_cmd_list;
	struct work_struct rx_mac_cmd_work;

	/* Association */
	struct ieee802154_pan_device *assoc_dev;
	struct completion assoc_done;
	__le16 assoc_addr;
	u8 assoc_status;
	struct work_struct assoc_work;

	bool started;
	bool suspended;
	unsigned long ongoing;

	struct tasklet_struct tasklet;
	struct sk_buff_head skb_queue;

	struct sk_buff *tx_skb;
	struct work_struct sync_tx_work;
	/* A negative Linux error code or a null/positive MLME error status */
	int tx_result;
};

enum {
	IEEE802154_RX_MSG        = 1,
};

enum ieee802154_sdata_state_bits {
	SDATA_STATE_RUNNING,
};

/* Slave interface definition.
 *
 * Slaves represent typical network interfaces available from userspace.
 * Each ieee802154 device/transceiver may have several slaves and able
 * to be associated with several networks at the same time.
 */
struct ieee802154_sub_if_data {
	struct list_head list; /* the ieee802154_priv->slaves list */

	struct wpan_dev wpan_dev;

	struct ieee802154_local *local;
	struct net_device *dev;

	/* Each interface starts and works in nominal state at a given filtering

Annotation

Implementation Notes