FINANCE YOUR PROJECT
Hello I am the CEO AES International Company. We are offering Corporate and Personal Loan for project funding investment placement for Healthcare, Real Estate, Transportation and Agriculture at 3% interest rate for a duration of 15 years. We also pay 1% commission to brokers, who introduce project owners for finance or other opportunities. Faithfully, Sam Instone CEO AES International ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [RFC 1/3] Initialize devlink health dump framework for the dlge driver
On 2020-08-15 00:05 +0800, Coiby Xu wrote: > Initialize devlink health dump framework for the dlge driver so the > coredump could be done via devlink. > > Signed-off-by: Coiby Xu > --- > drivers/staging/qlge/Makefile | 2 +- > drivers/staging/qlge/qlge.h| 9 +++ > drivers/staging/qlge/qlge_health.c | 43 ++ > drivers/staging/qlge/qlge_health.h | 2 ++ > drivers/staging/qlge/qlge_main.c | 21 +++ > 5 files changed, 76 insertions(+), 1 deletion(-) > create mode 100644 drivers/staging/qlge/qlge_health.c > create mode 100644 drivers/staging/qlge/qlge_health.h > > diff --git a/drivers/staging/qlge/Makefile b/drivers/staging/qlge/Makefile > index 1dc2568e820c..0a1e4c8dd546 100644 > --- a/drivers/staging/qlge/Makefile > +++ b/drivers/staging/qlge/Makefile > @@ -5,4 +5,4 @@ > > obj-$(CONFIG_QLGE) += qlge.o > > -qlge-objs := qlge_main.o qlge_dbg.o qlge_mpi.o qlge_ethtool.o > +qlge-objs := qlge_main.o qlge_dbg.o qlge_mpi.o qlge_ethtool.o qlge_health.o > diff --git a/drivers/staging/qlge/qlge.h b/drivers/staging/qlge/qlge.h > index fc8c5ca8935d..055ded6dab60 100644 > --- a/drivers/staging/qlge/qlge.h > +++ b/drivers/staging/qlge/qlge.h > @@ -2061,6 +2061,14 @@ struct nic_operations { > int (*port_initialize) (struct ql_adapter *); > }; > This patch doesn't apply over the latest staging tree. I think your tree is missing commit d923bb6bf508 ("staging: qlge: qlge.h: Function definition arguments should have names.") > + > + > +struct qlge_devlink { > +struct ql_adapter *qdev; > +struct net_device *ndev; I don't have experience implementing devlink callbacks but looking at some other devlink users (mlx4, ionic, ice), all of them use devlink priv space for their main private structure. That would be struct ql_adapter in this case. Is there a good reason to stray from that pattern? > +struct devlink_health_reporter *reporter; > +}; > + > /* > * The main Adapter structure definition. > * This structure has all fields relevant to the hardware. > @@ -2078,6 +2086,7 @@ struct ql_adapter { > struct pci_dev *pdev; > struct net_device *ndev;/* Parent NET device */ > > + struct qlge_devlink *devlink; > /* Hardware information */ > u32 chip_rev_id; > u32 fw_rev_id; > diff --git a/drivers/staging/qlge/qlge_health.c > b/drivers/staging/qlge/qlge_health.c > new file mode 100644 > index ..292f6b1827e1 > --- /dev/null > +++ b/drivers/staging/qlge/qlge_health.c > @@ -0,0 +1,43 @@ > +#include "qlge.h" > +#include "qlge_health.h" > + > +static int > +qlge_reporter_coredump(struct devlink_health_reporter *reporter, > + struct devlink_fmsg *fmsg, void *priv_ctx, > + struct netlink_ext_ack *extack) > +{ > + return 0; > +} > + > +static const struct devlink_health_reporter_ops qlge_reporter_ops = { > + .name = "dummy", > + .dump = qlge_reporter_coredump, > +}; I think select NET_DEVLINK should be added to drivers/staging/qlge/Kconfig > + > +int qlge_health_create_reporters(struct qlge_devlink *priv) > +{ > + int err; > + > + struct devlink_health_reporter *reporter; > + struct devlink *devlink; > + > + devlink = priv_to_devlink(priv); > + reporter = > + devlink_health_reporter_create(devlink, _reporter_ops, > +0, > +priv); > + if (IS_ERR(reporter)) { > + netdev_warn(priv->ndev, > + "Failed to create reporter, err = %ld\n", > + PTR_ERR(reporter)); > + return PTR_ERR(reporter); > + } > + priv->reporter = reporter; > + > + if (err) > + return err; > + > + return 0; > +} > + > + Stray newlines > diff --git a/drivers/staging/qlge/qlge_health.h > b/drivers/staging/qlge/qlge_health.h > new file mode 100644 > index ..07d3bafab845 > --- /dev/null > +++ b/drivers/staging/qlge/qlge_health.h > @@ -0,0 +1,2 @@ > +#include > +int qlge_health_create_reporters(struct qlge_devlink *priv); I would suggest to put this in qlge.h instead of creating a new file. > diff --git a/drivers/staging/qlge/qlge_main.c > b/drivers/staging/qlge/qlge_main.c > index 1650de13842f..b2be7f4b7dd6 100644 > --- a/drivers/staging/qlge/qlge_main.c > +++ b/drivers/staging/qlge/qlge_main.c > @@ -42,6 +42,7 @@ > #include > > #include "qlge.h" > +#include "qlge_health.h" > > char qlge_driver_name[] = DRV_NAME; > const char qlge_driver_version[] = DRV_VERSION; > @@ -4550,6 +4551,8 @@ static void ql_timer(struct timer_list *t) > mod_timer(>timer, jiffies + (5 * HZ)); > } > > +static const struct devlink_ops qlge_devlink_ops; > + > static int qlge_probe(struct pci_dev *pdev, > const struct pci_device_id *pci_entry) > { > @@ -4557,6 +4560,13 @@ static int
Re: [RFC 3/3] staging: qlge: clean up code that dump info to dmesg
On 2020-08-15 00:06 +0800, Coiby Xu wrote: > The related code are not necessary because, > - Device status and general registers can be obtained by ethtool. > - Coredump can be done via devlink health reporter. > - Structure related to the hardware (struct ql_adapter) can be obtained > by crash or drgn. I would suggest to add the drgn script from the cover letter to Documentation/networking/device_drivers/qlogic/ I would also suggest to submit a separate patch now which fixes the build breakage reported in <20200629053004.GA6165@f3> while you work on removing that code. > > Signed-off-by: Coiby Xu > --- > drivers/staging/qlge/qlge.h | 82 > drivers/staging/qlge/qlge_dbg.c | 672 > drivers/staging/qlge/qlge_ethtool.c | 1 - > drivers/staging/qlge/qlge_main.c| 6 - > 4 files changed, 761 deletions(-) > [...] > diff --git a/drivers/staging/qlge/qlge_dbg.c b/drivers/staging/qlge/qlge_dbg.c > index 058889687907..368394123d16 100644 > --- a/drivers/staging/qlge/qlge_dbg.c > +++ b/drivers/staging/qlge/qlge_dbg.c > @@ -1326,675 +1326,3 @@ void ql_mpi_core_to_log(struct work_struct *work) > sizeof(*qdev->mpi_coredump), false); > } > > -#ifdef QL_REG_DUMP > -static void ql_dump_intr_states(struct ql_adapter *qdev) > -{ [...] > - } > -} > -#endif This leaves a stray newline at the end of the file and also does not apply over latest staging. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: r8188eu: remove unnecessary type cast of rtw_netdev_priv() result
The type cast padapter = (struct adapter *)rtw_netdev_priv(dev); do nothing because type of rtw_netdev_priv() result is (struct adapter *). Signed-off-by: Ivan Safonov --- drivers/staging/rtl8188eu/core/rtw_debug.c| 8 +- drivers/staging/rtl8188eu/core/rtw_pwrctrl.c | 2 +- .../staging/rtl8188eu/os_dep/ioctl_linux.c| 88 +-- drivers/staging/rtl8188eu/os_dep/os_intfs.c | 10 +-- .../staging/rtl8188eu/os_dep/rtw_android.c| 6 +- drivers/staging/rtl8188eu/os_dep/xmit_linux.c | 2 +- 6 files changed, 58 insertions(+), 58 deletions(-) diff --git a/drivers/staging/rtl8188eu/core/rtw_debug.c b/drivers/staging/rtl8188eu/core/rtw_debug.c index fcc8bd1011e1..3c0d20cb9c6a 100644 --- a/drivers/staging/rtl8188eu/core/rtw_debug.c +++ b/drivers/staging/rtl8188eu/core/rtw_debug.c @@ -33,7 +33,7 @@ int proc_set_write_reg(struct file *file, const char __user *buffer, unsigned long count, void *data) { struct net_device *dev = data; - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); char tmp[32]; u32 addr, val, len; @@ -75,7 +75,7 @@ int proc_get_read_reg(char *page, char **start, int *eof, void *data) { struct net_device *dev = data; - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); int len = 0; @@ -135,7 +135,7 @@ int proc_get_adapter_state(char *page, char **start, int *eof, void *data) { struct net_device *dev = data; - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); int len = 0; len += scnprintf(page + len, count - len, "bSurpriseRemoved=%d, bDriverStopped=%d\n", @@ -150,7 +150,7 @@ int proc_get_best_channel(char *page, char **start, int *eof, void *data) { struct net_device *dev = data; - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); struct mlme_ext_priv *pmlmeext = >mlmeextpriv; int len = 0; u32 i, best_channel_24G = 1, index_24G = 0; diff --git a/drivers/staging/rtl8188eu/core/rtw_pwrctrl.c b/drivers/staging/rtl8188eu/core/rtw_pwrctrl.c index 39ca97411fd5..f74753c37a29 100644 --- a/drivers/staging/rtl8188eu/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8188eu/core/rtw_pwrctrl.c @@ -84,7 +84,7 @@ static int rtw_hw_resume(struct adapter *padapter) pwrpriv->bips_processing = true; rtw_reset_drv_sw(padapter); - if (ips_netdrv_open((struct adapter *)rtw_netdev_priv(pnetdev)) != _SUCCESS) { + if (ips_netdrv_open(rtw_netdev_priv(pnetdev)) != _SUCCESS) { mutex_unlock(>mutex_lock); goto error_exit; } diff --git a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c index 2e83d24fcb09..13f12edd81cd 100644 --- a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c +++ b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c @@ -310,7 +310,7 @@ static char *translate_scan(struct adapter *padapter, static int wpa_set_auth_algs(struct net_device *dev, u32 value) { - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); int ret = 0; if ((value & AUTH_ALG_SHARED_KEY) && (value & AUTH_ALG_OPEN_SYSTEM)) { @@ -344,7 +344,7 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, int ret = 0; u32 wep_key_idx, wep_key_len, wep_total_len; struct ndis_802_11_wep *pwep = NULL; - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); struct mlme_priv*pmlmepriv = >mlmepriv; struct security_priv *psecuritypriv = >securitypriv; @@ -616,7 +616,7 @@ static int rtw_wx_get_name(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); u32 ht_ielen = 0; char *p; u8 ht_cap = false; @@ -668,7 +668,7 @@ static int rtw_wx_get_freq(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); + struct adapter *padapter = rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = >mlmepriv; struct wlan_bssid_ex *pcur_bss = >cur_network.network; @@ -689,7 +689,7 @@ static int rtw_wx_get_freq(struct net_device
Reply=
Hello, My name is Ms. Reem Ebrahim Al-Hashimi, I am the "Minister of state and Petroleum" also "Minister of State for International Cooperation" in UAE. I write to you on behalf of my other "three (3) colleagues" who has approved me to solicit for your "partnership in claiming of {us$90=Million}" from a Financial Home in Cambodia on their behalf and for our "Mutual Benefits". The Fund {us$90=Million} is our "outstanding share from the Over-invoiced" Oil/Gas deal with Cambodian/Vietnam Government within 2013/2014, however, We don't want our government to know about the fund. If this proposal interests you, let me know, by sending me an email and I will send to you detailed information on how this business would be successfully transacted. Be informed that nobody knows about the secret of this fund except us, and we know how to carry out the entire transaction. So I am compelled to ask, that you will stand on our behalf and receive this fund into any account that is solely controlled by you. We will compensate you with 30% of the total amount involved as gratification for being our partner in this transaction. Reply to my private email as stated: reemal-hash...@yandex.com Regards, Ms. Reem Ebrahim Al-Hashimi. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel