On Mon, Jan 30, 2023 at 05:08:54PM +0900, Jaewan Kim wrote: > On Mon, Jan 30, 2023 at 2:34 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > On Mon, Jan 30, 2023 at 12:48:37AM +0900, Jaewan Kim wrote: > > > On Wed, Jan 25, 2023 at 12:55 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > > +static int parse_ftm_capa(const struct nlattr *ftm_capa, > > > > > + struct cfg80211_pmsr_capabilities *out) > > > > > +{ > > > > > + struct nlattr *tb[NL80211_PMSR_FTM_CAPA_ATTR_MAX + 1]; > > > > > + int ret = nla_parse_nested(tb, NL80211_PMSR_FTM_CAPA_ATTR_MAX, > > > > > + ftm_capa, hwsim_ftm_capa_policy, NULL); > > > > > + if (ret) { > > > > > + pr_err("mac80211_hwsim: malformed FTM capability"); > > > > > > > > dev_err()? > > > > > > Is dev_err() the printing error for device code? > > > > I am sorry, but I can not understand this question, can you rephrase it? > > I just wanted to know better about `dev_err()`, > because all existing code in this file uses `pr_err()`, > and there's no good documentation for `dev_err()`. > > Given your answer below, it seems like that `pr_err()` isn't a good > choice in this file. > Am I correct? Drivers should never be using "raw" pr_*() calls as userspace has no way of matching up a device and driver to a kernel log message. That is what the dev_*() calls provide. As you are working with a device here (it's in your call-chain somewhere), then you should use dev_*() calls. Or use the networking-specific versions of these as this is part of the network stack. But don't use raw pr_() calls please, that doesn't help anyone out. thanks, greg k-h