aboutsummaryrefslogtreecommitdiff
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
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>
-rw-r--r--at76_usb.c36
-rw-r--r--at76_usb.h4
2 files changed, 15 insertions, 25 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);
diff --git a/at76_usb.h b/at76_usb.h
index 2a292b5..aeabc4a 100644
--- a/at76_usb.h
+++ b/at76_usb.h
@@ -465,12 +465,12 @@ struct at76_priv {
struct iw_statistics wstats;
struct sk_buff *rx_skb; /* skbuff for receiving packets */
- __u8 bulk_in_endpointAddr; /* the address of the bulk in endpoint */
+ unsigned int rx_bulk_pipe; /* bulk in endpoint */
void *bulk_out_buffer; /* the buffer to send data */
struct urb *write_urb; /* the urb used to send data */
struct urb *read_urb;
- __u8 bulk_out_endpointAddr; /* the address of the bulk out endpoint */
+ unsigned int tx_bulk_pipe; /* bulk out endpoint */
int open_count; /* number of times this port has been opened */
struct mutex mtx; /* locks this structure */