|
@@ -108,6 +108,12 @@
|
|
|
* Don't use skb_push()/skb_pull()/skb_reserve() on the skb, as
|
|
|
* wimax_msg_send() depends on skb->data being placed at the
|
|
|
* beginning of the user message.
|
|
|
+ *
|
|
|
+ * Unlike other WiMAX stack calls, this call can be used way early,
|
|
|
+ * even before wimax_dev_add() is called, as long as the
|
|
|
+ * wimax_dev->net_dev pointer is set to point to a proper
|
|
|
+ * net_dev. This is so that drivers can use it early in case they need
|
|
|
+ * to send stuff around or communicate with user space.
|
|
|
*/
|
|
|
struct sk_buff *wimax_msg_alloc(struct wimax_dev *wimax_dev,
|
|
|
const char *pipe_name,
|
|
@@ -115,7 +121,7 @@ struct sk_buff *wimax_msg_alloc(struct wimax_dev *wimax_dev,
|
|
|
gfp_t gfp_flags)
|
|
|
{
|
|
|
int result;
|
|
|
- struct device *dev = wimax_dev->net_dev->dev.parent;
|
|
|
+ struct device *dev = wimax_dev_to_dev(wimax_dev);
|
|
|
size_t msg_size;
|
|
|
void *genl_msg;
|
|
|
struct sk_buff *skb;
|
|
@@ -161,7 +167,6 @@ error_genlmsg_put:
|
|
|
error_new:
|
|
|
nlmsg_free(skb);
|
|
|
return ERR_PTR(result);
|
|
|
-
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(wimax_msg_alloc);
|
|
|
|
|
@@ -256,10 +261,16 @@ EXPORT_SYMBOL_GPL(wimax_msg_len);
|
|
|
* Don't use skb_push()/skb_pull()/skb_reserve() on the skb, as
|
|
|
* wimax_msg_send() depends on skb->data being placed at the
|
|
|
* beginning of the user message.
|
|
|
+ *
|
|
|
+ * Unlike other WiMAX stack calls, this call can be used way early,
|
|
|
+ * even before wimax_dev_add() is called, as long as the
|
|
|
+ * wimax_dev->net_dev pointer is set to point to a proper
|
|
|
+ * net_dev. This is so that drivers can use it early in case they need
|
|
|
+ * to send stuff around or communicate with user space.
|
|
|
*/
|
|
|
int wimax_msg_send(struct wimax_dev *wimax_dev, struct sk_buff *skb)
|
|
|
{
|
|
|
- struct device *dev = wimax_dev->net_dev->dev.parent;
|
|
|
+ struct device *dev = wimax_dev_to_dev(wimax_dev);
|
|
|
void *msg = skb->data;
|
|
|
size_t size = skb->len;
|
|
|
might_sleep();
|