summaryrefslogtreecommitdiffstats
path: root/sys/arch/octeon/dev/if_cnmac.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* spellingjsg2021-03-111-2/+2
|
* Do not reprogram address filter after MII status changevisa2021-02-171-5/+1
| | | | | The address filter is not affected by link parameter changes, so its reprogramming can be skipped.
* Revise cnmac(4)'s address filter setupvisa2021-02-131-8/+3
| | | | | | | | | Set up the DMAC filter in one go instead of doing it separately for unicast and multicast DMACs. This attempts to make the code a little more readable. The setup should now run a bit faster as well because it now does fewer register accesses. Tested on CN5020, CN6120 and CN7130.
* Rename the macro MCLGETI to MCLGETL and removes the dead parameter ifp.jan2020-12-121-2/+2
| | | | | | OK dlg@, bluhm@ No Opinion mpi@ Not against it claudio@
* Add kstat to cnmac(4)visa2020-09-041-11/+119
| | | | | | | | | | This makes various receive and transmit event counters readable. This additionally replaces the old, and somewhat unusual, way of updating error counters in ifp. Most of the hardware counters are 32 bits wide. Hence the code polls them periodically and adds the values to 64-bit software counters. The hardware counters are cleared when read.
* Inline handling of receive checksum offloadvisa2020-08-151-2/+15
|
* Change users of IFQ_SET_MAXLEN() and IFQ_IS_EMPTY() to use the "new" API.patrick2020-07-101-2/+2
| | | | ok dlg@ tobhe@
* Remove no-op cn30xxgmx_reset_board().visa2020-07-041-2/+1
|
* Assume that direct-mapped addresses come from the xkphys segment.visa2018-01-071-11/+4
|
* Add references to errata.visa2018-01-071-5/+6
|
* On wqe error, show also word2 and word3. Those might help in debugging.visa2017-11-261-1/+3
|
* Initialize Rx subsystems before enabling the processing of incomingvisa2017-11-261-4/+4
| | | | | | | | packets. Otherwise, a skosh of traffic may be handled using hardware default settings. One of the consequences is that packets can end up into a wrong POW group, causing a panic in cnmac_intr(). Panic reported by and testing help from Janne Johansson
* Submit incoming packets to the network stack in batches like is donevisa2017-11-181-25/+19
| | | | in many other NIC drivers. This reduces submission overhead.
* Move the packet input work requesting inside if_cnmac.c. This removesvisa2017-11-181-15/+36
| | | | a layer of abstraction that would complicate upcoming changes.
* Pass the software context as an argument to the interrupt handler.visa2017-11-181-19/+15
| | | | | This is now possible because each port has a dedicated work queue interrupt.
* Rename octeon_eth_* to cnmac_* for consistency with the driver's name.visa2017-11-181-225/+216
| | | | This also makes the code a bit less noisy to read.
* Check buffer size parameters at compile time.visa2017-11-041-3/+3
|
* One macro for cache line size is enough.visa2017-11-041-11/+9
|
* Assign each cnmac(4) port its own input work group, and assignvisa2017-11-021-10/+16
| | | | | the interrupt processing of each work group to one of the available CPUs. This enables some parallelism in the early stages of packet Rx.
* Revise MDIO driver code so that device instances can be attachedvisa2017-05-021-13/+2
| | | | | | | | | using fdt. This lets the system utilize multiple MDIO controllers. This patch enables all RJ45 Ethernet ports on EdgeRouter Pro. The SFP module slots do not work yet. OK kettenis@, jmatthew@
* Drop address conversion cruft.visa2017-04-021-2/+2
|
* add support for multiple transmit ifqueues per network interface.dlg2017-01-241-13/+14
| | | | | | | | | | | | | | | | | | | | | | | an ifq to transmit a packet is picked by the current traffic conditioner (ie, priq or hfsc) by providing an index into an array of ifqs. by default interfaces get a single ifq but can ask for more using if_attach_queues(). the vast majority of our drivers still think there's a 1:1 mapping between interfaces and transmit queues, so their if_start routines take an ifnet pointer instead of a pointer to the ifqueue struct. instead of changing all the drivers in the tree, drivers can opt into using an if_qstart routine and setting the IFXF_MPSAFE flag. the stack provides a compatability wrapper from the new if_qstart handler to the previous if_start handlers if IFXF_MPSAFE isnt set. enabling hfsc on an interface configures it to transmit everything through the first ifq. any other ifqs are left configured as priq, but unused, when hfsc is enabled. getting this in now so everyone can kick the tyres. ok mpi@ visa@ (who provided some tweaks for cnmac).
* Drop unnecessary #ifdef MBUF_TIMESTAMP.visa2016-11-051-4/+1
|
* Do not show a device unit number in the cnmac interrupt name. The samevisa2016-11-051-2/+2
| | | | | | interrupt drives all the cnmac ports. ok stsp@
* Make possible to change the link layer address of a cnmac(4) interface.visa2016-11-021-1/+2
| | | | Asked by and ok stsp@, ok jasper@
* Remove some annoying debug printfs to get rid of u_quad_t in cnmac.visa2016-08-141-17/+2
|
* Log RX errors only when the interface's debug flag is set.visa2016-08-061-34/+12
| | | | While here, remove unused PIP error code aliases.
* Drop a pointless link carrier check from the RX path.visa2016-08-051-20/+1
|
* Add support for jumbo frames.visa2016-08-041-28/+68
|
* Remove disabled jumbo frame checks. They will not be neededvisa2016-07-301-26/+1
| | | | for jumbo frame support.
* Drop a redundant parameter of octeon_eth_buf_free_work().visa2016-07-301-7/+5
|
* Add support for the second GMX interface on Octeon II. This enablesvisa2016-06-221-3/+3
| | | | | | | ports eth[0-3] on 8-port EdgeRouters. Currently, port eth0 maps to network interface cnmac4, eth1 to cnmac5 etc. ok dlg@, tested by martijn@
* Fill the packet data pool with standard mbuf clusters instead ofvisa2016-05-301-41/+83
| | | | | | | driver-specific memory blocks. This lets the cnmac(4) RX path run without an mbuf ext_free callback. ok uebayasi@
* Map ASX registers only if link control needs them.visa2016-05-291-17/+1
| | | | ok mpi@
* Drop a redundant set of FPA pool definitions.visa2016-05-241-2/+2
|
* Try to defragment overly long mbuf chains.visa2016-05-241-2/+9
| | | | ok mpi@
* Fix previous.visa2016-05-241-1/+2
|
* remove the function pointer from mbufs. this memory is shared with datatedu2016-05-231-6/+10
| | | | | | | via unions, and we don't want to make it easy to control the target. instead an integer index into an array of acceptable functions is used. drivers using custom functions must register them to receive an index. ok deraadt
* Make the TX path of cnmac(4) MP-safe and add some ifq oactive logic.visa2016-05-211-35/+52
| | | | Feedback from dlg@, ok mpi@
* panic() if an incoming packet does not consist of one buffer. Thisvisa2016-05-211-2/+4
| | | | makes the number of buffers visible.
* Fix the previous commit which made work queue entries get released toovisa2016-05-191-3/+3
| | | | early. octeon_eth_recv() will release them in case of packet drop.
* Disable dynamic short buffering to make all RX data land on buffersvisa2016-05-191-55/+12
| | | | taken from the packet data pool.
* Expand and remove macro OCTEON_ETH_TAP.visa2016-04-271-13/+5
|
* sc_resume_ch is used nowhere.visa2016-04-261-2/+1
|
* Drop an unused workaround which does not even compile.visa2016-04-261-19/+1
|
* G/C IFQ_SET_READY().mpi2016-04-131-2/+1
|
* A store to FPA does not need splnet(). The operation is atomic.visa2015-12-181-7/+1
|
* Simplify the setup of gather segments.visa2015-11-251-40/+6
|
* replace IFF_OACTIVE manipulation with mpsafe operations.dlg2015-11-251-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | there are two things shared between the network stack and drivers in the send path: the send queue and the IFF_OACTIVE flag. the send queue is now protected by a mutex. this diff makes the oactive functionality mpsafe too. IFF_OACTIVE is part of if_flags. there are two problems with that. firstly, if_flags is a short and we dont have any MI atomic operations to manipulate a short. secondly, while we could make the IFF_OACTIVE operates mpsafe, all changes to other flags would have to be made safe at the same time, otherwise a read-modify-write cycle on their updates could clobber the oactive change. instead, this moves the oactive mark into struct ifqueue and provides an API for changing it. there's ifq_set_oactive, ifq_clr_oactive, and ifq_is_oactive. these are modelled on ifsq_set_oactive, ifsq_clr_oactive, and ifsq_is_oactive in dragonflybsd. this diff includes changes to all the drivers manipulating IFF_OACTIVE to now use the ifsq_{set,clr_is}_oactive API too. ok kettenis@ mpi@ jmatthew@ deraadt@
* You only need <net/if_dl.h> if you're using LLADDR() or a sockaddr_dl.mpi2015-11-241-2/+1
|