Commit a5c06f47 authored by Michal Wasiak's avatar Michal Wasiak Committed by Adam Wujek

RTU: rename rtu_port_shmem into rtu_shmem_p

rtu_port_shmem has nothing to do with ports.
Use rtu_shmem_p instead of rtu_shmem to make search of rtu_shmem_p easier.
Signed-off-by: 's avatarMichal Wasiak <michal.wasiak@gmail.com>
parent d8b9366e
......@@ -40,7 +40,7 @@
static struct minipc_ch *rtud_ch;
struct wrs_shm_head *rtu_port_shmem;
struct wrs_shm_head *rtu_shmem_p;
static struct rtu_vlan_table_entry vlan_tab_local[NUM_VLANS];
static struct rtu_filtering_entry rtu_htab_local[RTU_BUCKETS * HTAB_ENTRIES];
static struct rtu_mirror_info mirror_local;
......@@ -277,19 +277,19 @@ int read_vlans(void)
struct rtu_vlan_table_entry *vlan_tab_shm;
struct rtu_shmem_header *rtu_hdr;
rtu_hdr = (void *)rtu_port_shmem + rtu_port_shmem->data_off;
vlan_tab_shm = wrs_shm_follow(rtu_port_shmem, rtu_hdr->vlans);
rtu_hdr = (void *)rtu_shmem_p + rtu_shmem_p->data_off;
vlan_tab_shm = wrs_shm_follow(rtu_shmem_p, rtu_hdr->vlans);
if (!vlan_tab_shm)
return -2;
/* read data, with the sequential lock to have all data consistent */
while (1) {
ii = wrs_shm_seqbegin(rtu_port_shmem);
ii = wrs_shm_seqbegin(rtu_shmem_p);
memcpy(&vlan_tab_local, vlan_tab_shm,
NUM_VLANS * sizeof(*vlan_tab_shm));
retries++;
if (retries > 100)
return -1;
if (!wrs_shm_seqretry(rtu_port_shmem, ii))
if (!wrs_shm_seqretry(rtu_shmem_p, ii))
break; /* consistent read */
usleep(1000);
}
......@@ -306,20 +306,20 @@ int read_htab(int *read_entries)
struct rtu_shmem_header *rtu_hdr;
struct rtu_filtering_entry *empty;
rtu_hdr = (void *)rtu_port_shmem + rtu_port_shmem->data_off;
htab_shm = wrs_shm_follow(rtu_port_shmem, rtu_hdr->filters);
rtu_hdr = (void *)rtu_shmem_p + rtu_shmem_p->data_off;
htab_shm = wrs_shm_follow(rtu_shmem_p, rtu_hdr->filters);
if (!htab_shm)
return -2;
/* Read data, with the sequential lock to have all data consistent */
while (1) {
ii = wrs_shm_seqbegin(rtu_port_shmem);
ii = wrs_shm_seqbegin(rtu_shmem_p);
memcpy(&rtu_htab_local, htab_shm,
RTU_BUCKETS * HTAB_ENTRIES * sizeof(*htab_shm));
retries++;
if (retries > 100)
return -1;
if (!wrs_shm_seqretry(rtu_port_shmem, ii))
if (!wrs_shm_seqretry(rtu_shmem_p, ii))
break; /* consistent read */
usleep(1000);
}
......@@ -346,18 +346,18 @@ int read_mirror(void)
struct rtu_mirror_info *mirror_shm;
struct rtu_shmem_header *rtu_hdr;
rtu_hdr = (void *)rtu_port_shmem + rtu_port_shmem->data_off;
mirror_shm = wrs_shm_follow(rtu_port_shmem, rtu_hdr->mirror);
rtu_hdr = (void *)rtu_shmem_p + rtu_shmem_p->data_off;
mirror_shm = wrs_shm_follow(rtu_shmem_p, rtu_hdr->mirror);
if (!mirror_shm)
return -2;
/* read data, with the sequential lock to have all data consistent */
while (1) {
ii = wrs_shm_seqbegin(rtu_port_shmem);
ii = wrs_shm_seqbegin(rtu_shmem_p);
memcpy(&mirror_local, mirror_shm, sizeof(*mirror_shm));
retries++;
if (retries > 100)
return -1;
if (!wrs_shm_seqretry(rtu_port_shmem, ii))
if (!wrs_shm_seqretry(rtu_shmem_p, ii))
break; /* consistent read */
usleep(1000);
}
......@@ -370,7 +370,7 @@ int open_rtu_shm(void)
int n_wait = 0;
int ret;
/* open rtu shm */
while ((ret = wrs_shm_get_and_check(wrs_shm_rtu, &rtu_port_shmem)) != 0) {
while ((ret = wrs_shm_get_and_check(wrs_shm_rtu, &rtu_shmem_p)) != 0) {
n_wait++;
if (n_wait > 10) {
if (ret == WRS_SHM_OPEN_FAILED) {
......@@ -392,9 +392,9 @@ int open_rtu_shm(void)
}
/* check rtu shm version */
if (rtu_port_shmem->version != RTU_SHMEM_VERSION) {
if (rtu_shmem_p->version != RTU_SHMEM_VERSION) {
fprintf(stderr, "rtu_stat: unknown rtud's version %i "
"(known is %i)\n", rtu_port_shmem->version,
"(known is %i)\n", rtu_shmem_p->version,
RTU_SHMEM_VERSION);
return -1;
}
......
......@@ -108,7 +108,7 @@ static int read_dot_config(char *dot_config_file);
static int read_dot_config_vlans(int vlan_min, int vlan_max);
struct rtu_vlan_table_entry *vlan_tab_shm;
struct wrs_shm_head *rtu_port_shmem;
struct wrs_shm_head *rtu_shmem_p;
static inline int nextport(int i, unsigned long pmask) /* helper for for_each_port() below */
{
......@@ -197,7 +197,7 @@ int main(int argc, char *argv[])
n_wait = 0;
/* open rtu shm */
while ((ret = wrs_shm_get_and_check(wrs_shm_rtu, &rtu_port_shmem)) != 0) {
while ((ret = wrs_shm_get_and_check(wrs_shm_rtu, &rtu_shmem_p)) != 0) {
n_wait++;
if (n_wait > 10) {
if (ret == WRS_SHM_OPEN_FAILED) {
......@@ -216,17 +216,17 @@ int main(int argc, char *argv[])
}
/* check rtu shm version */
if (rtu_port_shmem->version != RTU_SHMEM_VERSION) {
if (rtu_shmem_p->version != RTU_SHMEM_VERSION) {
pr_error("unknown version %i (known is %i)\n",
rtu_port_shmem->version, RTU_SHMEM_VERSION);
rtu_shmem_p->version, RTU_SHMEM_VERSION);
exit(1);
}
/* get vlans array */
rtu_hdr = (void *)rtu_port_shmem + rtu_port_shmem->data_off;
vlan_tab_shm = wrs_shm_follow(rtu_port_shmem, rtu_hdr->vlans);
rtu_hdr = (void *)rtu_shmem_p + rtu_shmem_p->data_off;
vlan_tab_shm = wrs_shm_follow(rtu_shmem_p, rtu_hdr->vlans);
if (!vlan_tab_shm) {
pr_error("cannot follow pointer to vlans in RTU's shmem\n");
......@@ -785,7 +785,7 @@ static void list_rtu_vlans(void)
/* read data, with the sequential lock to have all data consistent */
while (1) {
ii = wrs_shm_seqbegin(rtu_port_shmem);
ii = wrs_shm_seqbegin(rtu_shmem_p);
memcpy(&vlan_tab_local, vlan_tab_shm,
NUM_VLANS * sizeof(*vlan_tab_shm));
retries++;
......@@ -794,7 +794,7 @@ static void list_rtu_vlans(void)
"shmem. Use inconsistent\n");
break; /* use inconsistent data */
}
if (!wrs_shm_seqretry(rtu_port_shmem, ii))
if (!wrs_shm_seqretry(rtu_shmem_p, ii))
break; /* consistent read */
usleep(1000);
}
......@@ -978,7 +978,7 @@ static int rtu_find_vlan(struct rtu_vlan_table_entry *rtu_vlan_entry, int vid,
/* copy data no mater if it will be used later, with the sequential
* lock to have all data consistent */
while (1) {
ii = wrs_shm_seqbegin(rtu_port_shmem);
ii = wrs_shm_seqbegin(rtu_shmem_p);
memcpy(rtu_vlan_entry, &vlan_tab_shm[vid],
sizeof(*rtu_vlan_entry));
retries++;
......@@ -987,7 +987,7 @@ static int rtu_find_vlan(struct rtu_vlan_table_entry *rtu_vlan_entry, int vid,
"shmem. Use inconsistent\n");
break; /* use inconsistent data */
}
if (!wrs_shm_seqretry(rtu_port_shmem, ii))
if (!wrs_shm_seqretry(rtu_shmem_p, ii))
break; /* consistent read */
usleep(1000);
}
......
......@@ -109,7 +109,7 @@ static pthread_mutex_t fd_mutex;
/**
* \brief Pointer to shmem, user for write locking.
*/
static struct wrs_shm_head *rtu_port_shmem;
static struct wrs_shm_head *rtu_shmem_p;
static struct hw_req *tail(struct hw_req *head);
static void clean_list(struct hw_req *head);
......@@ -137,21 +137,21 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
int err;
struct rtu_shmem_header *rtu_hdr;
pr_debug("Open rtu shmem.\n");
rtu_port_shmem = wrs_shm_get(wrs_shm_rtu, "wrsw_rtud",
rtu_shmem_p = wrs_shm_get(wrs_shm_rtu, "wrsw_rtud",
WRS_SHM_WRITE | WRS_SHM_LOCKED);
if (!rtu_port_shmem) {
if (!rtu_shmem_p) {
pr_error("%s: Can't join shmem: %s\n", __func__,
strerror(errno));
return -1;
}
if (rtu_port_shmem->pidsequence == 1) {
if (rtu_shmem_p->pidsequence == 1) {
/* for first RTUd run */
pr_debug("Alloc rtu_hdr\n");
rtu_hdr = wrs_shm_alloc(rtu_port_shmem, sizeof(*rtu_hdr));
rtu_hdr = wrs_shm_alloc(rtu_shmem_p, sizeof(*rtu_hdr));
} else {
/* rtu_hdr was created at header->offset */
rtu_hdr = (void *)rtu_port_shmem + rtu_port_shmem->data_off;
rtu_hdr = (void *)rtu_shmem_p + rtu_shmem_p->data_off;
}
if (!rtu_hdr) {
pr_error("%s: Cannot allocate mem in shmem rtu_hdr\n",
......@@ -162,11 +162,11 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
if (!rtu_hdr->filters) {
/* for first RTUd run */
pr_info("Allocating a new, clean hash table\n");
rtu_htab = wrs_shm_alloc(rtu_port_shmem,
rtu_htab = wrs_shm_alloc(rtu_shmem_p,
sizeof(*rtu_htab) * HTAB_ENTRIES);
rtu_hdr->filters = (struct rtu_filtering_entry *) rtu_htab;
rtu_hdr->filters_offset =
(void *)rtu_htab - (void *)rtu_port_shmem;
(void *)rtu_htab - (void *)rtu_shmem_p;
pr_debug("Clean filtering database.\n");
clean_fd(SHM_NOT_LOCK); /* clean filtering database,
shem already locked */
......@@ -179,11 +179,11 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
if (!rtu_hdr->vlans) {
/* for first RTUd run */
pr_info("Allocating a new, clean vlan table\n");
vlan_tab = wrs_shm_alloc(rtu_port_shmem,
vlan_tab = wrs_shm_alloc(rtu_shmem_p,
sizeof(*vlan_tab) * NUM_VLANS);
rtu_hdr->vlans = vlan_tab;
rtu_hdr->vlans_offset =
(void *)vlan_tab - (void *)rtu_port_shmem;
(void *)vlan_tab - (void *)rtu_shmem_p;
pr_debug("Clean vlan database.\n");
clean_vd(SHM_NOT_LOCK); /* clean VLAN database,
shem already locked */
......@@ -196,11 +196,11 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
if (!rtu_hdr->mirror) {
/* for first RTUd run */
pr_info("Allocating a new, port mirroring config\n");
mirror_cfg = wrs_shm_alloc(rtu_port_shmem,
mirror_cfg = wrs_shm_alloc(rtu_shmem_p,
sizeof(*mirror_cfg) * NUM_MIRROR);
rtu_hdr->mirror = mirror_cfg;
rtu_hdr->mirror_offset =
(void *)mirror_cfg - (void *)rtu_port_shmem;
(void *)mirror_cfg - (void *)rtu_shmem_p;
pr_debug("Clean vlan database.\n");
clean_mc(SHM_NOT_LOCK); /* clean port mirroring config,
shem already locked */
......@@ -215,7 +215,7 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
return -1;
}
/* add version info */
rtu_port_shmem->version = RTU_SHMEM_VERSION;
rtu_shmem_p->version = RTU_SHMEM_VERSION;
pr_debug("clean aging map.\n");
rtu_read_aging_bitmap(bitmap); // clean aging registers
......@@ -231,7 +231,7 @@ int rtu_fd_init(uint16_t poly, unsigned long aging)
/* release process waiting on rtud's shm
NOTE: all data may not be populated yet */
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
return 0;
}
......@@ -287,7 +287,7 @@ int rtu_fd_create_entry(uint8_t mac[ETH_ALEN], uint16_t vid, uint32_t port_mask,
struct rtu_addr eaddr;
pthread_mutex_lock(&fd_mutex);
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
// if VLAN is registered (otherwise just ignore request)
if (!vlan_tab[vid].drop) {
......@@ -339,7 +339,7 @@ int rtu_fd_create_entry(uint8_t mac[ETH_ALEN], uint16_t vid, uint32_t port_mask,
if (n_buckets == RTU_BUCKETS) {
pr_error("Hash %03x has no buckets left.\n",
eaddr.hash);
wrs_shm_write(rtu_port_shmem,
wrs_shm_write(rtu_shmem_p,
WRS_SHM_WRITE_END);
pthread_mutex_unlock(&fd_mutex);
return -ENOMEM;
......@@ -367,7 +367,7 @@ int rtu_fd_create_entry(uint8_t mac[ETH_ALEN], uint16_t vid, uint32_t port_mask,
}
rtu_fd_commit();
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
pthread_mutex_unlock(&fd_mutex);
return ret;
}
......@@ -489,13 +489,13 @@ static inline int to_mem_addr(struct rtu_addr addr)
static void clean_fd(int lock)
{
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
memset(rtu_htab, 0, sizeof(*rtu_htab) * HTAB_ENTRIES);
rtu_clean_htab();
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
/**
......@@ -506,7 +506,7 @@ static void clean_vd(int lock)
int i;
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
rtu_clean_vlan();
for (i = 1; i < NUM_VLANS; i++) {
......@@ -524,7 +524,7 @@ static void clean_vd(int lock)
rtu_write_vlan_entry(0, &vlan_tab[0]);
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
/**
......@@ -533,7 +533,7 @@ static void clean_vd(int lock)
static void clean_mc(int lock)
{
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
mirror_cfg[0].en = 0;
mirror_cfg[0].imask = 0x0;
......@@ -543,7 +543,7 @@ static void clean_mc(int lock)
rtu_enable_mirroring(mirror_cfg[0].en);
rtu_cfg_mirroring(mirror_cfg);
if (lock & SHM_LOCK)
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
/**
......@@ -566,7 +566,7 @@ static void rtu_fd_age_update(void)
// Update 'last access time' for accessed entries
t = get_monotonic_sec();
// HTAB
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
for (i = 0; i < RTU_ENTRIES / 32; i++)
for (j = 0; j < 32; j++) {
agr_word = bitmap[i];
......@@ -594,7 +594,7 @@ static void rtu_fd_age_update(void)
rtu_htab[hash][bucket].last_access_t = t;
}
}
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
......@@ -613,7 +613,7 @@ int rtu_fd_remove_entry(uint8_t *mac, uint32_t port_mask, int type)
if (!port_mask)
pr_error("Empty port mask for MAC %s\n", mac_to_string(mac));
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
pr_debug("Looking for an entry with mask=0x%x MAC: %s type %s\n",
port_mask, mac_to_string(mac),
rtu_type_to_str(type));
......@@ -640,7 +640,7 @@ int rtu_fd_remove_entry(uint8_t *mac, uint32_t port_mask, int type)
}
/* commit changes */
rtu_fd_commit();
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
return removed_entries;
}
......@@ -650,7 +650,7 @@ void rtu_fd_clear_entries_for_port(int dest_port, int type)
int j; // bucket loop index
struct rtu_filtering_entry *ent; /* pointer to scan tables */
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
for (i = HTAB_ENTRIES; i-- > 0;) {
for (j = RTU_BUCKETS; j-- > 0;) {
......@@ -676,7 +676,7 @@ void rtu_fd_clear_entries_for_port(int dest_port, int type)
}
// commit changes
rtu_fd_commit();
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
/**
......@@ -691,7 +691,7 @@ static void rtu_fd_age_out(void)
unsigned long t; // (secs)
t = get_monotonic_sec() - aging_time;
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
// HTAB
for (i = HTAB_ENTRIES; i-- > 0;) {
......@@ -710,7 +710,7 @@ static void rtu_fd_age_out(void)
}
// commit changes
rtu_fd_commit();
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
/**
......@@ -805,7 +805,7 @@ void rtu_fd_create_vlan_entry(int vid, uint32_t port_mask, uint8_t fid,
#define rtu_rd(reg) \
_fpga_readl(FPGA_BASE_RTU + offsetof(struct RTU_WB, reg))
int port_num = RTU_PSR_N_PORTS_R(rtu_rd(PSR));
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
/****************************************************************************************/
if (port_mask == 0x0 && drop == 1)
vlan_tab[vid].port_mask = 0x0;
......@@ -818,13 +818,13 @@ void rtu_fd_create_vlan_entry(int vid, uint32_t port_mask, uint8_t fid,
vlan_tab[vid].prio = prio;
rtu_write_vlan_entry(vid, &vlan_tab[vid]);
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
void rtu_fd_write_mirror_config(int en, uint32_t imask, uint32_t emask,
uint32_t dmask)
{
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_BEGIN);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_BEGIN);
mirror_cfg[0].en = en;
/* update masks in SHM only if non-zero, or if disabling mirroring */
......@@ -838,5 +838,5 @@ void rtu_fd_write_mirror_config(int en, uint32_t imask, uint32_t emask,
rtu_enable_mirroring(0);
rtu_cfg_mirroring(mirror_cfg);
rtu_enable_mirroring(en);
wrs_shm_write(rtu_port_shmem, WRS_SHM_WRITE_END);
wrs_shm_write(rtu_shmem_p, WRS_SHM_WRITE_END);
}
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