* [PATCH v2 net-next 0/5] ionic bits and bytes
@ 2020-03-16 19:31 Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 1/5] ionic: stop devlink warn on mgmt device Shannon Nelson
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
These are a few little updates to the ionic driver while we are in between
other feature work. While these are mostly Fixes, they are almost all low
priority and needn't be promoted to net. The one higher need is patch 1,
but it is fixing something that hasn't made it out of net-next yet.
Shannon Nelson (5):
ionic: stop devlink warn on mgmt device
ionic: deinit rss only if selected
ionic: remove adminq napi instance
ionic: return error for unknown xcvr type
ionic: add decode for IONIC_RC_ENOSUPP
v2: add Fixes tags to patches 1-4, and a little
description for patch 5
.../net/ethernet/pensando/ionic/ionic_devlink.c | 9 +++++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 14 +++++++++++++-
drivers/net/ethernet/pensando/ionic/ionic_lif.c | 4 +++-
drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 +++
4 files changed, 26 insertions(+), 4 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 net-next 1/5] ionic: stop devlink warn on mgmt device
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
@ 2020-03-16 19:31 ` Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 2/5] ionic: deinit rss only if selected Shannon Nelson
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
If we don't set a port type, the devlink code will eventually
print a WARN in the kernel log. Because the mgmt device is
not really a useful port, don't register it as a devlink port.
Fixes: b3f064e9746d ("ionic: add support for device id 0x1004")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
---
drivers/net/ethernet/pensando/ionic/ionic_devlink.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c
index ed14164468a1..273c889faaad 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c
@@ -77,12 +77,16 @@ int ionic_devlink_register(struct ionic *ionic)
return err;
}
+ /* don't register the mgmt_nic as a port */
+ if (ionic->is_mgmt_nic)
+ return 0;
+
devlink_port_attrs_set(&ionic->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
0, false, 0, NULL, 0);
err = devlink_port_register(dl, &ionic->dl_port, 0);
if (err)
dev_err(ionic->dev, "devlink_port_register failed: %d\n", err);
- else if (!ionic->is_mgmt_nic)
+ else
devlink_port_type_eth_set(&ionic->dl_port,
ionic->master_lif->netdev);
@@ -93,6 +97,7 @@ void ionic_devlink_unregister(struct ionic *ionic)
{
struct devlink *dl = priv_to_devlink(ionic);
- devlink_port_unregister(&ionic->dl_port);
+ if (ionic->dl_port.registered)
+ devlink_port_unregister(&ionic->dl_port);
devlink_unregister(dl);
}
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 net-next 2/5] ionic: deinit rss only if selected
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 1/5] ionic: stop devlink warn on mgmt device Shannon Nelson
@ 2020-03-16 19:31 ` Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 3/5] ionic: remove adminq napi instance Shannon Nelson
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
Don't bother de-initing RSS if it wasn't selected.
Fixes: aa3198819bea ("ionic: Add RSS support")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
---
drivers/net/ethernet/pensando/ionic/ionic_lif.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
index b903016193df..19fd7cc36f28 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
@@ -2066,7 +2066,8 @@ static void ionic_lif_deinit(struct ionic_lif *lif)
clear_bit(IONIC_LIF_F_INITED, lif->state);
ionic_rx_filters_deinit(lif);
- ionic_lif_rss_deinit(lif);
+ if (lif->netdev->features & NETIF_F_RXHASH)
+ ionic_lif_rss_deinit(lif);
napi_disable(&lif->adminqcq->napi);
ionic_lif_qcq_deinit(lif, lif->notifyqcq);
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 net-next 3/5] ionic: remove adminq napi instance
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 1/5] ionic: stop devlink warn on mgmt device Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 2/5] ionic: deinit rss only if selected Shannon Nelson
@ 2020-03-16 19:31 ` Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 5/5] ionic: add decode for IONIC_RC_ENOSUPP Shannon Nelson
4 siblings, 0 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
Remove the adminq's napi struct when tearing down
the adminq.
Fixes: 1d062b7b6f64 ("ionic: Add basic adminq support")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
---
drivers/net/ethernet/pensando/ionic/ionic_lif.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
index 19fd7cc36f28..12e3823b0bc1 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
@@ -2070,6 +2070,7 @@ static void ionic_lif_deinit(struct ionic_lif *lif)
ionic_lif_rss_deinit(lif);
napi_disable(&lif->adminqcq->napi);
+ netif_napi_del(&lif->adminqcq->napi);
ionic_lif_qcq_deinit(lif, lif->notifyqcq);
ionic_lif_qcq_deinit(lif, lif->adminqcq);
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
` (2 preceding siblings ...)
2020-03-16 19:31 ` [PATCH v2 net-next 3/5] ionic: remove adminq napi instance Shannon Nelson
@ 2020-03-16 19:31 ` Shannon Nelson
2020-03-16 22:01 ` Jakub Kicinski
2020-03-16 19:31 ` [PATCH v2 net-next 5/5] ionic: add decode for IONIC_RC_ENOSUPP Shannon Nelson
4 siblings, 1 reply; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
If we don't recognize the transceiver type, return an error
so that ethtool doesn't try dumping bogus eeprom contents.
Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
---
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
index a233716eac29..3f92f301a020 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
@@ -694,7 +694,7 @@ static int ionic_get_module_info(struct net_device *netdev,
default:
netdev_info(netdev, "unknown xcvr type 0x%02x\n",
xcvr->sprom[0]);
- break;
+ return -EINVAL;
}
return 0;
@@ -714,7 +714,19 @@ static int ionic_get_module_eeprom(struct net_device *netdev,
/* The NIC keeps the module prom up-to-date in the DMA space
* so we can simply copy the module bytes into the data buffer.
*/
+
xcvr = &idev->port_info->status.xcvr;
+ switch (xcvr->sprom[0]) {
+ case 0x03: /* SFP */
+ case 0x0D: /* QSFP */
+ case 0x11: /* QSFP28 */
+ break;
+ default:
+ netdev_info(netdev, "unknown xcvr type 0x%02x\n",
+ xcvr->sprom[0]);
+ return -EINVAL;
+ }
+
len = min_t(u32, sizeof(xcvr->sprom), ee->len);
do {
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 net-next 5/5] ionic: add decode for IONIC_RC_ENOSUPP
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
` (3 preceding siblings ...)
2020-03-16 19:31 ` [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type Shannon Nelson
@ 2020-03-16 19:31 ` Shannon Nelson
4 siblings, 0 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 19:31 UTC (permalink / raw)
To: netdev, davem; +Cc: Shannon Nelson
Add decoding for a new firmware error code.
Signed-off-by: Shannon Nelson <snelson@pensando.io>
---
drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_main.c b/drivers/net/ethernet/pensando/ionic/ionic_main.c
index e4a76e66f542..c5e3d7639f7e 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_main.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_main.c
@@ -58,6 +58,8 @@ static const char *ionic_error_to_str(enum ionic_status_code code)
return "IONIC_RC_BAD_ADDR";
case IONIC_RC_DEV_CMD:
return "IONIC_RC_DEV_CMD";
+ case IONIC_RC_ENOSUPP:
+ return "IONIC_RC_ENOSUPP";
case IONIC_RC_ERROR:
return "IONIC_RC_ERROR";
case IONIC_RC_ERDMA:
@@ -76,6 +78,7 @@ static int ionic_error_to_errno(enum ionic_status_code code)
case IONIC_RC_EQTYPE:
case IONIC_RC_EQID:
case IONIC_RC_EINVAL:
+ case IONIC_RC_ENOSUPP:
return -EINVAL;
case IONIC_RC_EPERM:
return -EPERM;
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type
2020-03-16 19:31 ` [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type Shannon Nelson
@ 2020-03-16 22:01 ` Jakub Kicinski
2020-03-16 23:30 ` Shannon Nelson
0 siblings, 1 reply; 8+ messages in thread
From: Jakub Kicinski @ 2020-03-16 22:01 UTC (permalink / raw)
To: Shannon Nelson; +Cc: netdev, davem, Andrew Lunn, Russell King
On Mon, 16 Mar 2020 12:31:33 -0700 Shannon Nelson wrote:
> If we don't recognize the transceiver type, return an error
> so that ethtool doesn't try dumping bogus eeprom contents.
>
> Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support")
> Signed-off-by: Shannon Nelson <snelson@pensando.io>
> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
> index a233716eac29..3f92f301a020 100644
> --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
> +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
> @@ -694,7 +694,7 @@ static int ionic_get_module_info(struct net_device *netdev,
> default:
> netdev_info(netdev, "unknown xcvr type 0x%02x\n",
> xcvr->sprom[0]);
> - break;
> + return -EINVAL;
> }
>
> return 0;
> @@ -714,7 +714,19 @@ static int ionic_get_module_eeprom(struct net_device *netdev,
> /* The NIC keeps the module prom up-to-date in the DMA space
> * so we can simply copy the module bytes into the data buffer.
> */
> +
> xcvr = &idev->port_info->status.xcvr;
> + switch (xcvr->sprom[0]) {
> + case 0x03: /* SFP */
> + case 0x0D: /* QSFP */
> + case 0x11: /* QSFP28 */
Please use defines from sfp.h
> + break;
> + default:
> + netdev_info(netdev, "unknown xcvr type 0x%02x\n",
> + xcvr->sprom[0]);
> + return -EINVAL;
Isn't there _some_ amount of eeprom that we could always return?
> + }
> +
> len = min_t(u32, sizeof(xcvr->sprom), ee->len);
>
> do {
The pluggable module eeprom stuff really calls for some common infra :(
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type
2020-03-16 22:01 ` Jakub Kicinski
@ 2020-03-16 23:30 ` Shannon Nelson
0 siblings, 0 replies; 8+ messages in thread
From: Shannon Nelson @ 2020-03-16 23:30 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: netdev, davem, Andrew Lunn, Russell King
On 3/16/20 3:01 PM, Jakub Kicinski wrote:
> On Mon, 16 Mar 2020 12:31:33 -0700 Shannon Nelson wrote:
>> If we don't recognize the transceiver type, return an error
>> so that ethtool doesn't try dumping bogus eeprom contents.
>>
>> Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support")
>> Signed-off-by: Shannon Nelson <snelson@pensando.io>
>> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
>> index a233716eac29..3f92f301a020 100644
>> --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
>> +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c
>> @@ -694,7 +694,7 @@ static int ionic_get_module_info(struct net_device *netdev,
>> default:
>> netdev_info(netdev, "unknown xcvr type 0x%02x\n",
>> xcvr->sprom[0]);
>> - break;
>> + return -EINVAL;
>> }
>>
>> return 0;
>> @@ -714,7 +714,19 @@ static int ionic_get_module_eeprom(struct net_device *netdev,
>> /* The NIC keeps the module prom up-to-date in the DMA space
>> * so we can simply copy the module bytes into the data buffer.
>> */
>> +
>> xcvr = &idev->port_info->status.xcvr;
>> + switch (xcvr->sprom[0]) {
>> + case 0x03: /* SFP */
>> + case 0x0D: /* QSFP */
>> + case 0x11: /* QSFP28 */
> Please use defines from sfp.h
Yep, thanks, it's nice we have those now.
>
>> + break;
>> + default:
>> + netdev_info(netdev, "unknown xcvr type 0x%02x\n",
>> + xcvr->sprom[0]);
>> + return -EINVAL;
> Isn't there _some_ amount of eeprom that we could always return?
It probably would be useful to return the first page (256 bytes) to help
the reader figure out what's up with the data.
This only gets called it ionic_get_module_info() returns with no error,
so possibly that function could set type to 0 or -1 and len to 256, more
or less as default values for getting something printed.
I'll play with that a little.
Thanks,
sln
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-16 23:30 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-16 19:31 [PATCH v2 net-next 0/5] ionic bits and bytes Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 1/5] ionic: stop devlink warn on mgmt device Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 2/5] ionic: deinit rss only if selected Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 3/5] ionic: remove adminq napi instance Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 4/5] ionic: return error for unknown xcvr type Shannon Nelson
2020-03-16 22:01 ` Jakub Kicinski
2020-03-16 23:30 ` Shannon Nelson
2020-03-16 19:31 ` [PATCH v2 net-next 5/5] ionic: add decode for IONIC_RC_ENOSUPP Shannon Nelson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).