diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-08 14:15:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-08 14:15:23 -0400 |
commit | f2d7499be1b1fe1cd8a5e6a01c1f44173894a241 (patch) | |
tree | 64d341a90d8cb831a5097e365d303367906f1373 /drivers/net/wireless/p54/p54common.c | |
parent | 8d659f5e43c5db2630e85f507b7384365e9e1c1e (diff) | |
parent | 76aab2c1eae491a5d73ac83deec97dd28ebac584 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (99 commits)
pkt_sched: Fix actions referencing
bnx2x: fix logical op
tcp: (whitespace only) fix confusing indentation
pkt_sched: Fix qdisc config when link is down.
[Bluetooth] Add full quirk implementation for btusb driver
[Bluetooth] Removal of unnecessary ignore module parameter
[Bluetooth] Add parameters to control BNEP header compression
ath9k: Revamp wireless mode usage
ath9k: More unused macros
ath9k: Remove a few unused macros and fix indentation
ath9k: Use mac80211's band macros and remove enum hal_freq_band
ath9k: Remove redundant data structure ath9k_txq_info
ath9k: Cleanup data structures related to HW capabilities
ath9k: work around gcc ICEs
ath9k: Add new Atheros IEEE 802.11n driver
ath5k: remove Atheros 11n devices from supported list
list.h: add list_cut_position()
list.h: Add list_splice_tail() and list_splice_tail_init()
p54: swap short slot time dcf values
rt2x00: Block all unsupported modes
...
Diffstat (limited to 'drivers/net/wireless/p54/p54common.c')
-rw-r--r-- | drivers/net/wireless/p54/p54common.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 4da89ea9b561..83cd85e1f847 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
@@ -553,6 +553,7 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
553 | struct ieee80211_tx_queue_stats *current_queue; | 553 | struct ieee80211_tx_queue_stats *current_queue; |
554 | struct p54_common *priv = dev->priv; | 554 | struct p54_common *priv = dev->priv; |
555 | struct p54_control_hdr *hdr; | 555 | struct p54_control_hdr *hdr; |
556 | struct ieee80211_hdr *ieee80211hdr = (struct ieee80211_hdr *)skb->data; | ||
556 | struct p54_tx_control_allocdata *txhdr; | 557 | struct p54_tx_control_allocdata *txhdr; |
557 | size_t padding, len; | 558 | size_t padding, len; |
558 | u8 rate; | 559 | u8 rate; |
@@ -605,6 +606,19 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
605 | if (padding) | 606 | if (padding) |
606 | txhdr->align[0] = padding; | 607 | txhdr->align[0] = padding; |
607 | 608 | ||
609 | /* FIXME: The sequence that follows is needed for this driver to | ||
610 | * work with mac80211 since "mac80211: fix TX sequence numbers". | ||
611 | * As with the temporary code in rt2x00, changes will be needed | ||
612 | * to get proper sequence numbers on beacons. In addition, this | ||
613 | * patch places the sequence number in the hardware state, which | ||
614 | * limits us to a single virtual state. | ||
615 | */ | ||
616 | if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) { | ||
617 | if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT) | ||
618 | priv->seqno += 0x10; | ||
619 | ieee80211hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); | ||
620 | ieee80211hdr->seq_ctrl |= cpu_to_le16(priv->seqno); | ||
621 | } | ||
608 | /* modifies skb->cb and with it info, so must be last! */ | 622 | /* modifies skb->cb and with it info, so must be last! */ |
609 | p54_assign_address(dev, skb, hdr, skb->len); | 623 | p54_assign_address(dev, skb, hdr, skb->len); |
610 | 624 | ||
@@ -803,8 +817,8 @@ static void p54_set_vdcf(struct ieee80211_hw *dev) | |||
803 | 817 | ||
804 | if (dev->conf.flags & IEEE80211_CONF_SHORT_SLOT_TIME) { | 818 | if (dev->conf.flags & IEEE80211_CONF_SHORT_SLOT_TIME) { |
805 | vdcf->slottime = 9; | 819 | vdcf->slottime = 9; |
806 | vdcf->magic1 = 0x00; | 820 | vdcf->magic1 = 0x10; |
807 | vdcf->magic2 = 0x10; | 821 | vdcf->magic2 = 0x00; |
808 | } else { | 822 | } else { |
809 | vdcf->slottime = 20; | 823 | vdcf->slottime = 20; |
810 | vdcf->magic1 = 0x0a; | 824 | vdcf->magic1 = 0x0a; |