Migrate the TX path code out of if_ath and into a separate source file.
There's two reasons for this: * the raw and non-raw TX path shares a lot of duplicate code which should be refactored; * the 11n-ready chip TX path needs a little reworking.
This commit is contained in:
parent
cc338a54f7
commit
05a9c90aff
@ -568,6 +568,8 @@ dev/ath/if_ath.c optional ath \
|
||||
compile-with "${NORMAL_C} -I$S/dev/ath"
|
||||
dev/ath/if_ath_debug.c optional ath \
|
||||
compile-with "${NORMAL_C} -I$S/dev/ath"
|
||||
dev/ath/if_ath_tx.c optional ath \
|
||||
compile-with "${NORMAL_C} -I$S/dev/ath"
|
||||
dev/ath/if_ath_pci.c optional ath pci \
|
||||
compile-with "${NORMAL_C} -I$S/dev/ath"
|
||||
dev/ath/ah_osdep.c optional ath \
|
||||
|
File diff suppressed because it is too large
Load Diff
56
sys/dev/ath/if_ath_misc.h
Normal file
56
sys/dev/ath/if_ath_misc.h
Normal file
@ -0,0 +1,56 @@
|
||||
/*-
|
||||
* Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* without modification.
|
||||
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
* redistribution must be conditioned upon including a substantially
|
||||
* similar Disclaimer requirement for further binary redistribution.
|
||||
*
|
||||
* NO WARRANTY
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#ifndef __IF_ATH_MISC_H__
|
||||
#define __IF_ATH_MISC_H__
|
||||
|
||||
/*
|
||||
* This is where definitions for "public things" in if_ath.c
|
||||
* will go for the time being.
|
||||
*
|
||||
* Anything in here should eventually be moved out of if_ath.c
|
||||
* and into something else.
|
||||
*/
|
||||
|
||||
/* unaligned little endian access */
|
||||
#define LE_READ_2(p) \
|
||||
((u_int16_t) \
|
||||
((((u_int8_t *)(p))[0] ) | (((u_int8_t *)(p))[1] << 8)))
|
||||
#define LE_READ_4(p) \
|
||||
((u_int32_t) \
|
||||
((((u_int8_t *)(p))[0] ) | (((u_int8_t *)(p))[1] << 8) | \
|
||||
(((u_int8_t *)(p))[2] << 16) | (((u_int8_t *)(p))[3] << 24)))
|
||||
|
||||
extern int ath_tx_findrix(const struct ath_softc *sc, uint8_t rate);
|
||||
|
||||
extern struct ath_buf * ath_getbuf(struct ath_softc *sc);
|
||||
extern struct ath_buf * _ath_getbuf_locked(struct ath_softc *sc);
|
||||
|
||||
#endif
|
1029
sys/dev/ath/if_ath_tx.c
Normal file
1029
sys/dev/ath/if_ath_tx.c
Normal file
File diff suppressed because it is too large
Load Diff
44
sys/dev/ath/if_ath_tx.h
Normal file
44
sys/dev/ath/if_ath_tx.h
Normal file
@ -0,0 +1,44 @@
|
||||
/*-
|
||||
* Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* without modification.
|
||||
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
* redistribution must be conditioned upon including a substantially
|
||||
* similar Disclaimer requirement for further binary redistribution.
|
||||
*
|
||||
* NO WARRANTY
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#ifndef __IF_ATH_TX_H__
|
||||
#define __IF_ATH_TX_H__
|
||||
|
||||
extern void ath_freetx(struct mbuf *m);
|
||||
extern void ath_txfrag_cleanup(struct ath_softc *sc, ath_bufhead *frags,
|
||||
struct ieee80211_node *ni);
|
||||
extern int ath_txfrag_setup(struct ath_softc *sc, ath_bufhead *frags,
|
||||
struct mbuf *m0, struct ieee80211_node *ni);
|
||||
extern int ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni,
|
||||
struct ath_buf *bf, struct mbuf *m0);
|
||||
extern int ath_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
|
||||
const struct ieee80211_bpf_params *params);
|
||||
|
||||
#endif
|
@ -35,7 +35,7 @@ ATH_RATE?= sample # tx rate control algorithm
|
||||
.PATH: ${.CURDIR}/../../dev/ath/ath_hal
|
||||
|
||||
KMOD= if_ath
|
||||
SRCS= if_ath.c if_ath_pci.c if_ath_debug.c
|
||||
SRCS= if_ath.c if_ath_pci.c if_ath_debug.c if_ath_tx.c
|
||||
# NB: v3 eeprom support used by both AR5211 and AR5212; just include it
|
||||
SRCS+= ah_osdep.c ah.c ah_regdomain.c ah_eeprom_v3.c
|
||||
SRCS+= device_if.h bus_if.h pci_if.h opt_inet.h opt_ath.h opt_ah.h opt_wlan.h
|
||||
|
Loading…
Reference in New Issue
Block a user