Staging: rtl8188eu: Use mod_timer and setup_timer
v2 cover Staging: rtl8188eu: Use mod_timer and setup_timer
This patch-set introduces the use of timer API
functions mod_timer and setup_timer instead of
driver specific functions _set_timer and_init_timer respectively. Here, these chnages
are done using Coccinelle.
Vaishali Thakkar (2):
Staging: rtl8188eu: Eliminate use of _set_timer
Staging: rtl8188eu: Eliminate use of _init_timer
drivers/staging/rtl8188eu/core/rtw_cmd.c | 18 ++++--- drivers/staging/rtl8188eu/core/rtw_ioctl_set.c | 3 +- drivers/staging/rtl8188eu/core/rtw_led.c | 62 +++++++++++++++-------- drivers/staging/rtl8188eu/core/rtw_mlme.c | 15 ++++-- drivers/staging/rtl8188eu/core/rtw_mlme_ext.c | 7 +-- drivers/staging/rtl8188eu/core/rtw_pwrctrl.c | 4 +- drivers/staging/rtl8188eu/core/rtw_recv.c | 10 ++-- drivers/staging/rtl8188eu/include/osdep_service.h | 14 ----- drivers/staging/rtl8188eu/include/rtw_mlme_ext.h | 6 ++- drivers/staging/rtl8188eu/include/rtw_pwrctrl.h | 3 +- drivers/staging/rtl8188eu/include/rtw_recv.h | 4 +- drivers/staging/rtl8188eu/os_dep/mlme_linux.c | 18 ++++--- drivers/staging/rtl8188eu/os_dep/os_intfs.c | 6 ++- drivers/staging/rtl8188eu/os_dep/recv_linux.c | 4 +- 14 files changed, 105 insertions(+), 69 deletions(-)
Signature · 1 line
1.9.1
PATCH v2 1/2 Staging: rtl8188eu: Eliminate use of _set_timer
This patch introduces the use of API function mod_timer instead of driver specific function _set_timer as it is a more efficient and standard way to update the expire field of an active timer. Also, definition of function _set_timer is removed as it is no longer needed after this change.
Here, these cases are handled using Coccinelle and semantic patch used for this is as follows:
@@ expression x; expression y;@@
- _set_timer (&x, y);
+ mod_timer (&x, jiffies + msecs_to_jiffies (y));
---
v1 : Here, this patch has some line over 80 characters as
limiting them to 80 characters does not make code look good and readable.
v2 : Change commit log
- Redo the patch against staging-testing
drivers/staging/rtl8188eu/core/rtw_cmd.c | 18 ++++--- drivers/staging/rtl8188eu/core/rtw_ioctl_set.c | 3 +- drivers/staging/rtl8188eu/core/rtw_led.c | 59 +++++++++++++++-------- drivers/staging/rtl8188eu/core/rtw_mlme.c | 15 ++++-- drivers/staging/rtl8188eu/core/rtw_mlme_ext.c | 7 +-- drivers/staging/rtl8188eu/core/rtw_recv.c | 6 ++- drivers/staging/rtl8188eu/include/osdep_service.h | 5 -- drivers/staging/rtl8188eu/include/rtw_mlme_ext.h | 6 ++- drivers/staging/rtl8188eu/include/rtw_pwrctrl.h | 3 +- drivers/staging/rtl8188eu/include/rtw_recv.h | 4 +- drivers/staging/rtl8188eu/os_dep/os_intfs.c | 6 ++- 11 files changed, 82 insertions(+), 50 deletions(-)
drivers/staging/rtl8188eu/core/rtw_cmd.c +12 -6
@@ -325,7 +325,8 @@ u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid,if (res == _SUCCESS) { pmlmepriv->scan_start_time = jiffies; -_set_timer (&pmlmepriv->scan_to_timer,SCANNING_TIMEOUT ); +mod_timer (&pmlmepriv->scan_to_timer, + jiffies +msecs_to_jiffies (SCANNING_TIMEOUT ));rtw_led_control (padapter,LED_CTL_SITE_SURVEY );
@@ -1234,9 +1235,11 @@ void rtw_survey_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd)if (pcmd->res ==H2C_DROPPED ) {/* TODO: cancel timer and do timeout handler directly... */ /* need to make timeout handlerOS independent */ -_set_timer (&pmlmepriv->scan_to_timer,1 ); +mod_timer (&pmlmepriv->scan_to_timer, + jiffies +msecs_to_jiffies (1 )); }else if (pcmd->res !=H2C_SUCCESS ) { -_set_timer (&pmlmepriv->scan_to_timer,1 ); +mod_timer (&pmlmepriv->scan_to_timer, + jiffies +msecs_to_jiffies (1 ));RT_TRACE (_module_rtl871x_cmd_c_, _drv_err_, ("\n ********Error: MgntActrtw_set_802_11_bssid_LIST_SCAN Fail ************\n\n." )); }
@@ -1270,10 +1273,12 @@ void rtw_joinbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd)if (pcmd->res ==H2C_DROPPED ) {/* TODO: cancel timer and do timeout handler directly... */ /* need to make timeout handlerOS independent */ -_set_timer (&pmlmepriv->assoc_timer,1 ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (1 )); }else if (pcmd->res !=H2C_SUCCESS ) {RT_TRACE (_module_rtl871x_cmd_c_, _drv_err_, ("********Error:rtw_select_and_join_from_scanned_queue Wait Sema Fail ************\n" )); -_set_timer (&pmlmepriv->assoc_timer,1 ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (1 )); }rtw_free_cmd_obj (pcmd);
@@ -1291,7 +1296,8 @@ void rtw_createbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd)if (pcmd->res !=H2C_SUCCESS ) {RT_TRACE (_module_rtl871x_cmd_c_, _drv_err_, ("\n ********Error: rtw_createbss_cmd_callback Fail ************\n\n." )); -_set_timer (&pmlmepriv->assoc_timer,1 ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (1 )); }del_timer_sync (&pmlmepriv->assoc_timer);
drivers/staging/rtl8188eu/core/rtw_ioctl_set.c +2 -1
@@ -86,7 +86,8 @@ u8 rtw_do_join(struct adapter *padapter) select_ret =rtw_select_and_join_from_scanned_queue (pmlmepriv);if (select_ret == _SUCCESS) { pmlmepriv->to_join = false; -_set_timer (&pmlmepriv->assoc_timer,MAX_JOIN_TIMEOUT ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (MAX_JOIN_TIMEOUT )); }else {if (check_fwstate (pmlmepriv,WIFI_ADHOC_STATE ) == true) {/* submit createbss_cmd to change to a ADHOC_MASTER */
drivers/staging/rtl8188eu/core/rtw_led.c +38 -21
168 lines not on this page · raw message
drivers/staging/rtl8188eu/core/rtw_mlme.c +10 -5
@@ -665,7 +665,8 @@ void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf)set_fwstate (pmlmepriv, _FW_UNDER_LINKING);if (rtw_select_and_join_from_scanned_queue (pmlmepriv) == _SUCCESS) { -_set_timer (&pmlmepriv->assoc_timer,MAX_JOIN_TIMEOUT ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (MAX_JOIN_TIMEOUT )); }else {struct wlan_bssid_ex *pdev_network = &(adapter->registrypriv.dev_network);u8 *pibss = adapter->registrypriv.dev_network.MacAddress;
@@ -692,7 +693,8 @@ void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf) pmlmepriv->to_join = false; s_ret =rtw_select_and_join_from_scanned_queue (pmlmepriv);if (_SUCCESS == s_ret) { -_set_timer (&pmlmepriv->assoc_timer,MAX_JOIN_TIMEOUT ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (MAX_JOIN_TIMEOUT )); }else if (s_ret ==2 ) {/* there is no need to wait for join */ _clr_fwstate_ (pmlmepriv, _FW_UNDER_LINKING);rtw_indicate_connect (adapter);
@@ -1127,14 +1129,16 @@ void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf) }else if (pnetwork->join_res ==-4 ) {rtw_reset_securitypriv (adapter); -_set_timer (&pmlmepriv->assoc_timer,1 ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (1 ));if ((check_fwstate (pmlmepriv, _FW_UNDER_LINKING)) == true) {RT_TRACE (_module_rtl871x_mlme_c_, _drv_err_, ("fail! clear _FW_UNDER_LINKING ^^^fw_state=%x\n" ,get_fwstate (pmlmepriv)));_clr_fwstate_ (pmlmepriv, _FW_UNDER_LINKING); } }else {/* if join_res < 0 (join fails), then try again */ -_set_timer (&pmlmepriv->assoc_timer,1 ); +mod_timer (&pmlmepriv->assoc_timer, + jiffies +msecs_to_jiffies (1 ));_clr_fwstate_ (pmlmepriv, _FW_UNDER_LINKING); }
@@ -1449,7 +1453,8 @@ void rtw_dynamic_check_timer_handlder(void *function_context)rtw_auto_scan_handler (adapter); } exit: -_set_timer (&adapter->mlmepriv.dynamic_chk_timer,2000 ); +mod_timer (&adapter->mlmepriv.dynamic_chk_timer, + jiffies +msecs_to_jiffies (2000 )); }#define RTW_SCAN_RESULT_EXPIRE 2000
drivers/staging/rtl8188eu/core/rtw_mlme_ext.c +4 -3
@@ -3972,8 +3972,8 @@ void start_clnt_join(struct adapter *padapter)/* and enable a timer */ beacon_timeout =decide_wait_for_beacon_timeout (pmlmeinfo->bcn_interval);set_link_timer (pmlmeext, beacon_timeout); -_set_timer (&padapter->mlmepriv.assoc_timer, - (REAUTH_TO *REAUTH_LIMIT ) + (REASSOC_TO *REASSOC_LIMIT ) + beacon_timeout); +mod_timer (&padapter->mlmepriv.assoc_timer, jiffies + +msecs_to_jiffies ((REAUTH_TO *REAUTH_LIMIT ) + (REASSOC_TO *REASSOC_LIMIT ) + beacon_timeout)); pmlmeinfo->state =WIFI_FW_AUTH_NULL |WIFI_FW_STATION_STATE ; }else if (caps&cap_IBSS) {/* adhoc client */
@@ -5406,7 +5406,8 @@ u8 add_ba_hdl(struct adapter *padapter, unsigned char *pbuf)if (((pmlmeinfo->state &WIFI_FW_ASSOC_SUCCESS ) && (pmlmeinfo->HT_enable)) || ((pmlmeinfo->state&0x03 ) ==WIFI_FW_AP_STATE )) {issue_action_BA (padapter, pparm->addr,RTW_WLAN_ACTION_ADDBA_REQ , (u16 )pparm->tid); -_set_timer (&psta->addba_retry_timer,ADDBA_TO ); +mod_timer (&psta->addba_retry_timer, + jiffies +msecs_to_jiffies (ADDBA_TO )); }else { psta->htpriv.candidate_tid_bitmap &= ~BIT (pparm->tid); }
drivers/staging/rtl8188eu/core/rtw_recv.c +4 -2
@@ -1927,7 +1927,8 @@ static int recv_indicatepkt_reorder(struct adapter *padapter,/* recv_indicatepkts_in_order(padapter, preorder_ctrl, true); */ if (recv_indicatepkts_in_order (padapter, preorder_ctrl, false)) { -_set_timer (&preorder_ctrl->reordering_ctrl_timer,REORDER_WAIT_TIME ); +mod_timer (&preorder_ctrl->reordering_ctrl_timer, + jiffies +msecs_to_jiffies (REORDER_WAIT_TIME ));spin_unlock_bh (&ppending_recvframe_queue->lock); }else {spin_unlock_bh (&ppending_recvframe_queue->lock);
@@ -1957,7 +1958,8 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext)spin_lock_bh (&ppending_recvframe_queue->lock);if (recv_indicatepkts_in_order (padapter, preorder_ctrl, true) == true) -_set_timer (&preorder_ctrl->reordering_ctrl_timer,REORDER_WAIT_TIME ); +mod_timer (&preorder_ctrl->reordering_ctrl_timer, + jiffies +msecs_to_jiffies (REORDER_WAIT_TIME ));spin_unlock_bh (&ppending_recvframe_queue->lock); }
drivers/staging/rtl8188eu/include/osdep_service.h +0 -5
@@ -85,11 +85,6 @@ static inline void _init_timer(struct timer_list *ptimer,init_timer (ptimer); } -static inline void _set_timer (struct timer_list *ptimer,u32 delay_time) -{ -mod_timer (ptimer , (jiffies+msecs_to_jiffies (delay_time))); -} -#define RTW_TIMER_HDL_ARGS void *FunctionContext#define RTW_TIMER_HDL_NAME (name) rtw_##name##_timer_hdl#define RTW_DECLARE_TIMER_HDL (name) \
drivers/staging/rtl8188eu/include/rtw_mlme_ext.h +4 -2
@@ -651,12 +651,14 @@ void addba_timer_hdl(void *function_context);#define set_survey_timer (mlmeext, ms) \ do { \ - _set_timer(&(mlmeext)->survey_timer, (ms)); \ + mod_timer(&mlmeext->survey_timer, \ + jiffies + msecs_to_jiffies(ms)) } while (0)#define set_link_timer (mlmeext, ms) \ do { \ - _set_timer(&(mlmeext)->link_timer, (ms)); \ + mod_timer(&mlmeext->link_timer, \ + jiffies + msecs_to_jiffies(ms)) } while (0) int cckrates_included(unsigned char *rate, int ratelen);
drivers/staging/rtl8188eu/include/rtw_pwrctrl.h +2 -1
@@ -234,7 +234,8 @@ struct pwrctrl_priv {#define _rtw_set_pwr_state_check_timer (pwrctrlpriv, ms) \ do { \ - _set_timer(&(pwrctrlpriv)->pwr_state_check_timer, (ms)); \ + mod_timer(&pwrctrlpriv->pwr_state_check_timer, \ + jiffies + msecs_to_jiffies(ms)); } while (0)#define rtw_set_pwr_state_check_timer (pwrctrl) \
drivers/staging/rtl8188eu/include/rtw_recv.h +2 -2
@@ -216,8 +216,8 @@ struct recv_priv { };#define rtw_set_signal_stat_timer (recvpriv) \ - _set_timer(&(recvpriv)->signal_stat_timer, \ - (recvpriv)->signal_stat_sampling_interval) + mod_timer(&recvpriv->signal_stat_timer, jiffies + \ + msecs_to_jiffies(recvpriv->signal_stat_sampling_interval))struct sta_recv_priv {spinlock_t lock;
drivers/staging/rtl8188eu/os_dep/os_intfs.c +4 -2
@@ -998,7 +998,8 @@ int _netdev_open(struct net_device *pnetdev) } padapter->net_closed = false; -_set_timer (&padapter->mlmepriv.dynamic_chk_timer,2000 ); +mod_timer (&padapter->mlmepriv.dynamic_chk_timer, + jiffies +msecs_to_jiffies (2000 )); padapter->pwrctrlpriv.bips_processing = false;rtw_set_pwr_state_check_timer (&padapter->pwrctrlpriv);
@@ -1052,7 +1053,8 @@ static int ips_netdrv_open(struct adapter *padapter) padapter->intf_start (padapter);rtw_set_pwr_state_check_timer (&padapter->pwrctrlpriv); -_set_timer (&padapter->mlmepriv.dynamic_chk_timer,5000 ); +mod_timer (&padapter->mlmepriv.dynamic_chk_timer, + jiffies +msecs_to_jiffies (5000 ));return _SUCCESS;
Signature · 1 line
1.9.1
PATCH v2 2/2 Staging: rtl8188eu: Eliminate use of _init_timer
In reply to Vaishali ThakkarThis patch introduces the use of API function setup_timer instead of driver specific function _init_timer as it is the preferred and standard way to setup and set the timer. Also, definition of function _init_timer is removed as it is no longer needed after this change.
Here, this is done using Coccinelle and semantic patch used for this is as follows:
@@ expression x, y; identifier a, b;@@
- _init_timer (&x, y, a, b);
+ setup_timer (&x, a, (unsigned long)b);
---
v2: Change commit log
- Shorten the lines to 80 characters
- Redo patch agianst staging-testing
drivers/staging/rtl8188eu/core/rtw_led.c | 3 ++- drivers/staging/rtl8188eu/core/rtw_pwrctrl.c | 4 +++- drivers/staging/rtl8188eu/core/rtw_recv.c | 4 +++- drivers/staging/rtl8188eu/include/osdep_service.h | 9 --------- drivers/staging/rtl8188eu/os_dep/mlme_linux.c | 18 ++++++++++++------ drivers/staging/rtl8188eu/os_dep/recv_linux.c | 4 +++- 6 files changed, 23 insertions(+), 19 deletions(-)
drivers/staging/rtl8188eu/core/rtw_led.c +2 -1
@@ -72,7 +72,8 @@ void InitLed871x(struct adapter *padapter, struct LED_871x *pLed)ResetLedStatus (pLed); -_init_timer (&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed); +setup_timer (&pLed->BlinkTimer, BlinkTimerCallback, + (unsigned long )pLed);INIT_WORK (&(pLed->BlinkWorkItem), BlinkWorkItemCallback); }
drivers/staging/rtl8188eu/core/rtw_pwrctrl.c +3 -1
@@ -544,7 +544,9 @@ void rtw_init_pwrctrl_priv(struct adapter *padapter) pwrctrlpriv->btcoex_rfon = false; -_init_timer (&(pwrctrlpriv->pwr_state_check_timer), padapter->pnetdev, pwr_state_check_handler, (u8 *)padapter); +setup_timer (&pwrctrlpriv->pwr_state_check_timer, + pwr_state_check_handler, + (unsigned long )padapter); }inline void rtw_set_ips_deny (struct adapter *padapter,u32 ms)
drivers/staging/rtl8188eu/core/rtw_recv.c +3 -1
@@ -98,7 +98,9 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter) res =rtw_hal_init_recv_priv (padapter); -_init_timer (&precvpriv->signal_stat_timer, padapter->pnetdev,RTW_TIMER_HDL_NAME (signal_stat), padapter); +setup_timer (&precvpriv->signal_stat_timer, +RTW_TIMER_HDL_NAME (signal_stat), + unsigned long(padapter)); precvpriv->signal_stat_sampling_interval =1000 ;/* ms */
drivers/staging/rtl8188eu/include/osdep_service.h +0 -9
@@ -76,15 +76,6 @@ static inline int _enter_critical_mutex(struct mutex *pmutex,return ret; } -static inline void _init_timer (struct timer_list *ptimer, -struct net_device *nic_hdl, -void *pfunc,void *cntx) -{ - ptimer->function = pfunc; - ptimer->data = (unsigned long )cntx; -init_timer (ptimer); -} -#define RTW_TIMER_HDL_ARGS void *FunctionContext#define RTW_TIMER_HDL_NAME (name) rtw_##name##_timer_hdl#define RTW_DECLARE_TIMER_HDL (name) \
drivers/staging/rtl8188eu/os_dep/mlme_linux.c +12 -6
@@ -29,9 +29,12 @@ void rtw_init_mlme_timer(struct adapter *padapter) {struct mlme_priv *pmlmepriv = &padapter->mlmepriv; -_init_timer (&(pmlmepriv->assoc_timer), padapter->pnetdev, _rtw_join_timeout_handler, padapter); -_init_timer (&(pmlmepriv->scan_to_timer), padapter->pnetdev, rtw_scan_timeout_handler, padapter); -_init_timer (&(pmlmepriv->dynamic_chk_timer), padapter->pnetdev, rtw_dynamic_check_timer_handlder, padapter); +setup_timer (&pmlmepriv->assoc_timer, _rtw_join_timeout_handler, + (unsigned long )padapter); +setup_timer (&pmlmepriv->scan_to_timer, rtw_scan_timeout_handler, + (unsigned long )padapter); +setup_timer (&pmlmepriv->dynamic_chk_timer, + rtw_dynamic_check_timer_handlder, (unsigned long )padapter); }void rtw_os_indicate_connect (struct adapter *adapter)
@@ -131,15 +134,18 @@ void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, u8 *sec_ie)void init_addba_retry_timer (struct adapter *padapter,struct sta_info *psta) { -_init_timer (&psta->addba_retry_timer, padapter->pnetdev, addba_timer_hdl, psta); +setup_timer (&psta->addba_retry_timer, addba_timer_hdl, + (unsigned long )psta); }void init_mlme_ext_timer (struct adapter *padapter) {struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; -_init_timer (&pmlmeext->survey_timer, padapter->pnetdev, survey_timer_hdl, padapter); -_init_timer (&pmlmeext->link_timer, padapter->pnetdev, link_timer_hdl, padapter); +setup_timer (&pmlmeext->survey_timer, survey_timer_hdl, + (unsigned long )padapter); +setup_timer (&pmlmeext->link_timer, link_timer_hdl, + (unsigned long )padapter); }#ifdef CONFIG_88EU_AP_MODE
drivers/staging/rtl8188eu/os_dep/recv_linux.c +3 -1
@@ -195,5 +195,7 @@ void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) {struct adapter *padapter = preorder_ctrl->padapter; -_init_timer (&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, rtw_reordering_ctrl_timeout_handler, preorder_ctrl); +setup_timer (&preorder_ctrl->reordering_ctrl_timer, + rtw_reordering_ctrl_timeout_handler, + (unsigned long )preorder_ctrl); }
Signature · 1 line
1.9.1
Greg KH
maintainerRe: [Outreachy kernel] [PATCH v2 1/2] Staging: rtl8188eu: Eliminate use of _set_timer
In reply to Vaishali ThakkarQuoted 15 lines · Vaishali Thakkar
This patch introduces the use of API function
mod_timerinstead of driver specific function_set_timeras it is a more efficient and standard way to update the expire field of an active timer. Also, definition of function_set_timeris removed as it is no longer needed after this change.Here, these cases are handled using Coccinelle and semantic patch used for this is as follows:
@@ expression x; expression y;@@
-
_set_timer(&x, y);
+mod_timer(&x, jiffies +msecs_to_jiffies(y));
Quoted 7 lines
Signed-off-by Vaishali Thakkar <[email protected]>---
v1 : Here, this patch has some line over 80 characters as
limiting them to 80 characters does not make code look good and readable.
v2 : Change commit log
- Redo the patch against staging-testing
How about you do a v3 that includes: Fixes build problems in previous version.
ALWAYS test build your patches, it breaks my workflow when patches are not tested and break the build :(
thanks,
greg k-h
Re: [Outreachy kernel] [PATCH v2 1/2] Staging: rtl8188eu: Eliminate use of _set_timer
Quoted 24 lines · Greg KH
Quoted 15 lines · Vaishali Thakkar
This patch introduces the use of API function
mod_timerinstead of driver specific function_set_timeras it is a more efficient and standard way to update the expire field of an active timer. Also, definition of function_set_timeris removed as it is no longer needed after this change.Here, these cases are handled using Coccinelle and semantic patch used for this is as follows:
@@ expression x; expression y;@@
-
_set_timer(&x, y);
+mod_timer(&x, jiffies +msecs_to_jiffies(y));Quoted 7 lines
Signed-off-by Vaishali Thakkar <[email protected]>---
v1 : Here, this patch has some line over 80 characters as
limiting them to 80 characters does not make code look good and readable.
v2 : Change commit log
- Redo the patch against staging-testing
Quoted 5 lines
How about you do a v3 that includes: Fixes build problems in previous version.
ALWAYS test build your patches, it breaks my workflow when patches are not tested and break the build :(
I am used to send a patch after build-testing it. But here I had some problem with my gcc and that's why it didn't show me any errors. I am really very sorry for this.
I will send v3 solving all those build problems.
Thank you.
Quoted 3 lines
thanks,
greg k-h
Signature · 1 line
Vaishali