net/sfc: move isolated flag in adapter shared
authorAndrew Rybchenko <arybchenko@solarflare.com>
Thu, 7 Feb 2019 12:17:50 +0000 (12:17 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 7 Feb 2019 15:06:30 +0000 (16:06 +0100)
The flag is required in default RSS RETA get which does not make sense
in isolated mode.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
drivers/net/sfc/sfc.h
drivers/net/sfc/sfc_ethdev.c
drivers/net/sfc/sfc_flow.c
drivers/net/sfc/sfc_port.c
drivers/net/sfc/sfc_rx.c

index 72992d6..e8569bb 100644 (file)
@@ -131,7 +131,6 @@ struct sfc_port {
         * Flow API isolated mode overrides promisc and allmulti settings;
         * they won't be applied if isolated mode is active
         */
-       boolean_t                       isolated;
        boolean_t                       promisc;
        boolean_t                       allmulti;
 
@@ -184,6 +183,8 @@ struct sfc_adapter_shared {
 
        struct sfc_rss                  rss;
 
+       boolean_t                       isolated;
+
        struct rte_pci_addr             pci_addr;
        uint16_t                        port_id;
 
index 034229f..c6bee09 100644 (file)
@@ -357,7 +357,7 @@ sfc_dev_filter_set(struct rte_eth_dev *dev, enum sfc_dev_filter_mode mode,
        if (*toggle != enabled) {
                *toggle = enabled;
 
-               if (port->isolated) {
+               if (sfc_sa2shared(sa)->isolated) {
                        sfc_warn(sa, "isolated mode is active on the port");
                        sfc_warn(sa, "the change is to be applied on the next "
                                     "start provided that isolated mode is "
@@ -957,7 +957,7 @@ sfc_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
         * on the next port start if the user prevents
         * isolated mode from being enabled.
         */
-       if (port->isolated) {
+       if (sfc_sa2shared(sa)->isolated) {
                sfc_warn(sa, "isolated mode is active on the port");
                sfc_warn(sa, "will not set MAC address");
                goto unlock;
@@ -1027,7 +1027,7 @@ sfc_set_mc_addr_list(struct rte_eth_dev *dev, struct ether_addr *mc_addr_set,
        int rc;
        unsigned int i;
 
-       if (port->isolated) {
+       if (sfc_sa2shared(sa)->isolated) {
                sfc_err(sa, "isolated mode is active on the port");
                sfc_err(sa, "will not set multicast address list");
                return -ENOTSUP;
@@ -1451,11 +1451,10 @@ sfc_dev_rss_hash_update(struct rte_eth_dev *dev,
 {
        struct sfc_adapter *sa = dev->data->dev_private;
        struct sfc_rss *rss = &sfc_sa2shared(sa)->rss;
-       struct sfc_port *port = &sa->port;
        unsigned int efx_hash_types;
        int rc = 0;
 
-       if (port->isolated)
+       if (sfc_sa2shared(sa)->isolated)
                return -ENOTSUP;
 
        if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE) {
@@ -1529,10 +1528,9 @@ sfc_dev_rss_reta_query(struct rte_eth_dev *dev,
        struct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev);
        struct sfc_adapter *sa = dev->data->dev_private;
        struct sfc_rss *rss = &sas->rss;
-       struct sfc_port *port = &sa->port;
        int entry;
 
-       if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE || port->isolated)
+       if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE || sas->isolated)
                return -ENOTSUP;
 
        if (rss->channels == 0)
@@ -1563,13 +1561,12 @@ sfc_dev_rss_reta_update(struct rte_eth_dev *dev,
 {
        struct sfc_adapter *sa = dev->data->dev_private;
        struct sfc_rss *rss = &sfc_sa2shared(sa)->rss;
-       struct sfc_port *port = &sa->port;
        unsigned int *rss_tbl_new;
        uint16_t entry;
        int rc = 0;
 
 
-       if (port->isolated)
+       if (sfc_sa2shared(sa)->isolated)
                return -ENOTSUP;
 
        if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE) {
index 201c6cd..01a81ea 100644 (file)
@@ -2425,7 +2425,6 @@ sfc_flow_isolate(struct rte_eth_dev *dev, int enable,
                 struct rte_flow_error *error)
 {
        struct sfc_adapter *sa = dev->data->dev_private;
-       struct sfc_port *port = &sa->port;
        int ret = 0;
 
        sfc_adapter_lock(sa);
@@ -2435,7 +2434,7 @@ sfc_flow_isolate(struct rte_eth_dev *dev, int enable,
                                   NULL, "please close the port first");
                ret = -rte_errno;
        } else {
-               port->isolated = (enable) ? B_TRUE : B_FALSE;
+               sfc_sa2shared(sa)->isolated = (enable) ? B_TRUE : B_FALSE;
        }
        sfc_adapter_unlock(sa);
 
index 5eb4b3a..1709dba 100644 (file)
@@ -226,7 +226,7 @@ sfc_port_start(struct sfc_adapter *sa)
        if (rc != 0)
                goto fail_mac_pdu_set;
 
-       if (!port->isolated) {
+       if (!sfc_sa2shared(sa)->isolated) {
                struct ether_addr *addr = &port->default_mac_addr;
 
                sfc_log_init(sa, "set MAC address");
index 3b4b65f..cd8abc8 100644 (file)
@@ -669,7 +669,6 @@ retry:
 int
 sfc_rx_qstart(struct sfc_adapter *sa, unsigned int sw_index)
 {
-       struct sfc_port *port = &sa->port;
        struct sfc_rxq_info *rxq_info;
        struct sfc_rxq *rxq;
        struct sfc_evq *evq;
@@ -731,7 +730,7 @@ sfc_rx_qstart(struct sfc_adapter *sa, unsigned int sw_index)
 
        rxq_info->state |= SFC_RXQ_STARTED;
 
-       if ((sw_index == 0) && !port->isolated) {
+       if (sw_index == 0 && !sfc_sa2shared(sa)->isolated) {
                rc = sfc_rx_default_rxq_set_filter(sa, rxq);
                if (rc != 0)
                        goto fail_mac_filter_default_rxq_set;