Commit 5665998c authored by Jussi Kivilinna's avatar Jussi Kivilinna Committed by David S. Miller

rndis_host: export functions

Export rndis_host functions and also rename rndis_bind() to
generic_rndis_bind() for modules using rndis_host as base.
Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7517579a
...@@ -60,13 +60,14 @@ ...@@ -60,13 +60,14 @@
* RNDIS notifications from device: command completion; "reverse" * RNDIS notifications from device: command completion; "reverse"
* keepalives; etc * keepalives; etc
*/ */
static void rndis_status(struct usbnet *dev, struct urb *urb) void rndis_status(struct usbnet *dev, struct urb *urb)
{ {
devdbg(dev, "rndis status urb, len %d stat %d", devdbg(dev, "rndis status urb, len %d stat %d",
urb->actual_length, urb->status); urb->actual_length, urb->status);
// FIXME for keepalives, respond immediately (asynchronously) // FIXME for keepalives, respond immediately (asynchronously)
// if not an RNDIS status, do like cdc_status(dev,urb) does // if not an RNDIS status, do like cdc_status(dev,urb) does
} }
EXPORT_SYMBOL_GPL(rndis_status);
/* /*
* RPC done RNDIS-style. Caller guarantees: * RPC done RNDIS-style. Caller guarantees:
...@@ -78,7 +79,7 @@ static void rndis_status(struct usbnet *dev, struct urb *urb) ...@@ -78,7 +79,7 @@ static void rndis_status(struct usbnet *dev, struct urb *urb)
* Call context is likely probe(), before interface name is known, * Call context is likely probe(), before interface name is known,
* which is why we won't try to use it in the diagnostics. * which is why we won't try to use it in the diagnostics.
*/ */
static int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf) int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf)
{ {
struct cdc_state *info = (void *) &dev->data; struct cdc_state *info = (void *) &dev->data;
int master_ifnum; int master_ifnum;
...@@ -187,6 +188,7 @@ static int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf) ...@@ -187,6 +188,7 @@ static int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf)
dev_dbg(&info->control->dev, "rndis response timeout\n"); dev_dbg(&info->control->dev, "rndis response timeout\n");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
EXPORT_SYMBOL_GPL(rndis_command);
/* /*
* rndis_query: * rndis_query:
...@@ -253,7 +255,7 @@ static int rndis_query(struct usbnet *dev, struct usb_interface *intf, ...@@ -253,7 +255,7 @@ static int rndis_query(struct usbnet *dev, struct usb_interface *intf,
return -EDOM; return -EDOM;
} }
static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) int generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf)
{ {
int retval; int retval;
struct net_device *net = dev->net; struct net_device *net = dev->net;
...@@ -377,8 +379,9 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) ...@@ -377,8 +379,9 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
kfree(u.buf); kfree(u.buf);
return retval; return retval;
} }
EXPORT_SYMBOL_GPL(generic_rndis_bind);
static void rndis_unbind(struct usbnet *dev, struct usb_interface *intf) void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
{ {
struct rndis_halt *halt; struct rndis_halt *halt;
...@@ -393,11 +396,12 @@ static void rndis_unbind(struct usbnet *dev, struct usb_interface *intf) ...@@ -393,11 +396,12 @@ static void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
usbnet_cdc_unbind(dev, intf); usbnet_cdc_unbind(dev, intf);
} }
EXPORT_SYMBOL_GPL(rndis_unbind);
/* /*
* DATA -- host must not write zlps * DATA -- host must not write zlps
*/ */
static int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb) int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{ {
/* peripheral may have batched packets to us... */ /* peripheral may have batched packets to us... */
while (likely(skb->len)) { while (likely(skb->len)) {
...@@ -439,8 +443,9 @@ static int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb) ...@@ -439,8 +443,9 @@ static int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
/* caller will usbnet_skb_return the remaining packet */ /* caller will usbnet_skb_return the remaining packet */
return 1; return 1;
} }
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
static struct sk_buff * struct sk_buff *
rndis_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags) rndis_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
{ {
struct rndis_data_hdr *hdr; struct rndis_data_hdr *hdr;
...@@ -485,12 +490,13 @@ rndis_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags) ...@@ -485,12 +490,13 @@ rndis_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
/* FIXME make the last packet always be short ... */ /* FIXME make the last packet always be short ... */
return skb; return skb;
} }
EXPORT_SYMBOL_GPL(rndis_tx_fixup);
static const struct driver_info rndis_info = { static const struct driver_info rndis_info = {
.description = "RNDIS device", .description = "RNDIS device",
.flags = FLAG_ETHER | FLAG_FRAMING_RN | FLAG_NO_SETINT, .flags = FLAG_ETHER | FLAG_FRAMING_RN | FLAG_NO_SETINT,
.bind = rndis_bind, .bind = generic_rndis_bind,
.unbind = rndis_unbind, .unbind = rndis_unbind,
.status = rndis_status, .status = rndis_status,
.rx_fixup = rndis_rx_fixup, .rx_fixup = rndis_rx_fixup,
......
...@@ -244,5 +244,14 @@ struct rndis_keepalive_c { /* IN (optionally OUT) */ ...@@ -244,5 +244,14 @@ struct rndis_keepalive_c { /* IN (optionally OUT) */
RNDIS_PACKET_TYPE_ALL_MULTICAST | \ RNDIS_PACKET_TYPE_ALL_MULTICAST | \
RNDIS_PACKET_TYPE_PROMISCUOUS) RNDIS_PACKET_TYPE_PROMISCUOUS)
extern void rndis_status(struct usbnet *dev, struct urb *urb);
extern int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf);
extern int generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf);
extern void rndis_unbind(struct usbnet *dev, struct usb_interface *intf);
extern int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb);
extern struct sk_buff *
rndis_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags);
#endif /* __RNDIS_HOST_H */ #endif /* __RNDIS_HOST_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment