aboutsummaryrefslogtreecommitdiff
path: root/at76_usb.c
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-06-13 21:11:37 -0400
committerGuido Guenther <agx@sigxcpu.org>2007-06-14 10:11:09 +0200
commit4378f631f40b2f9186f2169119f052eae88ad565 (patch)
tree630aff12cc1c06e313796155c47525dd91178e5c /at76_usb.c
parentad182de778ef8573e22eb929a7974d24a2d176dd (diff)
[PATCH] Save results of usb_sndbulkpipe() and usb_rcvbulkpipe()
Calculate the pipe numbers on startup and keep them in at76_priv instead of keeping the endpoint numbers. Pipe numbers don't change. Signed-off-by: Pavel Roskin <proski@gnu.org>
Diffstat (limited to 'at76_usb.c')
-rw-r--r--at76_usb.c36
1 files changed, 13 insertions, 23 deletions
diff --git a/at76_usb.c b/at76_usb.c
index 6064171..c763457 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -1647,9 +1647,7 @@ static void at76_write_bulk_callback(struct urb *urb)
le16_to_cpu(mgmt_buf->wlength) +
offsetof(struct at76_tx_buffer, packet));
usb_fill_bulk_urb(priv->write_urb, priv->udev,
- usb_sndbulkpipe(priv->udev,
- priv->bulk_out_endpointAddr),
- priv->bulk_out_buffer,
+ priv->tx_bulk_pipe, priv->bulk_out_buffer,
le16_to_cpu(mgmt_buf->wlength) +
mgmt_buf->padding + AT76_TX_HDRLEN,
at76_write_bulk_callback, priv);
@@ -1715,13 +1713,10 @@ static int at76_send_mgmt_bulk(struct at76_priv *priv,
memcpy(priv->bulk_out_buffer, txbuf,
le16_to_cpu(txbuf->wlength) + AT76_TX_HDRLEN);
usb_fill_bulk_urb(priv->write_urb, priv->udev,
- usb_sndbulkpipe(priv->udev,
- priv->bulk_out_endpointAddr),
- priv->bulk_out_buffer,
- le16_to_cpu(txbuf->wlength) +
- txbuf->padding +
- AT76_TX_HDRLEN,
- at76_write_bulk_callback, priv);
+ priv->tx_bulk_pipe, priv->bulk_out_buffer,
+ le16_to_cpu(txbuf->wlength) + txbuf->padding +
+ AT76_TX_HDRLEN, at76_write_bulk_callback,
+ priv);
ret = usb_submit_urb(priv->write_urb, GFP_ATOMIC);
if (ret) {
err("%s: %s error in tx submit urb: %d",
@@ -2290,7 +2285,8 @@ static int at76_alloc_urbs(struct at76_priv *priv,
err("No free urbs available");
return -ENOMEM;
}
- priv->bulk_in_endpointAddr = endpoint->bEndpointAddress;
+ priv->rx_bulk_pipe =
+ usb_rcvbulkpipe(udev, endpoint->bEndpointAddress);
}
if (((endpoint->bEndpointAddress & 0x80) == 0x00) &&
@@ -2303,18 +2299,16 @@ static int at76_alloc_urbs(struct at76_priv *priv,
}
buffer_size = sizeof(struct at76_tx_buffer) +
MAX_PADDING_SIZE;
- priv->bulk_out_endpointAddr =
- endpoint->bEndpointAddress;
- priv->bulk_out_buffer =
+ priv->tx_bulk_pipe =
+ usb_sndbulkpipe(udev, endpoint->bEndpointAddress),
+ priv->bulk_out_buffer =
kmalloc(buffer_size, GFP_KERNEL);
if (!priv->bulk_out_buffer) {
err("couldn't allocate bulk_out_buffer");
return -ENOMEM;
}
usb_fill_bulk_urb(priv->write_urb, udev,
- usb_sndbulkpipe(udev,
- endpoint->
- bEndpointAddress),
+ priv->tx_bulk_pipe,
priv->bulk_out_buffer, buffer_size,
at76_write_bulk_callback, priv);
}
@@ -3746,9 +3740,7 @@ static int at76_tx(struct sk_buff *skb, struct net_device *netdev)
netif_stop_queue(netdev);
netdev->trans_start = jiffies;
- usb_fill_bulk_urb(priv->write_urb, priv->udev,
- usb_sndbulkpipe(priv->udev,
- priv->bulk_out_endpointAddr),
+ usb_fill_bulk_urb(priv->write_urb, priv->udev, priv->tx_bulk_pipe,
tx_buffer, submit_len, at76_write_bulk_callback,
priv);
ret = usb_submit_urb(priv->write_urb, GFP_ATOMIC);
@@ -3811,9 +3803,7 @@ static int at76_submit_rx_urb(struct at76_priv *priv)
}
size = skb_tailroom(skb);
- usb_fill_bulk_urb(priv->read_urb, priv->udev,
- usb_rcvbulkpipe(priv->udev,
- priv->bulk_in_endpointAddr),
+ usb_fill_bulk_urb(priv->read_urb, priv->udev, priv->rx_bulk_pipe,
skb_put(skb, size), size, at76_read_bulk_callback,
priv);
ret = usb_submit_urb(priv->read_urb, GFP_ATOMIC);