aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
Commit message (Collapse)AuthorAgeFilesLines
...
* | iwlwifi: remove lar_disable module parameterLuca Coelho2019-12-231-6/+7
| | | | | | | | | | | | | | | | | | | | | | This is an old parameter that was used supposed to be used only when LAR was still under development. It should not be used anymore, but, since it's available, end-users have been mangling with it unnecessarily. In some cases it can cause problems because when LAR is supported the driver and the firmware do not expect it to be disabled. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: Don't ignore the cap field upon mcc updateHaim Dreyfuss2019-12-231-2/+46
|/ | | | | | | | | | | When receiving a new MCC driver get all the data about the new country code and its regulatory information. Mistakenly, we ignored the cap field, which includes global regulatory information which should be applies to every channel. Fix it. Signed-off-by: Haim Dreyfuss <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: nvm: update iwl_uhb_nvm_channelsTova Mussai2019-11-151-5/+4
| | | | | | | | Change the UHB channels to start from 1 to match the specs (11ax Draft 5.0). Signed-off-by: Tova Mussai <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
* iwlwifi: nvm: create function to convert channel index to nl80211_bandTova Mussai2019-10-251-9/+17
| | | | | | | | Create function to convert channel index to nl80211_band and use it. Signed-off-by: Tova Mussai <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: always access the trans configuration via transLuca Coelho2019-09-061-9/+8
| | | | | | | | | Stop accessing the trans configuration via the iwl_cfg structure and always access it via the iwl_trans structure. This completes the requirements to disassociate the trans-specific configuration from the rest of the configuration. Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: pass the iwl_trans instead of cfg to some functionsShaul Triebitz2019-09-061-5/+8
| | | | | | | | | | A few functions were receiving the iwl_cfg struct directly, but we will also need other parts of the trans, so pass the trans (which includes the cfg) to them. Signed-off-by: Ido Yariv <[email protected]> Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: add a pointer to the trans_cfg directly in transLuca Coelho2019-09-061-5/+5
| | | | | | | | Add a pointer to the iwl_trans structure and point it to the trans part of the cfg. This is the first step in disassociating the trans configuration from the rest of the configuration. Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: separate elements from cfg that are needed by trans_allocLuca Coelho2019-09-061-8/+8
| | | | | | | | | | | In order to be able to select the cfg depending on the HW revision or on the RF ID, we need to set up the trans before selecting the cfg. To do so, move the elements from cfg that are needed by iwl_trans_alloc() to a separate struct at the top of the cfg, so it can be used by other cfg types as well, before selecting the rest of the configuration. Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: allocate bigger nvm data in case of UHBTova Mussai2019-09-061-1/+5
| | | | | | | | In case of Ultra-high-band (UHB), need to allocate nvm data structure in size of UHB channels array. Signed-off-by: Tova Mussai <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: remove unused regdb_ptrs allocationHaim Dreyfuss2019-09-061-14/+0
| | | | | | | regdb_ptrs is not in used anymore, remove it. Signed-off-by: Haim Dreyfuss <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: Use correct channel_profile iniwl_get_nvmYueHaibing2019-04-291-1/+1
| | | | | | | | | | commit 2785ce008e3b ("iwlwifi: support new NVM response API") seems forgot use correct channel_profile in iwl_get_nvm when call iwl_init_sbands(). Fixes: 2785ce008e3b ("iwlwifi: support new NVM response API") Signed-off-by: YueHaibing <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: trust calling functionShaul Triebitz2019-04-031-6/+1
| | | | | | | | | When initializing or overriding HE band capabilities, no need to check the band validity. Trust the calling function to use a valid band. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: remove unnecessary goto out in iwl_parse_nvm_mcc_info()Luca Coelho2019-03-221-3/+1
| | | | | | | This goto out was unnecessary because the out label was immediately below it. Remove it. Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: Use struct_size() in kzallocYueHaibing2019-03-221-10/+3
| | | | | | | Use struct_size() in kzalloc instead of the 'regd_to_copy' Signed-off-by: YueHaibing <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: support new NVM response APIShaul Triebitz2019-03-221-13/+33
| | | | | | | | Support REGULATORY_NVM_GET_INFO_RSP_API_S_VER_4. This API adds the new 6-7GHz channels. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: add support for 6-7 GHz channelsShaul Triebitz2019-03-221-30/+44
| | | | | | | | Add UHB (ultra high band) channels and use 16 bit variables to fit the new channels. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* Merge tag 'wireless-drivers-next-for-davem-2019-02-22' of ↵David S. Miller2019-02-221-16/+15
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next Kalle Valo says: ==================== wireless-drivers-next patches for 5.1 Most likely the last set of patches for 5.1. WPA3 support to ath10k and qtnfmac. FTM support to iwlwifi and ath10k. And of course other new features and bugfixes. wireless-drivers was merged due to dependency in mt76. Major changes: iwlwifi * HE radiotap * FTM (Fine Timing Measurement) initiator and responder implementation * bump supported firmware API to 46 * VHT extended NSS support * new PCI IDs for 9260 and 22000 series ath10k * change QMI interface to support the new (and backwards incompatible) interface from HL3.1 and used in recent HL2.0 branch firmware releases * support WPA3 with WCN3990 * support for mac80211 airtime fairness based on transmit rate estimation, the firmware needs to support WMI_SERVICE_PEER_STATS to enable this * report transmit airtime to mac80211 with firmwares having WMI_SERVICE_REPORT_AIRTIME feature, this to have more accurate airtime fairness based on real transmit time (instead of just estimated from transmit rate) * support Fine Timing Measurement (FTM) responder role * add dynamic VLAN support with firmware having WMI_SERVICE_PER_PACKET_SW_ENCRYPT * switch to use SPDX license identifiers ath * add new country codes for US brcmfmac * support monitor frames with the hardware/ucode header qtnfmac * enable WPA3 SAE and OWE support mt76 * beacon support for USB devices (mesh+ad-hoc only) rtlwifi * convert to use SPDX license identifiers libertas_tf * get the MAC address before registering the device ==================== Signed-off-by: David S. Miller <[email protected]>
| * iwlwifi: nvm-parse: advertise IEEE80211_VHT_EXT_NSS_BW_CAPABLE in VHTJohannes Berg2019-02-201-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | We support this, so we should advertise it. In fact, if we don't, mac80211 will do it for us (as we advertise SUPPORTS_VHT_EXT_NSS_BW to it), but that requires a memory reallocation which is wasteful: ieee80211 phy0: copying sband (band 1) due to VHT EXT NSS BW flag Set the flag here to avoid that. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
| * iwlwifi: nvm-parse: use struct_size() in kzalloc()Gustavo A. R. Silva2019-02-201-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example: struct foo { int stuff; void *entry[]; }; instance = kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL); Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper: instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL); This code was detected with the help of Coccinelle. Signed-off-by: Gustavo A. R. Silva <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
| * iwlwifi: do not fail on large amount of channelsShaul Triebitz2019-02-141-3/+3
| | | | | | | | | | | | | | | | | | | | Until supporting UHB (ultra high band) channels for devices AX210, do not fail if number of channels reported by firmware is greater than NL80211_MAX_SUPP_REG_RULES. The Driver in that case will use only the non-UHB channels. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* | Merge remote-tracking branch 'net-next/master' into mac80211-nextJohannes Berg2019-02-221-5/+2
|\| | | | | | | | | | | | | Merge net-next to resolve a conflict and to get the mac80211 rhashtable fixes so further patches can be applied on top. Signed-off-by: Johannes Berg <[email protected]>
| * iwlwifi: use kmemdup in iwl_parse_nvm_mcc_info()YueHaibing2019-01-251-3/+1
| | | | | | | | | | | | | | | | Use kmemdup rather than duplicating its implementation in iwl_parse_nvm_mcc_info(). Signed-off-by: YueHaibing <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
| * iwlwifi: mvm: advertise support for TWT in the Extended Capability IEEmmanuel Grumbach2019-01-251-2/+1
| | | | | | | | | | | | | | | | | | | | We want to advertise support for TWT in the Extended Capability IE. Since we don't want to set the bits for all the interface types, define an interface specific configuration. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* | mac80211: update HE IEs to D3.3Liad Kaufman2019-02-221-37/+21
|/ | | | | | | | | Update element names and new fields according to D3.3 of the HE spec. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
* iwlwifi: mvm: set TWT responder capability bit in 11AX SoftAP modeEmmanuel Grumbach2018-12-201-1/+2
| | | | | | | | This is needed to test TWT requester on the client side. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
* iwlwifi: split HE capabilities between AP and STAShaul Triebitz2018-12-201-101/+188
| | | | | | | | HE capabilities differ between AP and STA. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
* iwlwifi: nvm: get num of hw addresses from firmwareNaftali Goldstein2018-10-061-1/+9
| | | | | | | | | | | | | | | With NICs that don't read the NVM directly and instead rely on getting the relevant data from the firmware, the number of reserved MAC addresses was not added to the API. This caused the driver to assume there is only one address which results in all interfaces getting the same address. Update the API to fix this. While at it, fix-up the comments with firmware api names to actually match what we have in the firmware. Fixes: e9e1ba3dbf00 ("iwlwifi: mvm: support getting nvm data from firmware") Signed-off-by: Naftali Goldstein <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* Merge tag 'wireless-drivers-next-for-davem-2018-10-02' of ↵David S. Miller2018-10-021-5/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next Kalle Valo says: ==================== wireless-drivers-next patches for 4.20 First set of new features for 4.20. mt76 driver is going through major refactoring and that's why there are so many mt76 patches. iwlwifi is also under heavy development and smaller changes to other drivers. Also wireless-drivers was merged to fix a conflict between the two trees. Major changes: ath10k * limit available channels via DT ieee80211-freq-limit wil6210 * add 802.11r Fast Roaming support for AP and station modes * add support for channel 4 iwlwifi * new FW API handling * some improvements in the PCI recovery mechanism * enable a new scanning feature; * continued work on HE (mostly radiotap) * TKIP implementation in new devices * work continues for new 22560 hardware mt76 * add support for Alfa AWUS036ACM * lots of refactoring to make it easier to add new hardware support * prepare for adding mt76x0e (pci-e variant) support * add CONFIG_MT76x0E kconfig symbol brcmfmac * add support CYW89342 mini-PCIe device * add 4-way handshake offload detection for FT-802.1X * enable NL80211_EXT_FEATURE_CQM_RSSI_LIST * fix for proper support of 160MHz bandwidth rtl8xxxu * add rtl8188ctv support ==================== Signed-off-by: David S. Miller <[email protected]>
| * iwlwifi: remove all occurrences of the FSF address paragraphLuca Coelho2018-08-311-5/+0
| | | | | | | | | | | | | | | | The Free Software Foundation address is superfluous and causes checkpatch to issue a warning when present. Remove all paragraphs with FSF's address to prevent that. Signed-off-by: Luca Coelho <[email protected]>
* | wireless: align to draft 11ax D3.0Shaul Triebitz2018-09-051-13/+38
| | | | | | | | | | | | | | | | | | | | Align to new 11ax draft D3.0. Change/add new MAC and PHY capabilities and update drivers' 11ax capabilities and mac80211's debugfs accordingly. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
* | Merge tag 'mac80211-for-davem-2018-09-03' of ↵David S. Miller2018-09-041-45/+5
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211 Johannes Berg says: ==================== Here are quite a large number of fixes, notably: * various A-MSDU building fixes (currently only affects mt76) * syzkaller & spectre fixes in hwsim * TXQ vs. teardown fix that was causing crashes * embed WMM info in reg rule, bad code here had been causing crashes * one compilation issue with fix from Arnd (rfkill-gpio includes) * fixes for a race and bad data during/after channel switch * nl80211: a validation fix, attribute type & unit fixes along with other small fixes. ==================== Signed-off-by: David S. Miller <[email protected]>
| * cfg80211: make wmm_rule part of the reg_rule structureStanislaw Gruszka2018-08-281-45/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make wmm_rule be part of the reg_rule structure. This simplifies the code a lot at the cost of having bigger memory usage. However in most cases we have only few reg_rule's and when we do have many like in iwlwifi we do not save memory as it allocates a separate wmm_rule for each channel anyway. This also fixes a bug reported in various places where somewhere the pointers were corrupted and we ended up doing a null-dereference. Fixes: 230ebaa189af ("cfg80211: read wmm rules from regulatory database") Signed-off-by: Stanislaw Gruszka <[email protected]> [rephrase commit message slightly] Signed-off-by: Johannes Berg <[email protected]>
* | iwlwifi: pcie: support 2k rx buffersGolan Ben Ami2018-07-261-0/+7
| | | | | | | | | | | | | | | | The smallest rb size supported today is 4k rx buffers. 22560 devices use 2k rxb's, so allow using 2k buffers. Signed-off-by: Golan Ben Ami <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: add module parameter to disable 802.11axLuca Coelho2018-07-261-2/+2
| | | | | | | | | | | | | | | | Add a module parameter to disable 802.11ax features in supported devices. This is useful for testing or if there are interoperability issues with some APs. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: add support for IEEE802.11axLuca Coelho2018-07-261-0/+103
|/ | | | | | | Add support for the HE in the iwlwifi driver conforming with P802.11ax_D2.0. Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: mvm: remove division by size of sizeof(struct ieee80211_wmm_rule)Colin Ian King2018-05-301-2/+1
| | | | | | | | | | | | | The subtraction of two struct ieee80211_wmm_rule pointers leaves a result that is automatically scaled down by the size of the size of pointed-to type, hence the division by sizeof(struct ieee80211_wmm_rule) is bogus and should be removed. Detected by CoverityScan, CID#1467777 ("Extra sizeof expression") Fixes: 77e30e10ee28 ("iwlwifi: mvm: query regdb for wmm rule if needed") Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* iwlwifi: support new csr addresses for hw addressGolan Ben Ami2018-04-261-4/+10
| | | | | | | | In future devices we use different csr addresses for hw addresses. Update csr addresses to support new and legacy devices. Signed-off-by: Golan Ben Ami <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.gitKalle Valo2018-04-261-9/+87
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix a conflict reported by Stephen Rothwell <[email protected]>: Today's linux-next merge of the wireless-drivers-next tree got a conflict in: drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c between commit: 77e30e10ee28 ("iwlwifi: mvm: query regdb for wmm rule if needed") from the wireless-drivers tree and commits: 9c4f7d512740 ("iwlwifi: move all NVM parsing code to the common files") 4c625c564ba2 ("iwlwifi: get rid of fw/nvm.c") from the wireless-drivers-next tree.
| * iwlwifi: mvm: query regdb for wmm rule if neededHaim Dreyfuss2018-04-091-16/+95
| | | | | | | | | | | | | | | | | | | | | | | | Since our device is regulatory self managed it maintains its regulatory rules by its own. However the wmm_rules values can't be set by the device itself but only the indication about the need to set it. In case the device set wmm indication, proactively query the regulatory data base to get these values Signed-off-by: Haim Dreyfuss <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
* | iwlwifi: get rid of fw/nvm.cShaul Triebitz2018-04-201-7/+104
| | | | | | | | | | | | | | | | There's already an opmode common file for nvm iwl-nvm-parse.c Move the content of fw/nvm.c to iwl-nvm-parse.c and delete fw/nvm.c. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: remove upper case letters in sku_capa_band_*_enableLuca Coelho2018-04-201-3/+3
| | | | | | | | | | | | | | | | The sku_capa_band_24GHz_enable and sku_capa_band_52GHz_enable symbols cause checkpatch to complain whenever we use them. To prevent this, convert them to all lower case. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: use flags to denote modifiers for the channel mapsLuca Coelho2018-04-201-9/+16
| | | | | | | | | | | | | | | | Instead of having a boolean for each modifier we need to handle in the channel maps, create a bitmask with flags that denote each modification. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: move all NVM parsing code to the common filesShaul Triebitz2018-04-201-7/+207
|/ | | | | | | | | Move all the NVM file handling code to iwl-nvm-parse.c where all this stuff belongs. This cleans up the MVM specific code and allows easier reuse by other opmodes if needed. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.gitKalle Valo2017-10-161-74/+68
|\ | | | | | | | | Mark Brown reported that there are conflicts in iwlwifi between the two trees so fix those now.
| * iwlwifi: nvm: set the correct offsets to 3168 seriesChaya Rachel Ivgi2017-10-061-16/+23
| | | | | | | | | | | | | | | | | | | | | | | | The driver currently handles two NVM formats, one for 7000 family and below, and one for 8000 family and above. The 3168 series uses something in between, so currently the driver uses incorrect offsets for it. Fix the incorrect offsets. Fixes: c4836b056d83 ("iwlwifi: Add PCI IDs for the new 3168 series") Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
| * iwlwifi: nvm-parse: unify channel flags printingJohannes Berg2017-10-061-59/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current channel flags printing is very strange and messy, in LAR we sometimes print the channel number and sometimes the frequency, in both we print a calculated value (whether ad-hoc is supported or not) etc. Unify all this to * print the channel number, not the frequency * remove the band print (2.4/5.2 GHz, it's obvious) * remove the calculated Ad-Hoc print Doing all of this also gets the length of the string to a max of 101 characters, which is below the max of 110 for tracing, and thus avoids the warning that came up on certain channels with certain flag combinations. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: acpi: move function to get mcc into acpi codeLuca Coelho2017-10-061-34/+0
| | | | | | | | | | | | | | | | The iwl_get_bios_mcc() function was in the iwl-nvm-parse.c file, but it has nothing to do with the NVM. Move it to fw/acpi.c and rename it to iwl_acpi_get_mcc(). Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: acpi: make iwl_get_bios_mcc() use the common acpi functionsLuca Coelho2017-10-061-47/+19
| | | | | | | | | | | | | | | | | | The way iwl_get_bios_mcc() gets the WiFi package and checks for its integrity is almost identical to the new iwl_acpi_get_wifi_pkg() function. Instead of having duplicate code, convert it to use the common code. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: acpi: move ACPI method definitions to acpi.hLuca Coelho2017-10-061-6/+2
| | | | | | | | | | | | | | | | Instead of defining each method where they are used and re-defining WIFI_DOMAIN in each one of them, move all the definitions to a central place and define the domain only a single time. Signed-off-by: Luca Coelho <[email protected]>
* | iwlwifi: acpi: add common code to read from ACPILuca Coelho2017-10-061-29/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | There are many places where the same process of invoking a method from ACPI is used, causing a lot of duplicate code. To improve this, introduce a new function to get an ACPI object by invoking an ACPI method that can be reused. Additionally, since this function needs to be called when we only have the trans, the opmode or the device, introduce a new debug macro that gets the device as a parameter so it can be used in the new function. Signed-off-by: Luca Coelho <[email protected]>