Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 008d5590 authored by Roger While's avatar Roger While Committed by Jeff Garzik
Browse files

[wireless prism54] Fix frame length



prism54 is leaking information when passing transmits to the firmware.
There is no requirement to adjust the length to >= ETH_ZLEN.
Just pass the skb length (after possible adjustment).

Signed-off-by: default avatarRoger While <simrw@sim-basis.de>
Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
parent d89a64be
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -97,12 +97,6 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
	/* lock the driver code */
	spin_lock_irqsave(&priv->slock, flags);

	/* determine the amount of fragments needed to store the frame */

	frame_size = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
	if (init_wds)
		frame_size += 6;

	/* check whether the destination queue has enough fragments for the frame */
	curr_frag = le32_to_cpu(cb->driver_curr_frag[ISL38XX_CB_TX_DATA_LQ]);
	if (unlikely(curr_frag - priv->free_data_tx >= ISL38XX_CB_TX_QSIZE)) {
@@ -213,6 +207,7 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
	/* store the skb address for future freeing  */
	priv->data_low_tx[index] = skb;
	/* set the proper fragment start address and size information */
	frame_size = skb->len;
	fragment->size = cpu_to_le16(frame_size);
	fragment->flags = cpu_to_le16(0);	/* set to 1 if more fragments */
	fragment->address = cpu_to_le32(pci_map_address);