Each source file (.c, not .h) is compiled separately. In each of these compilations, the declaration of dsm_config with an initializer (the = { values… } portion) creates a definition of dsm_config. Thus, the whole program has multiple definitions.
Generally, header files should only declare objects and not define them. To do this, remove the initializer in the header file, leaving just the declaration with no initializer. In one source file, define dsm_config by repeating the declaration with the initializer.