diff options
author | Pavel Roskin <proski@gnu.org> | 2007-06-13 21:11:37 -0400 |
---|---|---|
committer | Guido Guenther <agx@sigxcpu.org> | 2007-06-14 10:11:09 +0200 |
commit | 4378f631f40b2f9186f2169119f052eae88ad565 (patch) | |
tree | 630aff12cc1c06e313796155c47525dd91178e5c | |
parent | ad182de778ef8573e22eb929a7974d24a2d176dd (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.c | 36 | ||||
-rw-r--r-- | at76_usb.h | 4 |
2 files changed, 15 insertions, 25 deletions
@@ -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); @@ -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 */ |