Commit Graph
100 Commits
Author SHA1 Message Date
Martin Kaiser 411c3890cb staging: r8188eu: make OnAssocRsp static
OnAssocRsp is used only in rtw_mlme_ext.c. Make this function static.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-25 19:19:37 +02:00
Martin Kaiser b8d4f50557 staging: r8188eu: make OnAssocReq static
OnAssocReq is used only in rtw_mlme_ext.c. Make this function static.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-25 19:19:37 +02:00
Martin Kaiser a12960f970 staging: r8188eu: restructure mlme subfunction handling
Move some code around in rtw_mlme_ext.c to make it simpler.

mlme_sta_tbl is used only by mgt_dispatcher. Move the table inside the
function. Move mgt_dispatcher behind the handler functions. We can then
make the handler functions static.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-25 19:19:37 +02:00
Martin Kaiser e1445e7b00 staging: r8188eu: summarize tx/rx and scan blinking
Summarize the code for tx/rx blinking and for scan blinking in blink_work.
The only difference is the delay for scheduling the next worker.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser 126647d113 staging: r8188eu: set two more state variables
Set two more state variables in the blink worker when scan blinking and
tx/rx blinking are finished.

bLedBlinkInProgress is true during tx/rx blinking, bLedScanBlinkInProgress
is true during scan blinking. If we doing neither of the two, we may
safely set both variables to false.

This change makes the scan and tx/rx cases almost identical, we are now
ready to summarize the two cases.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser 1188cfa646 staging: r8188eu: remove padapter from struct led_priv
The only struct led_priv that's used in the r8188eu driver in embedded in
the driver's global struct adapter. We can use container_of to access the
"outer" structure, there's no need to store a pointer to it.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser 5ecf2bb6b1 staging: r8188eu: don't include rtw_led.h from rtw_cmd.h
The rtw_cmd.h does not need any definitions from the led layer, there's
no reason to include rtw_led.h.

When I tried to remove this component

struct led_priv {
   struct adapter *padapter;
   ...

I saw compiler errors because of this chain of include files:
drv_types.h -> rtw_cmd.h -> rtw_led.h

rtw_led.h uses struct adapter before it sees the definiton near the end
of drv_types.h. (It seems that a simple struct adapter * prevents this
problem.)

The best option for fixing this issue is to not include rtw_led.h in
rtw_cmd.h.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser 4fc4de550e staging: r8188eu: remove two unused defines
The C2H_MEM_SZ and FREE_CMDOBJ_SZ defines are not used by the r8188eu
driver. Remove them.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser 728a14bf8f staging: r8188eu: SwLedOff needs no padapter parameter
Remove the padapter parameter from the SwLedOff function. padapter can
be derived from the pLed parameter.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:42 +02:00
Martin Kaiser c16a98833a staging: r8188eu: SwLedOn needs no padapter parameter
Remove the padapter parameter from the SwLedOn function. padapter can be
derived from the pLed parameter.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:41 +02:00
Martin Kaiser ef032c4fa4 staging: r8188eu: fix status updates in SwLedOff
Update bLedOn only if we could update the REG_LEDCFG2 register.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:41 +02:00
Martin Kaiser e5931b7ba5 staging: r8188eu: handle rtw_write8 errors in SwLedOn
Check the status returned by rtw_write8. Update bLedOn only if we could
update the REG_LEDCFG2 register.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:41 +02:00
Martin Kaiser 12c6223fc1 staging: r8188eu: fix led register settings
Using an InterTech DMG-02 dongle, the led remains on when the system goes
into standby mode. After wakeup, it's no longer possible to control the
led.

It turned out that the register settings to enable or disable the led were
not correct. They worked for some dongles like the Edimax V2 but not for
others like the InterTech DMG-02.

This patch fixes the register settings. Bit 3 in the led_cfg2 register
controls the led status, bit 5 must always be set to be able to control
the led, bit 6 has no influence on the led. Setting the mac_pinmux_cfg
register is not necessary.

These settings were tested with Edimax V2 and InterTech DMG-02.

Cc: [email protected]
Fixes: 8cd574e6af ("staging: r8188eu: introduce new hal dir for RTL8188eu driver")
Suggested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Michael Straube <[email protected]> # InterTech DMG-02,
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:41:41 +02:00
Martin Kaiser e2c532aadd staging: r8188eu: ignore_received_deauth is a boolean
The ignore_received_deauth is in fact a boolean variable. Change its type
to bool and use true, false for its values.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:04 +02:00
Martin Kaiser 000848a511 staging: r8188eu: summarize two flags checks
Summarize the two statements to check if either WIFI_FW_AUTH_STATE or
WIFI_FW_ASSOC_STATE is set.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:04 +02:00
Martin Kaiser 6325d858c4 staging: r8188eu: remove unnecessary return
Remove the return statement at the end of the if branch. We can continue
to the final return after the if-else.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser ece8119070 staging: r8188eu: exit for deauth from unknown station
If we receive a deauth message from an unknown station, we can drop this
message and exit immediately. Reorder the code to make this clearer, don't
wrap everything in an if statement.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser 094fbfbac3 staging: r8188eu: get bssid from mgmt struct
For management frames, Addr3 is the BSSID. Read it from the mgmt
structure instead of calling GetAddr3Ptr.

The pframe variable is now unused and can be removed.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser 15697b04e4 staging: r8188eu: use sa instead of Addr2
For management frames, Addr2 is the Source Address (SA).

Use sa from the mgmt structure and remove the GetAddr2Ptr call.
GetAddr2Ptr is a driver-specific function that we should eventually
remove.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser 8ea03e32f5 staging: r8188eu: clarify the bBusyTraffic assignment
bBusyTraffic is set only if we're not in WIFI_AP_STATE, i.e. in the else
branch. If we were not in WIFI_AP_STATE, we'd go into the if branch and
return _SUCCESS before making it to the bBusyTraffic assignment.

Move the assignment into the else branch to make this clearer.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser f54ded554f staging: r8188eu: get reason code from mgmt struct
Read the deauth reson code from the newly added mgmt structure instead of
calculating the offset ourselves.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser c599718645 staging: r8188eu: replace one GetAddr3Ptr call
Define a struct ieee80211_mgmt for the message that we process in
OnDeAuth. Use this struct to read the bssid.

This patch removes one GetAddr3Ptr call, getting us a tiny step closer to
removing GetAddr3Ptr.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:35:03 +02:00
Martin Kaiser febdb8eea9 staging: r8188eu: remove bLedLinkBlinkInProgress
Remove the bLedLinkBlinkInProgress component from struct led_priv. Its
only use is to block requests for "link blinking" when this blinking
pattern is already active.

The "link blinking" pattern is a continuous blinking pattern (as opposed
to other patterns where we blink N times), it's no problem to restart this
pattern when it's already running.

Signed-off-by: Martin Kaiser <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-10-20 17:18:45 +02:00
Martin Kaiser 7589197485 staging: r8188eu: don't check for stop/removal in the blink worker
The blink_work function calls either SwLedOff or SwLedOn. These two
functions handle bSurpriseRemoved and bDriverStopped.

There's no need to check bSurpriseRemoved and bDriverStopped again in the
blink worker.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-26 10:34:44 +02:00
Martin Kaiser 647085006b staging: r8188eu: don't check bSurpriseRemoved in SwLedOff
The SwLedOff function calls rtw_read8 which in turn calls usb_read.

bSurpriseRemoved is checked in usb_read. We don't have to check it again
in SwLedOff.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-26 10:34:44 +02:00
Martin Kaiser f6633de18d staging: r8188eu: remove two unused enum entries
Both LED_BLINK_StartToBlink and LED_BLINK_RUNTOP in enum LED_STATE_871x
are not used in the r8188eu driver. Remove them.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser 8f60cb9534 staging: r8188eu: remove duplicate bSurpriseRemoved check
We don't have to check bSurpriseRemoved in the SwLedOn function.

SwLedOn calls rtw_read8 which in turn calls usb_read. This function checks
bSurpriseRemoved for us.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser bf0d687586 staging: r8188eu: remove BlinkingLedState
Both bLedOn and BlinkingLedState in struct led_priv store the same
information.

The boolean bLedOn stores the curent led state while BlinkingLedState
stores the next led state to be set during blinking, which is the inverse
of the current led state. (The led is either off or blinking, it's never
continuously on.)

This patch removes BlinkingLedState and uses bLedOn instead.

The LED_BLINK_WPS_STOP case in blink_work checked for
pLed->BlinkingLedState != RTW_LED_ON. This is true if the next led
blinking state is ON, i.e. if the led has just been switched off by
blink_work, i.e. if (!pLed->bLedOn).

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser 64c82a8888 staging: r8188eu: remove bLedNoLinkBlinkInProgress
Remove the bLedNoLinkBlinkInProgress state variable. Its sole purpose is
to block subsequent requests for "no link" blinking when this blinking
pattern is already active.

It's perfectly safe to restart "no link" blinking. We can remove
bLedNoLinkBlinkInProgress and the many places where it's updated.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser b08d89994d staging: r8188eu: update status before wps success blinking
Always update the status variables in rtw_led_control when we start
blinking to show that wps was successful. The if statements are not
necessary.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser cb2b346013 staging: r8188eu: cancel blink_work during wps stop
We can always cancel blink_work during wps_stop. The blinking pattern will
be updated to show that wps was successful. Another worker will be started
for this.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:09:18 +02:00
Martin Kaiser 8a8380fff3 staging: r8188eu: update status before link blinking
Always update the status variables in rtw_led_control when we start link
blinking. The if statements are not necessary.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:49 +02:00
Martin Kaiser 21cce84a7c staging: r8188eu: cancel blink_work before link blinking
Cancel blink_work before we start link blinking. Another worker will be
scheduled after the state variables are updated.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:49 +02:00
Martin Kaiser b1c17560de staging: r8188eu: simplify the code to prevent link blinking restart
The blinking code to signal that a link is up has the same big if clause
around it as most other blink events.

Revert this if condition and exit if we're already blinking to show that
the link is up.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:49 +02:00
Martin Kaiser 8a42af27b4 staging: r8188eu: update status before scan blinking
Always update the status variables in rtw_led_control when we start tx/rx
blinking. The if statements are not necessary.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:49 +02:00
Martin Kaiser 5ef21996f3 staging: r8188eu: cancel blink_work before tx/rx blinking
Cancel blink_work before we start tx/rx blinking. Another worker will be
scheduled after the state variables are updated.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:49 +02:00
Martin Kaiser 38eec30471 staging: r8188eu: simplify the code to prevent tx/rx blinking restart
The code for tx/rx blinking is wrapped into a big if clause to prevent
restarting if tx/rx blinking is already running.

Revert the if condition and exit if tx/rx blinking is running. This does
not change the behaviour.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:48 +02:00
Martin Kaiser 56e9ef2a7e staging: r8188eu: update status before scan blinking
Always update the status variables in rtw_led_control when we start scan
blinking. The if statements are not necessary.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:48 +02:00
Martin Kaiser 96f8f22b51 staging: r8188eu: cancel blink_work before scan blinking
Cancel blink_work before we start scan blinking. Another worker will be
scheduled after the state variables are updated.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:48 +02:00
Martin Kaiser 5b296918f9 staging: r8188eu: simplify the code to prevent scan blinking restart
The code for scan blinking is wrapped into a big if clause to prevent
restarting if scan blinking is already running.

Revert the if condition and exit if scan blinking is running. This does
not change the behaviour.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-24 13:07:48 +02:00
Martin Kaiser 2cf4038500 staging: r8188eu: rtw_is_scan_deny is always false
The rtw_is_scan_deny macro returns false. Remove the macro and resulting
dead code.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-11 13:57:23 +02:00
Martin Kaiser dd7801b11b staging: r8188eu: remove rtw_clear_scan_deny
The rtw_clear_scan_deny macro is empty. Remove it.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-11 13:57:23 +02:00
Martin Kaiser 10c279e1af staging: r8188eu: remove rtw_set_scan_deny_timer_hdl
Remove the rtw_set_scan_deny_timer_hdl macro, it's not used.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-11 13:57:23 +02:00
Martin Kaiser f38bc0416f staging: r8188eu: remove empty rtw_set_scan_deny macro
The rtw_set_scan_deny macro does nothing. Remove it.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Acked-by: Pavel Skripkin <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-11 13:57:23 +02:00
Martin Kaiser bbec514624 staging: r8188eu: do not "scan blink" if we have a link
Do not blink the led to indicate that we're scanning if we are already
connected to a wireless network.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser 96b3043412 staging: r8188eu: reset blink state when WPS fails
When WPS fails, WPS blinking is no longer in progress. The if statement
can be removed.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser 9b34e23b1f staging: r8188eu: always cancel blink_work when WPS failed
Cancel blink_work if WPS fails. Another worker will be scheduled after
the state variables are updated.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser de9c3e9ea9 staging: r8188eu: always update status before WPS blinking
Always update the status variables in rtw_led_control when we start WPS
blinking. The code is easier to understand without the if conditions.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser 5221e12b71 staging: r8188eu: always cancel blink_work before WPS blinking
In rtw_led_control, we can always cancel a running blink worker when we
start WPS blinking.

The worker will be scheduled again and there's no point in having more
than one pending blink worker.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser a5f01428bb staging: r8188eu: don't restart WPS blinking unnecessarily
Simplify one of the cases in rtw_led_control. If we're already blinking
during WPS, we don't have to restart this blinking when the caller
requests it again. We can simply return and keep on blinking.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser d25cb8382a staging: r8188eu: simplify the LED_CTL_POWER_OFF case
When a caller of rtw_led_control requests that the led be switched off,
we should cancel the blink worker and set all blinking state variables
to false. This does not depend on the current blinking state.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:52:08 +02:00
Martin Kaiser cbdeb78790 staging: r8188eu: remove channel parameters from rtw_sitesurvey_cmd
The rtw_sitesurvey_cmd function may receive an array of channels in the
ch and ch_num parameters. All of the callers set ch = NULL and ch_num = 0.

Remove the two parameters from rtw_sitesurvey_cmd and the code to process
them.

Tested-by: Michael Straube <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-09-09 09:51:48 +02:00
Martin Kaiser d5eb916d88 hwrng: imx-rngc - use devres for hwrng registration
Replace hwrng_register with devm_hwrng_register and let devres unregister
our hwrng when the device is removed.

It's possible to do this now that devres also handles clock
disable+uprepare. When we had to disable+unprepare the clock ourselves,
we had to unregister the hwrng before this and couldn't use devres.

There's nothing left to do for imx_rngc_remove, this function can go.

Signed-off-by: Martin Kaiser <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
2022-08-26 18:49:10 +08:00
Martin Kaiser 6a2bc44842 hwrng: imx-rngc - use devm_clk_get_enabled
Use the new devm_clk_get_enabled function to get our clock.

We don't have to disable and unprepare the clock ourselves any more in
error paths and in the remove function.

Signed-off-by: Martin Kaiser <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
2022-08-26 18:49:10 +08:00
Martin Kaiser 24e18c8e98 staging: r8188eu: always update the status variables
Always update the status variables in rtw_led_control when we start
blinking because of no link. The code is easier to understand without
the if conditions.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-23 15:43:40 +02:00
Martin Kaiser c00218cd07 staging: r8188eu: always cancel blink_work
In rtw_led_control, we can always cancel a running blink worker when we
start blinking because of no link.

The worker will be scheduled again and there's no point in having more
than one pending blink worker.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-23 15:43:40 +02:00
Martin Kaiser 1102e4e7e9 staging: r8188eu: don't restart "no link" blinking unnecessarily
Simplify one of the cases in rtw_led_control. If we're already blinking
because we have no link, we don't have to restart this blinking when the
caller requests it again. We can simply return and keep on blinking.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-23 15:43:40 +02:00
Martin Kaiser 47d35bf22b hwrng: imx-rngc - use KBUILD_MODNAME as driver name
Use KBUILD_MODNAME instead of hard coding the driver name.

Signed-off-by: Martin Kaiser <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
2022-08-19 18:39:39 +08:00
Martin Kaiser 1bace12735 staging: r8188eu: the high prio queue is always selected
The high priority queue is always selected, regardless of the number of
out endpoints.

Therefore, haldata->OutEpQueueSel & TX_SELE_HQ is always true. We can
remove the check and use a define instead of the numHQ variable.

This check was the last user of TX_SELE_HQ. Rename haldata->OutEpQueueSel
to haldata->out_ep_extra_queues and store only the queues that are selected
in addition to the high priority queue.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:18:29 +02:00
Martin Kaiser 3ce23a49d1 staging: r8188eu: remove two unused defines
HPQ_PUBLIC_DIS and LPQ_PUBLIC_DIS are not used by the r8188eu driver.
Remove them.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:18:29 +02:00
Martin Kaiser a6400455a8 staging: r8188eu: change all num...Q variables to u8
All of numPubQ, numHQ and numLQ variables store only u8 values. Change
their types to u8. We can then simplify the REG_RQPN expression. The
macros and the temporary variable are not needed any more.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:18:29 +02:00
Martin Kaiser 0dd01c0fd1 staging: r8188eu: make numNQ a u8
The numNQ variable in _InitQueueReservedPage is defined as u32. It is
either set to 0 or to 0x1C. Change its type to u8 and remove the code that
casts the u32 value to u8.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:18:29 +02:00
Martin Kaiser ca6311f0e3 staging: r8188eu: remove a temporary variable
Use pregistrypriv->wifi_spec directly instead of defining a temporary
variable.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:18:29 +02:00
Martin Kaiser 93cef2e654 staging: r8188eu: simplify _InitNormalChipTwoOutEpPriority
Simplify the _InitNormalChipTwoOutEpPriority function, now that we have
only one configuration for the queues.

Remove the variables which are constant. Keep only those settings that
depend on wifi_spec.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser e303b2622c staging: r8188eu: we always use HQ and NQ for two endpoints
When _InitNormalChipTwoOutEpPriority is called, pdvobjpriv->RtNumOutPipes
and haldata->OutEpQueueSel have already been initialized.

_InitNormalChipTwoOutEpPriority is called only if
pdvobjpriv->RtNumOutPipes == 2. In this case, haldata->OutEpQueueSel is
always TX_SELE_HQ | TX_SELE_NQ.

Remove the switch-case statement and set valueHi and valueLow directly.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser 36a1cd9dac staging: r8188eu: remove _InitNormalChipOneOutEpPriority
When _InitNormalChipOneOutEpPriority is called, pdvobjpriv->RtNumOutPipes
and haldata->OutEpQueueSel have already been initialized.

_InitNormalChipOneOutEpPriority is called only if
pdvobjpriv->RtNumOutPipes == 1. In this case, haldata->OutEpQueueSel is
always TX_SELE_HQ.

We can then simplify _InitNormalChipOneOutEpPriority to a single
_InitNormalChipRegPriority call, i.e. we can remove
_InitNormalChipOneOutEpPriority and call _InitNormalChipRegPriority
directly.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser 68c72bcf61 staging: r8188eu: simplify two_out_pipe
Simplify the two_out_pipe function. Move common settings out of the
if clause.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser 52a5bba72c staging: r8188eu: simplify three_out_pipe
Only one of the mappings in three_out_pipe depends on the wifi_cfg flag.
Simplify the code accordingly.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser 609ba7515f staging: r8188eu: summarize common Queue2Pipe settings
Regardless of the number of endpoints, queues 4 to 7 are mapped to pipe 0.
Move these mappings to rtl8188eu_interface_configure to make the code
simpler.

It's ok to make these settings even if we exit with error later. In this
case, the driver will not be loaded and pdvobjpriv->Queue2Pipe[] will be
freed.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:58 +02:00
Martin Kaiser d4c66afde2 staging: r8188eu: remove comments about endpoint mapping
Remove the comments in two_out_pipe and three_out_pipe that show the
mappings. They simply repeat the settings in the code and provide no
additional information. Keep the info which RtOutPipe is high, normal
or low.

Without the removed comments, it'll be easier to summarize and reorganize
the code.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser 2ea2f91b28 staging: r8188eu: remove OutEpNumber
Remove the OutEpNumber component of struct hal_data_8188e.
RtNumOutPipes in struct dvobj_priv stores the same info.

Update the only place where OutEpNumber is read.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser 897155c795 staging: r8188eu: summarize endpoint-related settings
rtl8188eu_interface_configure calls _ConfigNormalChipOutEP_8188E and
Hal_MappingOutPipe.

Both of these functions make some settings based on the number of
out endpoints on the 8188eu chip. We can merge both of them into
rtl8188eu_interface_configure and summarize the common code.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser 4b25e7f7c8 staging: r8188eu: move endpoint init functions to usb_halinit.c
Move the Hal_MappingOutPipe function and the functions
one_/two_/three_out_pipe from hal_com.c to usb_halinit.c.

After this move, all the functions that rtl8188eu_interface_configure
calls are in one file and we can continue to summarize and merge them.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser d0852df98b staging: r8188eu: merge two small functions
All that rtl8188eu_interface_configure does is call
HalUsbSetQueuePipeMapping8188EUsb. We can merge the two functions.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser adf8416040 staging: r8188eu: process HalUsbSetQueuePipeMapping8188EUsb's return value
At the moment, HalUsbSetQueuePipeMapping8188EUsb returns an error status
to rtl8188eu_interface_configure, where this status is discarded.

Pass the error status from rtl8188eu_interface_configure to
rtw_usb_if1_init and handle it there.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser a3cba3f05f staging: r8188eu: Hal_MappingOutPipe should return an int
Update the Hal_MappingOutPipe function to return 0 for success or -EXNIO
if the caller requested more than the number of available endpoints.
This error code is also used by usb_find_common_endpoints if a requested
endpoint was not found.

Unlike a boolean return value, a negative error code can be returned to
external functions that call the r8188eu driver, e.g. to the caller of our
probe function.

HalUsbSetQueuePipeMapping8188EUsb passes the return value of
Hal_MappingOutPipe on to its caller. We have to change its return type
from bool to int as well.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:17:57 +02:00
Martin Kaiser b5b26f1da5 staging: r8188eu: simplify the calculation of ie start offset
Use offsetof to calculate the start offset of the information elements in
an association response message. This should make it easier to understand
how the offset is calculated.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:16:41 +02:00
Martin Kaiser 12b7ad9e49 staging: r8188eu: read aid from struct ieee80211_mgmt
Read the aid of the association response message from struct
ieee80211_mgmt. This should be easier to understand and to review than
calculating the offset manually.

Remove the cast to int, aid is a u16.
Keep the 0x3fff mask that is currently applied to the aid.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:16:41 +02:00
Martin Kaiser 27597ee001 staging: r8188eu: read capability info from struct ieee80211_mgmt
Read the capability info of the association response message from struct
ieee80211_mgmt. This should be easier to understand and to review than
calculating the offset manually.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:16:41 +02:00
Martin Kaiser df2889c627 staging: r8188eu: read status_code from struct ieee80211_mgmt
Read the status code of the association response message from struct
ieee80211_mgmt. This should be easier to understand and to review than
calculating the offset manually.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:16:40 +02:00
Martin Kaiser 173603dba9 staging: r8188eu: replace a get_da call
The r8188eu driver implements an internal get_da function to read the
destination address (da) from an incoming message. Callers of this
function should be updated to use the ieee80211 framework, with the goal
of removing get_da eventually.

This patch replaces a get_da call in the OnAssocRsp function.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:16:40 +02:00
Martin Kaiser c8d3347e30 staging: r8188eu: return an error code in rtw_usb_if1_init
rtw_usb_if1_init returns a pointer that isn't used by the caller. Return
an error code instead. We can then propagate errors from lower-level
functions like ReadAdapterInfo8188EU and fail the initialisation of the
driver with a proper error code.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:13:56 +02:00
Martin Kaiser b9eb312618 staging: r8188eu: make rtw_handle_dualmac a void function
The rtw_handle_dualmac function always returns _SUCCESS. Remove the return
value and update the one caller that checks it.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:13:56 +02:00
Martin Kaiser 57f14afac3 staging: r8188eu: handle errors from ReadAdapterInfo8188EU
Update ReadAdapterInfo8188EU to return 0 for success or a negative
error code. If rtw_read8 fails, we can just relay the error it returns.

Update rtw_usb_if1_init to check the return value from
ReadAdapterInfo8188EU. For now, rtw_usb_if1_init does not yet pass errors
from ReadAdapterInfo8188EU on to its caller.

Suggested-by: Pavel Skripkin <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:13:56 +02:00
Martin Kaiser 60d037564f staging: r8188eu: txpktbuf_bndy does not depend on wifi_spec
Remove the if clause that sets txpktbuf_bndy. Both branches set the same
value.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-08-16 15:12:49 +02:00
Martin Kaiser 123b3b754e staging: r8188eu: remove DoReserved prototype
The DoReserved function was removed in commit 869ddbfccd ("staging:
r8188eu: remove dummy entries from OnAction_tbl"). Remove the prototype
as well.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-27 08:45:11 +02:00
Martin Kaiser 51ee8ea588 staging: r8188eu: remove OnAtim prototype
The OnAtim function was removed in commit 6d933902c6 ("staging: r8188eu:
remove OnAtim"). Remove the prototype as well.

Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-27 08:45:11 +02:00
Martin Kaiser 724933e37a staging: r8188eu: fall back to random mac address
Call eth_random_addr to generate a random mac address if we cannot load
the mac address from the efuses.

Do not use a constant mac address as fallback. This may create conflicts
if we have several r8188eu devices on the network.

Suggested-by: Joe Perches <[email protected]>
Tested-by: Philipp Hortmann <[email protected]> # Edimax N150
Reviewed-by: Pavel Skripkin <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-14 15:47:36 +02:00
Martin Kaiser c1da5a7bef staging: r888eu: use dynamic allocation for efuse buffer
Use kmalloc to allocate the efuse buffer in ReadAdapterInfo8188EU and
free it on exit. This is better than using a 512 byte array on the stack.

It's ok to drop the __aligned(4) qualifier. kmalloc aligns to
ARCH_KMALLOC_MINALIGN, this is at least 8 bytes.

Suggested-by: Dan Carpenter <[email protected]>
Suggested-by: Larry Finger <[email protected]>
Acked-by: Larry Finger <[email protected]>
Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-14 15:47:21 +02:00
Martin Kaiser d4090520cd staging: r8188eu: the bcnhead parameter is always 0
The only caller of efuse_read_phymap_from_txpktbuf sets bcnhead to 0.
Remove this function parameter and simplify the function body.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser c337bf6256 staging: r8188eu: efuse_utilized is never read
The efuse_utilized variable in function efuse_phymap_to_logical is
written to but never read. Remove it.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser e2bd5dc33f staging: r8188eu: _offset is always 0 in efuse_phymap_to_logical
The _offset parameter of iol_read_efuse is always 0. Remove the
parameter and use 0 in the function body.

We can now replace the bytewise copy from efuseTbl to pbuf with memcpy.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser cda94a6b44 staging: r8188eu: offset is always 0 in iol_read_efuse
The offset parameter of iol_read_efuse is always 0. Remove the
parameter and use 0 in the function body.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser db9895b86b staging: r8188eu: offset is always 0 in rtl8188e_ReadEFuse
The offset parameter of rtl8188e_ReadEFuse is always 0. Remove the
parameter and use 0 in the function body.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser 36442aa73b staging: r8188eu: txpktbuf_bndy is always 0
The only caller of iol_read_efuse sets the txpktbuf_bndy parameter to 0.
Remove the parameter from iol_read_efuse and use 0 in the function body.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser e1ebb0d6a1 staging: r8188eu: merge ReadEFuseByIC into rtl8188e_ReadEFuse
The rtl8188e_ReadEFuse function is just a wrapper to call ReadEFuseByIC.
Copy ReadEFuseByIC into rtl8188e_ReadEFuse and remove ReadEFuseByIC.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser 3c1178680b staging: r8188eu: use memcpy for fallback mac address
Use memcpy to store the fallback mac address in eeprom->mac_addr. Do not
copy byte by byte.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser 0fcae03da0 staging: r8188eu: always initialise efuse buffer with 0xff
If BOOT_FROM_EEPROM is set, efuse_buf is not initialised before it is
passed to functions that read from it.

The buffer will be filled with 0x00 in this case like all local variables.
However, the parsing functions expect the buffer to be filled with 0xFF if
reading eeprom/efuse data failed. Fill the buffer with 0xFF before we try
to read the data.

Please note that this problem existed before we started using a local
buffer. Adapter->eeprompriv->efuse_eeprom_data was allocated as a part of
struct adapter by a vzalloc call in rtw_usb_if1_init.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser 698bd81fe8 staging: r8188eu: use a local buffer for efuse data
The efuse_eeprom_data array in struct eeprom_priv is used only by
ReadAdapterInfo8188EU. We can remove efuse_eeprom_data and use a local
buffer instead.

Use EFUSE_MAP_LEN_88E as buffer size. Its value is the same as
HWSET_MAX_SIZE_512. The functions that access the buffer use
EFUSE_MAP_LEN_88E for its size.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00
Martin Kaiser 14dbcfc4c9 staging: r8188eu: merge EFUSE_ShadowMapUpdate with its caller
Merge the EFUSE_ShadowMapUpdate function into ReadAdapterInfo8188EU, which
is the only caller.

Merging the two functions makes it clearer that eeprom->efuse_eeprom_data
is in fact a temporary buffer that stores info read from efuses.

Signed-off-by: Martin Kaiser <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2022-07-11 10:06:45 +02:00