openwrt / openwrt/mt76

MT7612e interrupts initialization

Open
#464 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
888
Forks
436
PR merge metrics
No merged PRs in 30d

Description

Hello! I'm trying to start MT7612e with a custom MIPS board(Baikal architecture). At the moment I have the following situation:
Attempt 1:
Using a driver from 5.4.72 mainline I got ENOSYS error in mt76pci_probe.
Function call order:
mt76pci_probe -> devm_request_irq -> devm_request_threaded_irq -> request_threaded_irq -> _setup_irq
_setup_irq returns -ENOSYS after checking
if (desc>irq_data.chip == &no_irq_chip) return -ENOSYS;

As I understand this function uses INTx emulation mechanism. So I tried to enable MSI mechanism:

Attempt 2:
I added pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES) function before calling devm_request_irq
probe function finished without errors. The modem was detected as network device(wlan0). Connection is OK. Ping is OK
But there is a problem on speed test(iperf): driver repeatedly falls on mt76_mcu_get_response:

mt76x2e 0000:00:00.0: MCU message 31 (seq 13) timed out
mt76x2e 0000:00:00.0: Firmware Version: 0.0.00
mt76x2e 0000:00:00.0: Build: 1
mt76x2e 0000:00:00.0: Build Time: 201507311614____
mt76x2e 0000:00:00.0: Firmware running!
ieee80211 phy2: Hardware restart was requested

Can you explain why __setup_irq returns ENOSYS with default driver?
Can mt76_mcu_get_response problem be caused by MSI mode?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing mt76pci_probe through devm_request_irq, devm_request_threaded_irq, request_threaded_irq, and __setup_irq to understand the ENOSYS path. Then inspect mt76_mcu_get_response and the MSI setup described in the report; done means determining whether MSI explains the MCU timeout and documenting the cause of both failures.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
embedded-iot, networking, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.