struct b43_dmadesc_meta { /* The kernel DMA-able buffer. */ struct sk_buff *skb; /* DMA base bus-address of the descriptor buffer. */
dma_addr_t dmaaddr; /* ieee80211 TX status. Only used once per 802.11 frag. */ bool is_last_fragment;
};
struct b43_dmaring;
/* Lowlevel DMA operations that differ between 32bit and 64bit DMA. */ struct b43_dma_ops { struct b43_dmadesc_generic *(*idx2desc) (struct b43_dmaring * ring, int slot, struct b43_dmadesc_meta **
meta); void (*fill_descriptor) (struct b43_dmaring * ring, struct b43_dmadesc_generic * desc,
dma_addr_t dmaaddr, u16 bufsize, int start, int end, int irq); void (*poke_tx) (struct b43_dmaring * ring, int slot); void (*tx_suspend) (struct b43_dmaring * ring); void (*tx_resume) (struct b43_dmaring * ring); int (*get_current_rxslot) (struct b43_dmaring * ring); void (*set_current_rxslot) (struct b43_dmaring * ring, int slot);
};
struct b43_dmaring { /* Lowlevel DMA ops. */ conststruct b43_dma_ops *ops; /* Kernel virtual base address of the ring memory. */ void *descbase; /* Meta data about all descriptors. */ struct b43_dmadesc_meta *meta; /* Cache of TX headers for each TX frame. * This is to avoid an allocation on each TX. * This is NULL for an RX ring.
*/
u8 *txhdr_cache; /* (Unadjusted) DMA base bus-address of the ring memory. */
dma_addr_t dmabase; /* Number of descriptor slots in the ring. */ int nr_slots; /* Number of used descriptor slots. */ int used_slots; /* Currently used slot in the ring. */ int current_slot; /* Frameoffset in octets. */
u32 frameoffset; /* Descriptor buffer size. */
u16 rx_buffersize; /* The MMIO base register of the DMA controller. */
u16 mmio_base; /* DMA controller index number (0-5). */ int index; /* Boolean. Is this a TX ring? */ bool tx; /* The type of DMA engine used. */ enum b43_dmatype type; /* Boolean. Is this ring stopped at ieee80211 level? */ bool stopped; /* The QOS priority assigned to this ring. Only used for TX rings.
* This is the mac80211 "queue" value. */
u8 queue_prio; struct b43_wldev *dev; #ifdef CONFIG_B43_DEBUG /* Maximum number of used slots. */ int max_used_slots; /* Last time we injected a ring overflow. */ unsignedlong last_injected_overflow; /* Statistics: Number of successfully transmitted packets */
u64 nr_succeed_tx_packets; /* Statistics: Number of failed TX packets */
u64 nr_failed_tx_packets; /* Statistics: Total number of TX plus all retries. */
u64 nr_total_packet_tries; #endif/* CONFIG_B43_DEBUG */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.