Lines Matching +full:supported +full:- +full:hw

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright 2007-2012 Siemens AG
9 * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
31 struct ieee802154_hw *hw; member
42 static int fakelb_hw_ed(struct ieee802154_hw *hw, u8 *level) in fakelb_hw_ed() argument
50 static int fakelb_hw_channel(struct ieee802154_hw *hw, u8 page, u8 channel) in fakelb_hw_channel() argument
52 struct fakelb_phy *phy = hw->priv; in fakelb_hw_channel()
55 phy->page = page; in fakelb_hw_channel()
56 phy->channel = channel; in fakelb_hw_channel()
61 static int fakelb_hw_xmit(struct ieee802154_hw *hw, struct sk_buff *skb) in fakelb_hw_xmit() argument
63 struct fakelb_phy *current_phy = hw->priv, *phy; in fakelb_hw_xmit()
66 WARN_ON(current_phy->suspended); in fakelb_hw_xmit()
71 if (current_phy->page == phy->page && in fakelb_hw_xmit()
72 current_phy->channel == phy->channel) { in fakelb_hw_xmit()
76 ieee802154_rx_irqsafe(phy->hw, newskb, 0xcc); in fakelb_hw_xmit()
81 ieee802154_xmit_complete(hw, skb, false); in fakelb_hw_xmit()
85 static int fakelb_hw_start(struct ieee802154_hw *hw) in fakelb_hw_start() argument
87 struct fakelb_phy *phy = hw->priv; in fakelb_hw_start()
90 phy->suspended = false; in fakelb_hw_start()
91 list_add(&phy->list_ifup, &fakelb_ifup_phys); in fakelb_hw_start()
97 static void fakelb_hw_stop(struct ieee802154_hw *hw) in fakelb_hw_stop() argument
99 struct fakelb_phy *phy = hw->priv; in fakelb_hw_stop()
102 phy->suspended = true; in fakelb_hw_stop()
103 list_del(&phy->list_ifup); in fakelb_hw_stop()
108 fakelb_set_promiscuous_mode(struct ieee802154_hw *hw, const bool on) in fakelb_set_promiscuous_mode() argument
129 struct ieee802154_hw *hw; in fakelb_add_one() local
133 hw = ieee802154_alloc_hw(sizeof(*phy), &fakelb_ops); in fakelb_add_one()
134 if (!hw) in fakelb_add_one()
135 return -ENOMEM; in fakelb_add_one()
137 phy = hw->priv; in fakelb_add_one()
138 phy->hw = hw; in fakelb_add_one()
140 /* 868 MHz BPSK 802.15.4-2003 */ in fakelb_add_one()
141 hw->phy->supported.channels[0] |= 1; in fakelb_add_one()
142 /* 915 MHz BPSK 802.15.4-2003 */ in fakelb_add_one()
143 hw->phy->supported.channels[0] |= 0x7fe; in fakelb_add_one()
144 /* 2.4 GHz O-QPSK 802.15.4-2003 */ in fakelb_add_one()
145 hw->phy->supported.channels[0] |= 0x7FFF800; in fakelb_add_one()
146 /* 868 MHz ASK 802.15.4-2006 */ in fakelb_add_one()
147 hw->phy->supported.channels[1] |= 1; in fakelb_add_one()
148 /* 915 MHz ASK 802.15.4-2006 */ in fakelb_add_one()
149 hw->phy->supported.channels[1] |= 0x7fe; in fakelb_add_one()
150 /* 868 MHz O-QPSK 802.15.4-2006 */ in fakelb_add_one()
151 hw->phy->supported.channels[2] |= 1; in fakelb_add_one()
152 /* 915 MHz O-QPSK 802.15.4-2006 */ in fakelb_add_one()
153 hw->phy->supported.channels[2] |= 0x7fe; in fakelb_add_one()
154 /* 2.4 GHz CSS 802.15.4a-2007 */ in fakelb_add_one()
155 hw->phy->supported.channels[3] |= 0x3fff; in fakelb_add_one()
156 /* UWB Sub-gigahertz 802.15.4a-2007 */ in fakelb_add_one()
157 hw->phy->supported.channels[4] |= 1; in fakelb_add_one()
158 /* UWB Low band 802.15.4a-2007 */ in fakelb_add_one()
159 hw->phy->supported.channels[4] |= 0x1e; in fakelb_add_one()
160 /* UWB High band 802.15.4a-2007 */ in fakelb_add_one()
161 hw->phy->supported.channels[4] |= 0xffe0; in fakelb_add_one()
162 /* 750 MHz O-QPSK 802.15.4c-2009 */ in fakelb_add_one()
163 hw->phy->supported.channels[5] |= 0xf; in fakelb_add_one()
164 /* 750 MHz MPSK 802.15.4c-2009 */ in fakelb_add_one()
165 hw->phy->supported.channels[5] |= 0xf0; in fakelb_add_one()
166 /* 950 MHz BPSK 802.15.4d-2009 */ in fakelb_add_one()
167 hw->phy->supported.channels[6] |= 0x3ff; in fakelb_add_one()
168 /* 950 MHz GFSK 802.15.4d-2009 */ in fakelb_add_one()
169 hw->phy->supported.channels[6] |= 0x3ffc00; in fakelb_add_one()
171 ieee802154_random_extended_addr(&hw->phy->perm_extended_addr); in fakelb_add_one()
173 hw->phy->current_channel = 13; in fakelb_add_one()
174 phy->channel = hw->phy->current_channel; in fakelb_add_one()
176 hw->flags = IEEE802154_HW_PROMISCUOUS; in fakelb_add_one()
177 hw->parent = dev; in fakelb_add_one()
179 err = ieee802154_register_hw(hw); in fakelb_add_one()
184 list_add_tail(&phy->list, &fakelb_phys); in fakelb_add_one()
190 ieee802154_free_hw(phy->hw); in fakelb_add_one()
196 list_del(&phy->list); in fakelb_del()
198 ieee802154_unregister_hw(phy->hw); in fakelb_del()
199 ieee802154_free_hw(phy->hw); in fakelb_del()
208 err = fakelb_add_one(&pdev->dev); in fakelb_probe()
213 dev_info(&pdev->dev, "added %i fake ieee802154 hardware devices\n", numlbs); in fakelb_probe()
248 "ieee802154fakelb", -1, NULL, 0); in fakelb_init_module()