nfp: allow apps to request larger MTU on control vNIC
Some apps may want to have higher MTU on the control vNIC/queue. Allow them to set the requested MTU at init time. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
28264eb227
commit
9bbdd41b8a
|
@ -40,6 +40,8 @@
|
|||
|
||||
#include "nfp_net_repr.h"
|
||||
|
||||
#define NFP_APP_CTRL_MTU_MAX U32_MAX
|
||||
|
||||
struct bpf_prog;
|
||||
struct net_device;
|
||||
struct netdev_bpf;
|
||||
|
@ -178,6 +180,7 @@ struct nfp_app_type {
|
|||
* @ctrl: pointer to ctrl vNIC struct
|
||||
* @reprs: array of pointers to representors
|
||||
* @type: pointer to const application ops and info
|
||||
* @ctrl_mtu: MTU to set on the control vNIC (set in .init())
|
||||
* @priv: app-specific priv data
|
||||
*/
|
||||
struct nfp_app {
|
||||
|
@ -189,6 +192,7 @@ struct nfp_app {
|
|||
struct nfp_reprs __rcu *reprs[NFP_REPR_TYPE_MAX + 1];
|
||||
|
||||
const struct nfp_app_type *type;
|
||||
unsigned int ctrl_mtu;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
|
|
|
@ -3877,10 +3877,20 @@ int nfp_net_init(struct nfp_net *nn)
|
|||
return err;
|
||||
|
||||
/* Set default MTU and Freelist buffer size */
|
||||
if (nn->max_mtu < NFP_NET_DEFAULT_MTU)
|
||||
if (!nfp_net_is_data_vnic(nn) && nn->app->ctrl_mtu) {
|
||||
if (nn->app->ctrl_mtu <= nn->max_mtu) {
|
||||
nn->dp.mtu = nn->app->ctrl_mtu;
|
||||
} else {
|
||||
if (nn->app->ctrl_mtu != NFP_APP_CTRL_MTU_MAX)
|
||||
nn_warn(nn, "app requested MTU above max supported %u > %u\n",
|
||||
nn->app->ctrl_mtu, nn->max_mtu);
|
||||
nn->dp.mtu = nn->max_mtu;
|
||||
else
|
||||
}
|
||||
} else if (nn->max_mtu < NFP_NET_DEFAULT_MTU) {
|
||||
nn->dp.mtu = nn->max_mtu;
|
||||
} else {
|
||||
nn->dp.mtu = NFP_NET_DEFAULT_MTU;
|
||||
}
|
||||
nn->dp.fl_bufsz = nfp_net_calc_fl_bufsz(&nn->dp);
|
||||
|
||||
if (nfp_app_ctrl_uses_data_vnics(nn->app))
|
||||
|
|
Loading…
Reference in New Issue