summaryrefslogtreecommitdiff
path: root/sys/dev
AgeCommit message (Collapse)Author
2007-08-26Fix XXX comment. There is nothing wrong with the following statement.Marcus Glocker
2007-08-25Remove FW command for WEP, it doesn't work with this FW versionMarcus Glocker
(not supported). We always did software WEP. Spotted by Mikore dot Li at sun dot com. OK claudio@
2007-08-25Fix typo in debug line.Marcus Glocker
2007-08-25Fix debug output for some FW commands.Marcus Glocker
2007-08-24enable interrupts when the interface comes up.David Gwynne
i seem to be crashing the rx unit though which is responsible for generating the interrupts. i havent got any yet.
2007-08-24this is what the interrupt handler will look like. there'll be some addedDavid Gwynne
lines in here later that call the tx and rx completions.
2007-08-24the chip has three rx rings, one for normal packets, one for jumbos, andDavid Gwynne
one for lro. the manual says that they all have to have descriptors in them for correct operation. i dont care about jumbos and lro at this point so im going to point the descriptors in those rings at a dummy 64k buffer. this diff adds the allocation of that buffer.
2007-08-24the ring sizes are reprresented by 32 bit fields in the context descirptor,David Gwynne
so use htole32 to get a value for them, not htole64.
2007-08-24On the older devices, apparently early configuration (and doing it againTheo de Raadt
later) removes the need for forced device disconnection. And now they do not bounce back a few times, but go to 500mA on the 2nd connection.
2007-08-23implement the completion half of the tx path. the driver keeps track ofDavid Gwynne
mbufs we've put on the hardware with the nxe_pkt struct. this struct contains a unique id for each pkt which is used the hardwares tx descriptor so we could identify which pkts its finished transmitting. turns out the hardware doesnt return ids though, it tells us which slots in the tx ring its up to. so now i stash the slot a pkt went into in the pkt_id field.
2007-08-23configure the NIU to rx packets that will fit into the mbufs we willDavid Gwynne
allocate for it, rather than the default of 1600.
2007-08-23wrap writes to the doorbell register.David Gwynne
2007-08-23the first read or write in the crb space after you switch the windowsDavid Gwynne
tends to be junk, except in the pci regs for some reason. read the crb window register back after setting it to force the junk to go away. this fixes some really weird issues i had.
2007-08-23program the niu with the mac address in the right order.David Gwynne
2007-08-23tweak the register macros a bit. add macros for the NIUs port registersDavid Gwynne
which are useful to see whats happening on the wire.
2007-08-23"correctly" activate high-power charging on (hopefully) all devices,Theo de Raadt
based on work in barry/bcharge; tested on a few units. still not tested on pearl-style units... if someone has one, contact me please
2007-08-23syncTheo de Raadt
2007-08-23more berry device typeTheo de Raadt
2007-08-23syncTheo de Raadt
2007-08-23blackberry pearlTheo de Raadt
2007-08-22when running out of rx buffers, allocate a new mbuf and copy the rxDamien Bergamini
buffer into it using m_copym2() instead of just dropping the received frame. otherwise, it may happen that all rx buffers are queued by tcp_input() waiting for a frame that will never arrive because we are dropping it. when it happens, rx stop working and it is hard to recover from this. the problem is not visible when using WEP because WEP decryption is currently done by software and that rx buffers are copied into mbufs by the software decryption code. while i'm here, increase the number of rx buffers allocated by wpi(4) from 80 to 96 to limit the number of copies. problem and solution found by bluhm@ - thanks.
2007-08-22fix compilation with KDGBJasper Lievisse Adriaanse
from Nicholas Marriott ok deraadt@
2007-08-15oops, forgot the print the intr string on attachDavid Gwynne
2007-08-15hook the interrupt upDavid Gwynne
2007-08-15implement nxe_start. this is enough to put packets on the wire. the sglDavid Gwynne
layout of this chip is extremely weird. there's only 4 sg entries in each tx descriptor, but theyre out of order. you can use multiple tx descriptors to tx more than 4 segments, but instead of letting you use all 64bytes that a tx descriptor uses you just use the same 4 sg entries, and up to 8 descs.
2007-08-15program the mac control thing according the the multicast or promiscDavid Gwynne
settings that we ask for. set these flags when the interface is brought up.
2007-08-15program the lladdr when the chip is brought up.David Gwynne
2007-08-15sync all the bits for use by the hardware, and then point the chip at them.David Gwynne
the firmware is now ready to send and recv packets.
2007-08-15when the interface is brought up allocate all the things that are neededDavid Gwynne
for the chip to work with, eg, the context region, the cmd consumer, the cmd/tx ring, the status ring, and the 3 rx rings. free it all when we bring the chip down.
2007-08-15allocate pkt lists when the interface is brought up.David Gwynne
make nxe_up return void and report its failure by not setting the RUNNING flag like every other nic ive read.
2007-08-15here are the tx, rx, and status (rx completion) descriptors used in the ioDavid Gwynne
paths.
2007-08-15move the firmware to the right state before we start allocating everythingDavid Gwynne
for it.
2007-08-15lock accesses to the ioctl handler.David Gwynne
2007-08-15this code definitely uses queue.hDavid Gwynne
2007-08-15tell the ioctl handler to call nxe_up/down/iff at the right times. theyDavid Gwynne
are just stubs at the moment though.
2007-08-15code to allocate, free, sync, and iterate over rings. this is based looselyDavid Gwynne
on the fifos used in tht. very loosely. tht fifos were set up to take small writes of varying length and read or write them into the dmaable memory. nxe has fixed sized descriptors in each ring, so this ring handling is set up to just give pointers to the memory to be filled in directly. the iterator just pushes this pointer around the ring.
2007-08-15steal pkt handling from tht. this lets us keep track of mbufs when theyreDavid Gwynne
on the hardware. it stashes ids and dma bits.
2007-08-15implement link state monitoring. you have to poll the firmware to see theDavid Gwynne
state of the link. since im doing this already for the temp sensor i merged the polling for both and do them at the same time. i poll every 5 seconds now instead of every 60. i can now tell if the cable between the nxe and tht has fallen out. white space fixes while im here.
2007-08-15hook up the ether and ifmedia layers. you can see nxe in ifconfig outputDavid Gwynne
now. just the lladdr though, i havent filled in enough of the ioctl handler for more yet.
2007-08-15hook a kernel sensor up to the temp register on the chip. poll out of aDavid Gwynne
timeout since reading registers doesnt need a process context.
2007-08-15start the init of the firmware. it can take a long time, so we start it inDavid Gwynne
attach and make sure its finished at mountroot time.
2007-08-15When polling call ahaintr() at splbio(). Noticed by and fix tested byKenneth R Westerback
todd@.
2007-08-15pull my wrapper around single segment dma allocations in. its got to be atDavid Gwynne
least half a dozen drivers now that use this.
2007-08-15white space fixesDavid Gwynne
2007-08-15define the rest of the registers i know about: the interrupt registers,David Gwynne
init, xg config, ring and context addresses, temp sensor, firmware states.
2007-08-15fetch the user info off the board. the lladdr and firmware version areDavid Gwynne
stored on it. display the fw and lladdr in attach.
2007-08-15we're a nic, so we need the arpcom and ifmedia structs in our softcDavid Gwynne
2007-08-15read the board information off the flash. check it, and stash what type ofDavid Gwynne
board they say we are.
2007-08-15provide a map of the board type the flash memory will tell us we are to theDavid Gwynne
type of interface it provides. drivers need to deal with 10Gb (XGB) and gigabit (GBE) differently.
2007-08-15code to unmap the register windows if something in attach goes horriblyDavid Gwynne
wrong.