X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fnet%2Fwireless%2Fwavelan.c;h=dade4b903579fe2d8f06f03cd3d9fe9c590d48fa;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=5b69befdab7451bced8d23b0046c65371449848b;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/net/wireless/wavelan.c b/drivers/net/wireless/wavelan.c index 5b69befda..dade4b903 100644 --- a/drivers/net/wireless/wavelan.c +++ b/drivers/net/wireless/wavelan.c @@ -1695,8 +1695,8 @@ static int wv_frequency_list(unsigned long ioaddr, /* I/O port of the card */ /* Look in the table if the frequency is allowed */ if (table[9 - (freq / 16)] & (1 << (freq % 16))) { /* Compute approximate channel number */ - while ((c < NELS(channel_bands)) && - (((channel_bands[c] >> 1) - 24) < freq)) + while ((((channel_bands[c] >> 1) - 24) < freq) && + (c < NELS(channel_bands))) c++; list[i].i = c; /* Set the list index */ @@ -2903,7 +2903,6 @@ static int wavelan_packet_xmit(struct sk_buff *skb, struct net_device * dev) { net_local *lp = (net_local *) dev->priv; unsigned long flags; - char data[ETH_ZLEN]; #ifdef DEBUG_TX_TRACE printk(KERN_DEBUG "%s: ->wavelan_packet_xmit(0x%X)\n", dev->name, @@ -2938,15 +2937,14 @@ static int wavelan_packet_xmit(struct sk_buff *skb, struct net_device * dev) * able to detect collisions, therefore in theory we don't really * need to pad. Jean II */ if (skb->len < ETH_ZLEN) { - memset(data, 0, ETH_ZLEN); - memcpy(data, skb->data, skb->len); - /* Write packet on the card */ - if(wv_packet_write(dev, data, ETH_ZLEN)) - return 1; /* We failed */ + skb = skb_padto(skb, ETH_ZLEN); + if (skb == NULL) + return 0; } - else if(wv_packet_write(dev, skb->data, skb->len)) - return 1; /* We failed */ + /* Write packet on the card */ + if(wv_packet_write(dev, skb->data, skb->len)) + return 1; /* We failed */ dev_kfree_skb(skb);