History log of /src/sys/dev/pci/if_rtwn.c |
Revision | | Date | Author | Comments |
1.21 |
| 01-Aug-2023 |
mrg | fix simple mis-matched function prototype and definitions.
most of these are like, eg
void foo(int[2]);
with either of these
void foo(int*) { ... } void foo(int[]) { ... }
in some cases (such as stat or utimes* calls found in our header files), we now match standard definition from opengroup.
found by GCC 12.
|
1.20 |
| 16-Jun-2021 |
riastradh | if_attach and if_initialize cannot fail, don't test return value
These were originally made failable back in 2017 when if_initialize allocated a softint in every interface for link state changes, so that it could fail gracefully instead of panicking:
https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html
However, this spawned many seldom- or never-tested error branches, which are risky to have around. And that softint in every interface has since been replaced by a single global workqueue, because link state changes require thread context but not low latency or high throughput:
https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html
So there is no longer any reason for if_initialize to fail. (The subroutine if_stats_init can't fail because percpu_alloc can't fail either.)
There is a snag: the softint_establish in if_percpuq_create could fail, potentially leading to bad consequences later on trying to use the softint. This change doesn't introduce any new bugs because of the snag -- if_percpuq_attach was already broken. However, the snag can be better addressed without spawning error branches, either by using a single softint or making softints less scarce.
(Separate commit will change the signatures of if_attach and if_initialize to return void, scheduled to ride whatever is the next convenient kernel bump.)
Patch and testing on amd64 and evbmips64-eb by maya@; commit message soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.
|
1.19 |
| 30-Jan-2020 |
thorpej | branches: 1.19.10; Adopt <net/if_stats.h>.
|
1.18 |
| 09-Dec-2018 |
jdolecek | branches: 1.18.6; use pci_intr_establish_xname() everywhere
|
1.17 |
| 29-Jun-2018 |
thorpej | - Unify the "rtwn" and "urtwn" register definitions and initialization tables into common header files shared by both drivers. - Fix some register and bit definitions, from OpenBSD and verified against the vendor driver. - Add some additional register / descriptor defnitions, from OpenBSD.
|
1.16 |
| 26-Jun-2018 |
msaitoh | branches: 1.16.2; Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same as FreeBSD.
This change also fixes a bug that the direction is misunderstand on some environment by passing the direction to bpf_mtap*() instead of checking m->m_pkthdr.rcvif.
|
1.15 |
| 06-Apr-2018 |
macallan | in rtwn_attach(): return; before unconditionally running into fail:
|
1.14 |
| 08-Feb-2018 |
dholland | branches: 1.14.2; Typos.
|
1.13 |
| 23-Oct-2017 |
msaitoh | branches: 1.13.2; If if_initialize() failed in the attach function, free resources and return.
|
1.12 |
| 18-May-2017 |
nonaka | branches: 1.12.2; Fixed m is not freed if m_defrag() fails.
|
1.11 |
| 02-Feb-2017 |
nonaka | branches: 1.11.4; wlan interfaces make interrupt routine running on softint context.
see http://mail-index.netbsd.org/tech-kern/2016/12/06/msg021281.html
tested device: * ath at pci: AR5212, AR5424 * athn at pci: AR9287 * ipw at pci: 2100BG * iwi at pci: 2915ABG * iwm at pci: 3165, 7260, 8260 * iwn at pci: 4945, 6235 * ral at pci: RT2560 * rtwn at pci: RTL8192CE
|
1.10 |
| 24-Jan-2017 |
nonaka | rtwn(4): increase the number of tx queue required to clear the full mask.
|
1.9 |
| 08-Dec-2016 |
ozaki-r | branches: 1.9.2; Apply deferred if_start framework
if_schedule_deferred_start checks if the if_snd queue contains packets, so drivers don't need to check it by themselves.
|
1.8 |
| 10-Jun-2016 |
ozaki-r | branches: 1.8.2; Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
1.7 |
| 26-May-2016 |
ozaki-r | Introduce M_CLEARCTX and use it instead of open-coding rcvif
No functional change.
|
1.6 |
| 26-May-2016 |
ozaki-r | Use M_GETCTX
No functional change.
|
1.5 |
| 09-Feb-2016 |
ozaki-r | Introduce softint-based if_input
This change intends to run the whole network stack in softint context (or normal LWP), not hardware interrupt context. Note that the work is still incomplete by this change; to that end, we also have to softint-ify if_link_state_change (and bpf) which can still run in hardware interrupt.
This change softint-ifies at ifp->if_input that is called from each device driver (and ieee80211_input) to ensure Layer 2 runs in softint (e.g., ether_input and bridge_input). To this end, we provide a framework (called percpuq) that utlizes softint(9) and percpu ifqueues. With this patch, rxintr of most drivers just queues received packets and schedules a softint, and the softint dequeues packets and does rest packet processing.
To minimize changes to each driver, percpuq is allocated in struct ifnet for now and that is initialized by default (in if_attach). We probably have to move percpuq to softc of each driver, but it's future work. At this point, only wm(4) has percpuq in its softc as a reference implementation.
Additional information including performance numbers can be found in the thread at tech-kern@ and tech-net@: http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html
Acknowledgment: riastradh@ greatly helped this work. Thank you very much!
|
1.4 |
| 06-Feb-2016 |
riastradh | Missed a spot.
|
1.3 |
| 06-Feb-2016 |
riastradh | Avoid shadowing global `max' from libkern.
|
1.2 |
| 06-Nov-2015 |
nonaka | Always use pci_intr_alloc(9)/pci_intr_release(9).
|
1.1 |
| 27-Aug-2015 |
nonaka | branches: 1.1.2; Added rtwn(4) for Realtek RTL8188CE/RTL8192CE PCIe 802.11b/g/n wireless network devices. Ported from OpenBSD.
|
1.1.2.8 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.1.2.7 |
| 05-Feb-2017 |
skrll | Sync with HEAD
|
1.1.2.6 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
1.1.2.5 |
| 29-May-2016 |
skrll | Sync with HEAD
|
1.1.2.4 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.1.2.3 |
| 27-Dec-2015 |
skrll | Sync with HEAD (as of 26th Dec)
|
1.1.2.2 |
| 22-Sep-2015 |
skrll | Sync with HEAD
|
1.1.2.1 |
| 27-Aug-2015 |
skrll | file if_rtwn.c was added on branch nick-nhusb on 2015-09-22 12:05:59 +0000
|
1.8.2.2 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.8.2.1 |
| 07-Jan-2017 |
pgoyette | Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
|
1.9.2.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.11.4.1 |
| 19-May-2017 |
pgoyette | Resolve conflicts from previous merge (all resulting from $NetBSD keywork expansion)
|
1.12.2.2 |
| 09-Apr-2018 |
bouyer | Pull up following revision(s) (requested by msaitoh in ticket #719): sys/dev/pci/if_rtwn.c: revision 1.15 in rtwn_attach(): return; before unconditionally running into fail:
|
1.12.2.1 |
| 10-Dec-2017 |
snj | Pull up following revision(s) (requested by msaitoh in ticket #427): sys/arch/amiga/dev/if_bah_zbus.c: 1.17 sys/arch/arm/broadcom/bcm53xx_eth.c: 1.30 sys/arch/powerpc/booke/dev/pq3etsec.c: 1.32 sys/arch/usermode/dev/if_veth.c: 1.9 sys/dev/ic/an.c: 1.66 sys/dev/ic/athn.c: 1.17 sys/dev/ic/atw.c: 1.162 sys/dev/ic/bwi.c: 1.33 sys/dev/ic/dwc_gmac.c: 1.41-1.42 sys/dev/ic/malo.c: 1.10 sys/dev/ic/rt2560.c: 1.31 sys/dev/ic/rt2661.c: 1.36 sys/dev/ic/rt2860.c: 1.29 sys/dev/ic/rtw.c: 1.127 sys/dev/ic/rtwvar.h: 1.46 sys/dev/ic/smc90cx6.c: 1.71 sys/dev/ic/smc90cx6var.h: 1.12 sys/dev/ic/wi.c: 1.244 sys/dev/pci/if_ipw.c: 1.66 sys/dev/pci/if_iwi.c: 1.104 sys/dev/pci/if_iwm.c: 1.76 sys/dev/pci/if_iwn.c: 1.86 sys/dev/pci/if_rtwn.c: 1.13 sys/dev/pci/if_wm.c: 1.541 sys/dev/pci/if_wpi.c: 1.79 sys/dev/pci/ixgbe/ixgbe.c: 1.106 sys/dev/pci/ixgbe/ixv.c: 1.73 via patch sys/dev/pcmcia/if_malo_pcmcia.c: 1.15 sys/dev/scsipi/if_se.c: 1.95 sys/dev/usb/if_upl.c: 1.60 sys/net/if.c: 1.396 sys/net/if.h: 1.241 sys/net/if_arc.h: 1.23 sys/net/if_arcsubr.c: 1.78 sys/net/if_bridge.c: 1.136-1.137 sys/net/if_etherip.c: 1.39 sys/net/if_faith.c: 1.56 sys/net/if_gif.c: 1.131 sys/net/if_loop.c: 1.96 sys/net/if_mpls.c: 1.30 sys/net/if_pppoe.c: 1.129 sys/net/if_srt.c: 1.27 sys/net/if_stf.c: 1.102 sys/net/if_tap.c: 1.100 sys/net/if_vlan.c: 1.105 sys/netinet/ip_carp.c: 1.91 sys/rump/net/lib/libshmif/if_shmem.c: 1.73-1.74 sys/rump/net/lib/libvirtif/if_virt.c: 1.55-1.56 if_initalize() and if_attach() failed when resource allocation failed (e.g. allocating softint). Without this change, it panics. It's bad because resource shortage really occured when a lot of pseudo interface is created. To avoid this problem, don't panic and change return value of if_initialize() and if_attach() to int. Caller fanction will be recover from error cleanly by checking the return value. Return if bah_attach_subr() failed. If if_attach() failed in the attach function, return. - If if_initialize() failed in the attach function, free resources and return. - Add some missing frees in bridge_clone_destroy(). - KNF If error occured in bcmeth_ccb_attach(), free resources and return. If error occured in pq3etsec_attach(), free resources and return. If error occured in the attach function, free resources and return. - If if_initialize() failed in athn_attach(), free resources and return. - Add missing pmf_event_deregister() in athn_detach(). - Free resources correctly on some errors in atw_attach(). - Use apint*() insread of printf() in the attach function. If if_initialize() failed in the attach function, return. - If if_initialize() failed in the attach function, free resources and return. - Add missing dwc_gmac_free_dma_rings() and mutex_destroy() when attach failed. - If if_initialize() failed in the attach function, free resources and return. - ifp is always not NULL in iwi_detach(). Check correctly with ifp->if_softc. - If if_initialize() failed in the attach function, free resources and return. - Fix error path in the attach function correctly. If if_initialize() failed in the attach function, free resources and return. If if_attach() failed in the attach function, free resources and return. - If if_initialize() failed in the attach function, free resources and return. - KNF - If if_attach() failed in the attach function, free resources and return. - KNF Fix compile error. Fix compile error. We don't need '&mii', but just 'mii' for mii_detach(). Don't free sc_rthash twice
|
1.13.2.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.13.2.1 |
| 23-Oct-2017 |
jdolecek | file if_rtwn.c was added on branch tls-maxphys on 2017-12-03 11:37:08 +0000
|
1.14.2.3 |
| 26-Dec-2018 |
pgoyette | Sync with HEAD, resolve a few conflicts
|
1.14.2.2 |
| 28-Jul-2018 |
pgoyette | Sync with HEAD
|
1.14.2.1 |
| 07-Apr-2018 |
pgoyette | Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
|
1.16.2.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.16.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.18.6.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.19.10.1 |
| 17-Jun-2021 |
thorpej | Sync w/ HEAD.
|