summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/orinoco.c
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2006-04-07 10:10:41 +0200
committerJohn W. Linville <linville@tuxdriver.com>2006-04-24 22:15:51 +0200
commit8d5be088263b0d3dbb7e7959b7c403b3d026a5d3 (patch)
tree912fd8275e7f96a22f3c4935ffba86a520e97b63 /drivers/net/wireless/orinoco.c
parent[PATCH] orinoco replace hermes_write_words() with hermes_write_bytes() (diff)
downloadlinux-8d5be088263b0d3dbb7e7959b7c403b3d026a5d3.tar.xz
linux-8d5be088263b0d3dbb7e7959b7c403b3d026a5d3.zip
[PATCH] orinoco: don't use any padding for Tx frames
hermes_bap_pwrite() supports odd-sized packets now. There is no minimal packet size for 802.11. Also, hermes_bap_pwrite() supports odd-sized packets now. This removes all reasons to pad the Tx data. Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/orinoco.c')
-rw-r--r--drivers/net/wireless/orinoco.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 173e9e4523c0..9fde17bebebf 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -423,7 +423,7 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
u16 txfid = priv->txfid;
char *p;
struct ethhdr *eh;
- int len, data_len, data_off;
+ int data_len, data_off;
struct hermes_tx_descriptor desc;
unsigned long flags;
@@ -455,13 +455,10 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
return NETDEV_TX_OK;
}
- /* Length of the packet body */
- /* FIXME: what if the skb is smaller than this? */
- len = max_t(int, ALIGN(skb->len, 2), ETH_ZLEN);
- skb = skb_padto(skb, len);
- if (skb == NULL)
+ /* Check packet length */
+ data_len = skb->len;
+ if (data_len < ETH_HLEN)
goto fail;
- len -= ETH_HLEN;
eh = (struct ethhdr *)skb->data;
@@ -485,7 +482,7 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
/* Encapsulate Ethernet-II frames */
if (ntohs(eh->h_proto) > ETH_DATA_LEN) { /* Ethernet-II frame */
struct header_struct hdr;
- data_len = len;
+ data_len = skb->len - ETH_HLEN;
data_off = HERMES_802_3_OFFSET + sizeof(hdr);
p = skb->data + ETH_HLEN;
@@ -507,21 +504,13 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
stats->tx_errors++;
goto fail;
}
- /* Actual xfer length - allow for padding */
- len = ALIGN(data_len, 2);
- if (len < ETH_ZLEN - ETH_HLEN)
- len = ETH_ZLEN - ETH_HLEN;
} else { /* IEEE 802.3 frame */
- data_len = len + ETH_HLEN;
+ data_len = skb->len;
data_off = HERMES_802_3_OFFSET;
p = skb->data;
- /* Actual xfer length - round up for odd length packets */
- len = ALIGN(data_len, 2);
- if (len < ETH_ZLEN)
- len = ETH_ZLEN;
}
- err = hermes_bap_pwrite_pad(hw, USER_BAP, p, data_len, len,
+ err = hermes_bap_pwrite(hw, USER_BAP, p, data_len,
txfid, data_off);
if (err) {
printk(KERN_ERR "%s: Error %d writing packet to BAP\n",