Commit 3b195843 authored by Joe Perches's avatar Joe Perches Committed by David S. Miller

i40e: Fix i40e_print_features() VEB mode output

Commit 7fd89545 ("i40e: remove BUG_ON from feature string building")
added defective output when I40E_FLAG_VEB_MODE_ENABLED was set in
function i40e_print_features.

Fix it.

Miscellanea:

- Remove unnecessary string variable
- Add space before not after fixed strings
- Use kmalloc not kzalloc
- Don't initialize i to 0, use result of first snprintf
Reported-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 68e14a48
...@@ -10290,52 +10290,48 @@ static int i40e_setup_pf_filter_control(struct i40e_pf *pf) ...@@ -10290,52 +10290,48 @@ static int i40e_setup_pf_filter_control(struct i40e_pf *pf)
static void i40e_print_features(struct i40e_pf *pf) static void i40e_print_features(struct i40e_pf *pf)
{ {
struct i40e_hw *hw = &pf->hw; struct i40e_hw *hw = &pf->hw;
char *buf, *string; char *buf;
int i = 0; int i;
string = kzalloc(INFO_STRING_LEN, GFP_KERNEL); buf = kmalloc(INFO_STRING_LEN, GFP_KERNEL);
if (!string) { if (!buf)
dev_err(&pf->pdev->dev, "Features string allocation failed\n");
return; return;
}
buf = string;
i += snprintf(&buf[i], REMAIN(i), "Features: PF-id[%d] ", hw->pf_id); i = snprintf(buf, INFO_STRING_LEN, "Features: PF-id[%d]", hw->pf_id);
#ifdef CONFIG_PCI_IOV #ifdef CONFIG_PCI_IOV
i += snprintf(&buf[i], REMAIN(i), "VFs: %d ", pf->num_req_vfs); i += snprintf(&buf[i], REMAIN(i), " VFs: %d", pf->num_req_vfs);
#endif #endif
i += snprintf(&buf[i], REMAIN(i), "VSIs: %d QP: %d RX: %s ", i += snprintf(&buf[i], REMAIN(i), " VSIs: %d QP: %d RX: %s",
pf->hw.func_caps.num_vsis, pf->hw.func_caps.num_vsis,
pf->vsi[pf->lan_vsi]->num_queue_pairs, pf->vsi[pf->lan_vsi]->num_queue_pairs,
pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : "1BUF"); pf->flags & I40E_FLAG_RX_PS_ENABLED ? "PS" : "1BUF");
if (pf->flags & I40E_FLAG_RSS_ENABLED) if (pf->flags & I40E_FLAG_RSS_ENABLED)
i += snprintf(&buf[i], REMAIN(i), "RSS "); i += snprintf(&buf[i], REMAIN(i), " RSS");
if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) if (pf->flags & I40E_FLAG_FD_ATR_ENABLED)
i += snprintf(&buf[i], REMAIN(i), "FD_ATR "); i += snprintf(&buf[i], REMAIN(i), " FD_ATR");
if (pf->flags & I40E_FLAG_FD_SB_ENABLED) { if (pf->flags & I40E_FLAG_FD_SB_ENABLED) {
i += snprintf(&buf[i], REMAIN(i), "FD_SB "); i += snprintf(&buf[i], REMAIN(i), " FD_SB");
i += snprintf(&buf[i], REMAIN(i), "NTUPLE "); i += snprintf(&buf[i], REMAIN(i), " NTUPLE");
} }
if (pf->flags & I40E_FLAG_DCB_CAPABLE) if (pf->flags & I40E_FLAG_DCB_CAPABLE)
i += snprintf(&buf[i], REMAIN(i), "DCB "); i += snprintf(&buf[i], REMAIN(i), " DCB");
#if IS_ENABLED(CONFIG_VXLAN) #if IS_ENABLED(CONFIG_VXLAN)
i += snprintf(&buf[i], REMAIN(i), "VxLAN "); i += snprintf(&buf[i], REMAIN(i), " VxLAN");
#endif #endif
if (pf->flags & I40E_FLAG_PTP) if (pf->flags & I40E_FLAG_PTP)
i += snprintf(&buf[i], REMAIN(i), "PTP "); i += snprintf(&buf[i], REMAIN(i), " PTP");
#ifdef I40E_FCOE #ifdef I40E_FCOE
if (pf->flags & I40E_FLAG_FCOE_ENABLED) if (pf->flags & I40E_FLAG_FCOE_ENABLED)
i += snprintf(&buf[i], REMAIN(i), "FCOE "); i += snprintf(&buf[i], REMAIN(i), " FCOE");
#endif #endif
if (pf->flags & I40E_FLAG_VEB_MODE_ENABLED) if (pf->flags & I40E_FLAG_VEB_MODE_ENABLED)
i += snprintf(&buf[i], REMAIN(i), "VEPA "); i += snprintf(&buf[i], REMAIN(i), " VEB");
else else
buf += sprintf(buf, "VEPA "); i += snprintf(&buf[i], REMAIN(i), " VEPA");
dev_info(&pf->pdev->dev, "%s\n", string); dev_info(&pf->pdev->dev, "%s\n", buf);
kfree(string); kfree(buf);
WARN_ON(i > INFO_STRING_LEN); WARN_ON(i > INFO_STRING_LEN);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment